Avatar billede myn Nybegynder
06. august 2010 - 21:35 Der er 10 kommentarer og
1 løsning

Problemer med INSERT INTO til en MySql database...

Jeg er bestemt ikke programmør og måske derfor mit problem.  Min webside har jeg netop flyttet til et andet hotel, og herefter virker mine php sider ikke mere, vedr. indsættelse af tilmeldingsoplysninger. Man taster i en HTML side og herefter tager en php side oplysningerne ind i databasen:

<?php
include("sqllogin.php");
$dato=date("Y-n-j");
$sql="INSERT INTO tilmelding2010 (navn,email,deltager,overnatte,gaester,besked,Tlf,Antal,dato)VALUES ('$navn','$email','$deltager','$overnatte','$gaester','$besked','$Tlf','$Antal','$dato')";
$result = mysql_query($sql);
mail("webmaster@cqcq.dk","Ny melding til julefrokost fra ".$navn,$deltager,"From: ".$email);
?>
<html>
<title>Opdater</title>
<body bgcolor="#008080">
Tak for det, du har nu registreret dig.
<p><a href="/index.html">Klik her for at komme tilbage.</a></p>
</body>
</html>

Nogen der kan se hvad der er galt?
07. august 2010 - 08:09 #1
Siger du at siden virker saaledes at den korrekt sender emailen ud med bekraeftelse af tilmelding men at tilmeldingsoplysningerne ikke bliver indsat i mysql tabellen "tilmelding2010"?  I saa fald kunne du jo begynde med at lade mysql fortaelle hvilke problemer den ser, altsaa: $result = mysql_query($sql) or die(mysql_error());
Avatar billede danco Nybegynder
07. august 2010 - 12:25 #2
Desuden kan du forsøge at printe din SQL streng på skærmen og derefter se om den er korrekt.

Som en lille sidebemærkning undre jeg mig over linjen:

$result = mysql_query($sql);

For det første bruger du ikke $result til noget, og for det andet så returnere en INSERT query jo ingenting.
brug derfor

mysql_query($sql);

Evt. kan du teste på om der er indsat på følgende måde

if(mysql_query($sql) or die(mysql_error()))
  {
  echo 'Data blev indsat korrekt';
  }
Avatar billede myn Nybegynder
08. august 2010 - 18:58 #3
Tak for kommentarer begge to. Desværre er der ingen af jeres svar der ændrer noget. Svarene er at data blev indsat og ingen problemer, men der er fortsat ingen data i databasen - dog er der en tom record med dato (det var der også før) - så PHPen har haft fat i databasen.  Mit næste gæt må være at der er HTMLen der danner data, der er noget galt med.
Eller at udbyder har en eller anden hindring for at undgå spam data. Men så burde jeres forslag jo have vist det. 
I er meget velkomne til at kommentere yderligere....

Mvh
MYN
08. august 2010 - 21:30 #4
Lad mig lige checke at jeg forstaar dig korrekt.  Siger du at naar du sender din mysql INSERT INTO tilmelding2010 query saa bliver der tilfoejet en ny record til tabellen tilmelding2010 hvor dato-feltet bliver korrekt indsat men felterne navn, email, deltager o.s.v. er tomme?  Og bruger du 'or die(mysql_error() og giver det dig ingen fejlmelding?

Hvis det er korrekt saa har mit forslag (i al beskedenhed) hjulpet idet du har snaevret problemet ind.  Det maa vaere variablerne $navn, $email, $deltager o.s.v. der er tomme!  (Eller mig der er tosset.)  Det kodeudsnit du gav viser ikke hvor vaerdierne i disse variabler kommer fra.  Jeg ville foreslaa at du for testformaal indsaetter foelgende kode lige efter include ("sqllogin.php"):

echo "navn= " . $navn . ", email= " . $email . ", deltager= " . $deltager ..... og se hvad vaerdierne er.  Hvis de, som jeg forventer, er tomme maa du gaa tilbage til den kode der skulle have givet vaerdier til variablerne (eventuelt vise den her.)
Avatar billede danco Nybegynder
09. august 2010 - 08:49 #5
I forlængelse af hvad christian skriver så kunne jeg godt tænke mig at se hvordan du får fat i de data der skal sættes ind i databasen.
Prøv evt. også at udskrive din SQL streng til skærmen.
Avatar billede myn Nybegynder
10. august 2010 - 12:39 #6
Undskyld mig svartiden, men jeg har lidt travlt med andre gøremål lige nu. Jeg vender tilbage snarest med svar.  Jeg har dog en klar overbevisning om at problemet ligger i forskellen på de PHP versioner der henholdsvis lå på den gamle server og den nye. GET formatet er ændret - det er det jeg roder med lige nu. Men jeg vender tilbage. Mht Echo - ja, det er klart måden at tjekke på - det brude jeg nok måske have skrevet at jeg gjorde.
Mvh
MYN
10. august 2010 - 13:03 #7
Du skriver: "Mht Echo - ja, det er klart måden at tjekke på - det brude jeg nok måske have skrevet at jeg gjorde."  Betyder det at du har indsat echo statements i den kode du jaevnfoer ovenstaaende bruger til din mysql_query statement og at det viser at de variabler du bruger i din mysql_query har de forventede vaerdier, men skoent din mysql_query statement resulterer i at der laves en ny record i databasetabellen saa er felterne i den nye record tomme undtagen for dato og at samtidig du ikke faar nogen mysql_error besked?  I saafald maa jeg nok give fortabt.

Men jeg ville mene at du er paa vildspor hvis du proever at lede efter problemer i forskellene paa php versionerne.  Hvis den php version du nu bruger med de get formater der er gaeldende i den php version resulterer i at du for leveret de rigtige variabler til ovenstaaende kode, som bevist ved echo, saa kan problemet ikke skyldes php versionen.
Avatar billede danco Nybegynder
11. august 2010 - 14:49 #8
Jeg tror vi bliver nødt til at se noget mere kode her.

Det jeg gerne vil se er den form hvor brugeren skriver data (og hvor du skal hente det fra)
og så vil jeg ligeså gerne se hvordan du forsøger at fange.

Desuden skal du være helt sikker på om din form bruger get eller post som method idet du skal bruge dette til at fange dem i din PHP.

men som sagt, hjælpen er væsentlig lettere at give konkret hvis vi har noget mere kode at se på.
Avatar billede myn Nybegynder
11. august 2010 - 22:57 #9
Hej alle.
En PHP ven anviste mig at bruge $_request til variablerne og det hjalp. Altså må der have været en forskel i versionerne hos de to udbydere. Formen har jeg ialtfald ikke ændret på. Og at variablerne var tomme synes jeg var klart fra starten.  Det der hjalp mig mest var Christian-Belgiens forslag om at sætte et SQL check på. Og da han også var først på tasterne, vælger jeg at tildele pointene til ham. (skal så lige finde ud af hvordan man gør det) - I andre skal nu også have tak fordi I forsøgte. Det er bestemt ikke sidste gang jeg er herinde. Og har da heldigvis også selv kunne bidrage lidt - bare på hardware siden.  Mvh MYN
Avatar billede myn Nybegynder
11. august 2010 - 22:59 #10
Kan se at jeg skal have et svar fra dig Christian. Vil du sende et, så jeg kan lukke og give dig points?
12. august 2010 - 05:40 #11
Svar fra mig.
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester