25. marts 2005 - 16:07
Der er
23 kommentarer og 2 løsninger
Kan ikke sætte ind i MySQL database
Hey.. Er der nogle der kan fortælle mig hvad hvad min kode fejler? Der bliver ikke sat noget ind i tabellen. Følgende variabler bliver sendt til siden. $nyhed_dato, $forfatter, $nyhed_overskrift, $nyhed_tekst <? $pass = "??????"; if($kodeord) { if($kodeord == $pass){ mysql_connect('???????,'????????','???????'); mysql_select_db("???????"); $id = mysql_query("SELECT id from nyheder ORDER BY id desc LIMIT 1"); while($row = mysql_fetch_array($id)) { $IDNummer = $row["ID"] + 1; } $nyhed_dato = time(); mysql_query("INSERT INTO nyheder (id, dato, forfatter, overskrift, tekst) VALUES ('$IDNummer', '$nyhed_dato', '$forfatter', '$nyhed_overskrift', '$nyhed_tekst')"); echo "Nyheden er tilføjet"; } else { echo "<p><b><font color=#FF0000 size=6>Forkert password</font></b></p>"; } ?>
Annonceindlæg fra gavdi
25. marts 2005 - 16:11
#1
Prøv lige at brug: mysql_query("...") or die(mysql_error()); så du kan se hvad der går galt
25. marts 2005 - 16:12
#2
Er du sikker på at $forfatter ikke skal være $_POST['forfatter'] ?
25. marts 2005 - 16:12
#3
Hvor kommer dataene fra ?
25. marts 2005 - 16:12
#4
Og så tror jeg at du skulle lave id til at autoincrement felt og undgå den første query.
25. marts 2005 - 16:13
#5
Hvad gør det at der står post foran?
25. marts 2005 - 16:13
#6
At den ved hvor variablen kommer fra ? Hvordan ser din form ud ?
25. marts 2005 - 16:14
#7
Der er $_GET['navn'] eller $_POST['navn']
25. marts 2005 - 16:14
#8
Og hvor kommer $kodeord fra?
25. marts 2005 - 16:17
#9
Min form ser sådan her ud: <form method=post action=admin.php> Kodeord:<br> <input type=password name=kodeord><br> Overskrift:<br> <input type=text name=nyhed_overskrift><br> Forfatter:<br> <input type=text name=forfatter><br> Tekst:<br> <textarea name=nyhed_tekst rows="11" cols="32"></textarea><br> <input type=submit value=skriv> </form> Jeg har sat or die(mysql_error()); ind, og nu siger den Duplicate entry '1' for key 1 Når jeg køre siden.
25. marts 2005 - 16:20
#10
if($_POST["kodeord"]) { if($_POST["kodeord"] == $pass){ og mysql_query("INSERT INTO nyheder (id, dato, forfatter, overskrift, tekst) VALUES ('$IDNummer', '$_POST["nyhed_dato"]', '$_POST["forfatter"]', '$_POST["nyhed_overskrift"]', '$_POST["nyhed_tekst"]')");
25. marts 2005 - 16:20
#11
method=post så skal du bruge $_POST['feltnavn']
25. marts 2005 - 16:21
#12
Så ligger problemet i din query. Find din tabel (i phpmyadmin) og rediger din id-kolonne, så den får auto-increment - herefter skal du droppe at finde næste id men bare indsætte rækken uden at angive et id: mysql_connect('???????,'????????','???????'); mysql_select_db("???????"); $nyhed_dato = time(); mysql_query("INSERT INTO nyheder (dato, forfatter, overskrift, tekst) VALUES ('$nyhed_dato', '$forfatter', '$nyhed_overskrift', '$nyhed_tekst')"); echo "Nyheden er tilføjet"; -- Morten Barklund
25. marts 2005 - 16:22
#13
Duplicate entry '1' for key 1 betyder at du forsøger at indsætte en værdi '1' som primær nøgle der allerede er i tabellen
25. marts 2005 - 16:22
#14
Og han har tydeligvis globals on, da det jo virker bortset fra duplicate key :)
25. marts 2005 - 16:29
#15
Nice! Tak.. Nu virker det.. Der er bare eet problem.. Når den er sat til "auto-increment", så kan jeg ikke slette nogle indlæg uden at den stadig går over den værdi næsten gang.. Så nu har jeg indlæg med id: 1 2 8
25. marts 2005 - 16:31
#16
Er der nogle der tør skrive et lille svar, så i kan få lidt points :-)
25. marts 2005 - 16:31
#17
Ja, det er korrekt - men det kunne du jo heller ikke før - hvad ville du da gøre, hvis du havde 3 indlæg og slettede det midterste? auto-id'er bør man ikke vise frem til brugeren - det er kun noget du bruger til at holde styr på rækkerne.
25. marts 2005 - 16:32
#18
Og et lille, bitte svar :)
25. marts 2005 - 16:35
#19
okay.. tak... Hvad med andre? Er der nogle der vil have et lille bitte points? :)
25. marts 2005 - 16:36
#20
joe
25. marts 2005 - 16:37
#21
Nu gør jeg ikke meget i PHP, men jeg troede at det var bad practice at skrive kode som forudsatte globals on !?
25. marts 2005 - 16:39
#22
arne_v - det kan du tro det er, men når nu det ikke er problemet, så gider jeg ikke rette det. Så er der så mange andre ting, man også burde rette :)
25. marts 2005 - 16:49
#23
globals on? Hvad dælen er det?
Slettet bruger
25. marts 2005 - 18:05
#24
så du kan skrive: <? echo $id; ?> i stedet for: <? echo $_SESSION['id'] / $_POST['id'] (osv...); ?>
25. marts 2005 - 19:28
#25
Og tark for points.
Vi tilbyder markedets bedste kurser inden for webudvikling