Avatar billede nielschristiansen Nybegynder
06. december 2004 - 22:06 Der er 29 kommentarer og
1 løsning

Hvordan får jeg en update til at virke i php

Hej jeg har lavet et script hvor jeg henter indholdet fra en tabel ind i forms for at rette i det og det går fint men når jeg forsøger at update går det galt jeg får følgene fejl
You have an error in your SQL syntax near 'SET overskrift ='Vilken dag!!' WHERE id = ' at line 1

mit script ser sådan her ud

<?
$db = mysql_connect("databae", "bruger","kode");
mysql_select_db("rdnwo_dk",$db);
$fore = mysql_query("SELECT * FROM nyheder WHERE id=".$_GET['id'].";") or die(mysql_error());
while($data = mysql_fetch_array($fore)){
    echo "<form action=\"ret1.php\" method=\"post\">";
        echo "Overskrift<br><input type=\"text\" name=\"overskrift\" value=\"$data[2]\"><br>";
        echo "Navn:<br><input type=\"text\" name=\"navn\" value=\"$data[5]\"><br>";
        echo "<textarea name=\"tekst\" rows=\"10\">$data[3]</textarea><br>";
      echo"<input type=\"submit\" name=\"et\" value=\"indsæt\">";
        echo "</form>";
        $id = $data[0];
        echo $id;
}?>

og scriptet med update ser sådan her ud

<?
$db = mysql_connect("database", "bruger","kode");
mysql_select_db("rdnwo_dk",$db);
mysql_query("UPDATE nyheder SET navn ='$_POST[navn]', SET overskrift ='$_POST[overskrift]' WHERE id = ".$_GET['id'].";") or die(mysql_error());
header("location:ret.php");
?>
er der nogen der kan hjælpe mig
Mvh
Niels Christiansen
Avatar billede erikjacobsen Ekspert
06. december 2004 - 22:11 #1
mysql_query("UPDATE nyheder SET navn ='$_POST[navn]', overskrift ='$_POST[overskrift]' WHERE id = ".$_GET['id'].";") or die(mysql_error());
Avatar billede nielschristiansen Nybegynder
06. december 2004 - 22:14 #2
Giver følgene fejl You have an error in your SQL syntax near '' at line 1
Avatar billede coderdk Praktikant
06. december 2004 - 22:16 #3
ret:

while($data = mysql_fetch_array($fore)){
    echo "<form action=\"ret1.php\" method=\"post\">";
        echo "Overskrift<br><input type=\"text\" name=\"overskrift\" value=\"$data[2]\"><br>";
        echo "Navn:<br><input type=\"text\" name=\"navn\" value=\"$data[5]\"><br>";
        echo "<textarea name=\"tekst\" rows=\"10\">$data[3]</textarea><br>";
      echo"<input type=\"submit\" name=\"et\" value=\"indsæt\">";
        echo "</form>";
        $id = $data[0];
        echo $id;
}?>

til:

while($data = mysql_fetch_array($fore)){
    echo "<form action=\"ret1.php\" method=\"post\">";
        echo "Overskrift<br><input type=\"text\" name=\"overskrift\" value=\"$data[2]\"><br>";
        echo "Navn:<br><input type=\"text\" name=\"navn\" value=\"$data[5]\"><br>";
        echo "<input type=\"hidden\" name=\"id\" value=\"$data[0]\">";
        echo "<textarea name=\"tekst\" rows=\"10\">$data[3]</textarea><br>";
      echo"<input type=\"submit\" name=\"et\" value=\"indsæt\">";
        echo "</form>";
        $id = $data[0];
        echo $id;
}?>

(Har sat ID ind som et hidden felt)
Avatar billede erikjacobsen Ekspert
06. december 2004 - 22:17 #4
Så er din $_GET['id'] tom. Du skal have den med over, fx.

    echo "<form action=\"ret1.php?id={$_GET['id]}\" method=\"post\">";
Avatar billede erikjacobsen Ekspert
06. december 2004 - 22:17 #5
echo "<form action=\"ret1.php?id={$_GET['id']}\" method=\"post\">";
Avatar billede coderdk Praktikant
06. december 2004 - 22:17 #6
Ah ja, hvis du bruger min skal du rette $_GET['id'] til $_POST['id'] i updaten ;)
Avatar billede nielschristiansen Nybegynder
06. december 2004 - 22:18 #7
You have an error in your SQL syntax near '' at line 1
samme fejl
Avatar billede coderdk Praktikant
06. december 2004 - 22:20 #8
Hvad har du gjort? :P
Avatar billede nielschristiansen Nybegynder
06. december 2004 - 22:20 #9
ja nu retter den men giver stadig samme fejl :)
Avatar billede coderdk Praktikant
06. december 2004 - 22:21 #10
Ah, fjern ; i din SQL statement ;)
Avatar billede erikjacobsen Ekspert
06. december 2004 - 22:21 #11
Der er en del forslag ovenfor. Hvad har du gjort?
Avatar billede coderdk Praktikant
06. december 2004 - 22:21 #12
Hvis du brugte min:

mysql_query("UPDATE nyheder SET navn ='$_POST[navn]', SET overskrift ='$_POST[overskrift]' WHERE id = ".$_POST['id']) or die(mysql_error());
Avatar billede nielschristiansen Nybegynder
06. december 2004 - 22:22 #13
jeg har ændret get til post samt indsat ændringen
while($data = mysql_fetch_array($fore)){
    echo "<form action=\"ret1.php\" method=\"post\">";
        echo "Overskrift<br><input type=\"text\" name=\"overskrift\" value=\"$data[2]\"><br>";
        echo "Navn:<br><input type=\"text\" name=\"navn\" value=\"$data[5]\"><br>";
        echo "<input type=\"hidden\" name=\"id\" value=\"$data[0]\">";
        echo "<textarea name=\"tekst\" rows=\"10\">$data[3]</textarea><br>";
      echo"<input type=\"submit\" name=\"et\" value=\"indsæt\">";
        echo "</form>";
        $id = $data[0];
        echo $id;
}?>
Avatar billede nielschristiansen Nybegynder
06. december 2004 - 22:26 #14
coder dk den du lige indsattte giver denne fejl

You have an error in your SQL syntax near 'SET overskrift ='skod' WHERE id = 329' at line 1
Avatar billede erikjacobsen Ekspert
06. december 2004 - 22:28 #15
Du skal fjerne SET som jeg skrev først.
Avatar billede coderdk Praktikant
06. december 2004 - 22:28 #16
Prøv lige at rette den til:

echo $sql = "UPDATE nyheder SET navn ='$_POST[navn]', SET overskrift ='$_POST[overskrift]' WHERE id = ".$_POST['id'];
mysql_query($sql) or die(mysql_error());

Og skriv hvad den giver dig ;) (du kan fjerne echo når du har fået det til at virke - det er generelt pænt at lave statement først og så køre det bagefter)
Avatar billede coderdk Praktikant
06. december 2004 - 22:28 #17
doh! ja, erik har da ret, den overså jeg lige :)
Avatar billede nielschristiansen Nybegynder
06. december 2004 - 22:29 #18
så skriver den
UPDATE nyheder SET navn ='peter', SET overskrift ='skod' WHERE id = 329You have an error in your SQL syntax near 'SET overskrift ='skod' WHERE id = 329' at line 1
Avatar billede coderdk Praktikant
06. december 2004 - 22:31 #19
Denne skulle så virke ;)

$sql = "UPDATE nyheder SET navn ='$_POST[navn]', overskrift ='$_POST[overskrift]' WHERE id = ".$_POST['id'];
mysql_query($sql) or die(mysql_error());
Avatar billede nielschristiansen Nybegynder
06. december 2004 - 22:35 #20
så skriver den
You have an error in your SQL syntax near '' at line 1
men hvis jeg bruger denne her så skriver den query was emty
mysql_query("UPDATE nyheder SET navn ='$_POST[navn]', overskrift ='$_POST[overskrift]', tekst ='$_POST[tekst]' WHERE id = ".$_GET['id'].";") or die(mysql_error());
mysql_query($sql) or die(mysql_error());
Avatar billede coderdk Praktikant
06. december 2004 - 22:43 #21
Hvad laver du?!

$sql = "UPDATE nyheder SET navn ='$_POST[navn]', overskrift ='$_POST[overskrift]' WHERE id = ".$_POST['id'];
mysql_query($sql) or die(mysql_error());
Avatar billede nielschristiansen Nybegynder
07. december 2004 - 16:48 #22
ja du har ret det var lige mig men hvis jeg indsætter
$sql = "UPDATE nyheder SET navn ='$_POST[navn]', overskrift ='$_POST[overskrift]', tekst='$_POST[tekst]' WHERE id = ".$_POST['id'];
mysql_query($sql) or die(mysql_error());
får jeg stadig You have an error in your SQL syntax near '' at line 1
Avatar billede erikjacobsen Ekspert
08. december 2004 - 09:43 #23
Har du ændret din <form> så der står noget i $_POST['id'] - vi kan ikke hjælpe dig
uden du viser hvad du har lavet.
Avatar billede nielschristiansen Nybegynder
09. december 2004 - 20:11 #24
ok det jeg har lavet på selve form siden ser således ud det skal dog siges scriptet virker men jeg får stadig fejlen :)

<?
$db = mysql_connect("database", "bruger","kode");
mysql_select_db("rdnwo_dk",$db);
$fore = mysql_query("SELECT * FROM nyheder WHERE id=".$_GET['id'].";") or die(mysql_error());
while($data = mysql_fetch_array($fore)){
    echo "<form action=\"ret1.php?id={$_GET['id']}\" method=\"post\">";
        echo "Overskrift<br><input type=\"text\" name=\"overskrift\" value=\"$data[2]\"><br>";
        echo "Navn:<br><input type=\"text\" name=\"navn\" value=\"$data[5]\"><br>";
        echo "<input type=\"hidden\" name=\"id\" value=\"$data[0]\">";
        echo "<textarea name=\"tekst\" rows=\"10\">$data[3]</textarea><br>";
      echo"<input type=\"submit\" name=\"et\" value=\"indsæt\">";
        echo "</form>";
        $id = $data[0];
     
}?>


scriptet der retter i databasen ser sådan ud



<?
$db = mysql_connect("database","bruger","kode");
mysql_select_db("rdnwo_dk",$db);
$sql = "UPDATE nyheder SET navn ='$_POST[navn]', overskrift ='$_POST[overskrift]',tekst='$_POST[tekst]' WHERE id = ".$_POST['id'];
mysql_query($sql) or die(mysql_error());
ECHO "Indlægget er nu rettet <a href=\"news.php\">Tilbage</a>";
her vil jeg gerne sende brugeren tilbage med en header("location:news.php") men hvis jeg gør det retter den ikke i indlægget
?>


Mvh
Niels Christiansen
Avatar billede coderdk Praktikant
09. december 2004 - 21:08 #25
Som jeg skrev, ændr:

$db = mysql_connect("database", "bruger","kode");
mysql_select_db("rdnwo_dk",$db);
$fore = mysql_query("SELECT * FROM nyheder WHERE id=".$_GET['id'].";") or die(mysql_error());
while($data = mysql_fetch_array($fore)){
    echo "<form action=\"ret1.php?id={$_GET['id']}\" method=\"post\">";
        echo "Overskrift<br><input type=\"text\" name=\"overskrift\" value=\"$data[2]\"><br>";
        echo "Navn:<br><input type=\"text\" name=\"navn\" value=\"$data[5]\"><br>";
        echo "<input type=\"hidden\" name=\"id\" value=\"$data[0]\">";
        echo "<textarea name=\"tekst\" rows=\"10\">$data[3]</textarea><br>";
      echo"<input type=\"submit\" name=\"et\" value=\"indsæt\">";
        echo "</form>";
        $id = $data[0];
   
}?>

til:

$db = mysql_connect("database", "bruger","kode");
mysql_select_db("rdnwo_dk",$db);
$fore = mysql_query("SELECT * FROM nyheder WHERE id=".$_GET['id'].";") or die(mysql_error());
while($data = mysql_fetch_array($fore)){
    echo "<form action=\"ret1.php?id={$_GET['id']}\" method=\"post\">";
        echo "Overskrift<br><input type=\"text\" name=\"overskrift\" value=\"$data[2]\"><br>";
        echo "<input type=\"hidden\" name=\"id\" value=\"{$_GET['id']}\">";
        echo "Navn:<br><input type=\"text\" name=\"navn\" value=\"$data[5]\"><br>";
        echo "<input type=\"hidden\" name=\"id\" value=\"$data[0]\">";
        echo "<textarea name=\"tekst\" rows=\"10\">$data[3]</textarea><br>";
      echo"<input type=\"submit\" name=\"et\" value=\"indsæt\">";
        echo "</form>";
        $id = $data[0];
   
}?>
Avatar billede coderdk Praktikant
09. december 2004 - 21:09 #26
Eller bedre:

$db = mysql_connect("database", "bruger","kode");
mysql_select_db("rdnwo_dk",$db);
$fore = mysql_query("SELECT * FROM nyheder WHERE id=".$_GET['id'].";") or die(mysql_error());
while($data = mysql_fetch_array($fore)){
    echo "<form action=\"ret1.php\" method=\"post\">";
        echo "Overskrift<br><input type=\"text\" name=\"overskrift\" value=\"$data[2]\"><br>";
        echo "<input type=\"hidden\" name=\"id\" value=\"{$_GET['id']}\">";
        echo "Navn:<br><input type=\"text\" name=\"navn\" value=\"$data[5]\"><br>";
        echo "<input type=\"hidden\" name=\"id\" value=\"$data[0]\">";
        echo "<textarea name=\"tekst\" rows=\"10\">$data[3]</textarea><br>";
      echo"<input type=\"submit\" name=\"et\" value=\"indsæt\">";
        echo "</form>";
        $id = $data[0];
 
}?>
Avatar billede nielschristiansen Nybegynder
13. december 2004 - 16:35 #27
hej jeg har fået det til at virke nogenlunde så det er brugbart men da jeg har brugt noget fra jer begge synes jeg det er rimeligt at i begge får point så hvis i gider give mig et svar så skal i få jeres point

:)
mvh
Niels
Avatar billede coderdk Praktikant
13. december 2004 - 16:48 #28
:)
Avatar billede nielschristiansen Nybegynder
19. december 2004 - 10:40 #29
du fik alle point coderdk men hvis du hører fra erikjacobsen må du give ham halvdelen syntes bare at nu er der næsten gået en uge og har ikke fået et svar fra ham endnu

GOD JUL

MVH
Niels Christiansen
Avatar billede erikjacobsen Ekspert
19. december 2004 - 11:49 #30
Jeg samler slet ikke på point, så det er fint nok for 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
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