Avatar billede downloading Nybegynder
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>";

}
?>
Avatar billede arne_v Ekspert
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
Avatar billede arne_v Ekspert
25. marts 2005 - 16:12 #2
Er du sikker på at

$forfatter

ikke skal være

$_POST['forfatter']

?
Avatar billede leif Seniormester
25. marts 2005 - 16:12 #3
Hvor kommer dataene fra ?
Avatar billede arne_v Ekspert
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.
Avatar billede downloading Nybegynder
25. marts 2005 - 16:13 #5
Hvad gør det at der står post foran?
Avatar billede leif Seniormester
25. marts 2005 - 16:13 #6
At den ved hvor variablen kommer fra ?

Hvordan ser din form ud ?
Avatar billede leif Seniormester
25. marts 2005 - 16:14 #7
Der er $_GET['navn'] eller $_POST['navn']
Avatar billede barklund Nybegynder
25. marts 2005 - 16:14 #8
Og hvor kommer $kodeord fra?
Avatar billede downloading Nybegynder
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.
Avatar billede leif Seniormester
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"]')");
Avatar billede arne_v Ekspert
25. marts 2005 - 16:20 #11
method=post

så skal du bruge

$_POST['feltnavn']
Avatar billede barklund Nybegynder
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
Avatar billede arne_v Ekspert
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
Avatar billede barklund Nybegynder
25. marts 2005 - 16:22 #14
Og han har tydeligvis globals on, da det jo virker bortset fra duplicate key :)
Avatar billede downloading Nybegynder
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
Avatar billede downloading Nybegynder
25. marts 2005 - 16:31 #16
Er der nogle der tør skrive et lille svar, så i kan få lidt points :-)
Avatar billede barklund Nybegynder
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.
Avatar billede barklund Nybegynder
25. marts 2005 - 16:32 #18
Og et lille, bitte svar :)
Avatar billede downloading Nybegynder
25. marts 2005 - 16:35 #19
okay.. tak... Hvad med andre? Er der nogle der vil have et lille bitte points? :)
Avatar billede arne_v Ekspert
25. marts 2005 - 16:36 #20
joe
Avatar billede arne_v Ekspert
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 !?
Avatar billede barklund Nybegynder
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 :)
Avatar billede downloading Nybegynder
25. marts 2005 - 16:49 #23
globals on? Hvad dælen er det?
Avatar billede Slettet bruger
25. marts 2005 - 18:05 #24
så du kan skrive:
<?
echo $id;
?>
i stedet for:
<?
echo $_SESSION['id'] / $_POST['id'] (osv...);
?>
Avatar billede barklund Nybegynder
25. marts 2005 - 19:28 #25
Og tark for points.
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
Vi tilbyder markedets bedste kurser inden for webudvikling

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