Check alle échte Black Friday-deals Ook zo moe van nepaanbiedingen? Wij laten alleen échte deals zien

[PHP] Een wijzig formulier -> syntax error

Pagina: 1
Acties:
  • 63 views sinds 30-01-2008

  • Boyd
  • Registratie: Januari 2006
  • Laatst online: 31-10 23:01
Ik ben bezig met een vrij simpel telefoonboekje in PHP.
Ik haal alle gegevens uit de database.

- Met een formuliertje nummers toevoegen werkt
- Een lijst met nummrs laten zien werkt

Ik heb nu een formuliertje gemaakt om iets te wijzigen uit de database. Zodra je op wijzigen klikt, krijg je netjes de goede naam en nummer in het veld te zien, dan doe je dus je aanpassing en drukt op de knop "Updaten". Daar gaat het fout, ik krijg de volgende foutmelding:
You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'WHERE id='3'' at line 4
Ik heb echt van alles geprobeerd, zelfs al 2 andere mensen naar kijken, maar we komen er niet uit was het nou is. Hier de code van de pagina:

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
<?php include ("config.php"); ?>
<?php
$query="SELECT * FROM gegevens WHERE id='". $_GET['id'] ."'";
$result = mysql_query($query) or die ("Fout: " .mysql_error());
while (list($id, $naam, $nummer) = 
mysql_fetch_row($result)){

echo"<form name=\"updaten\" method=\"post\" action=\"wijzigen.php?id=".$_GET["id"]."\">
  <table width=\"50%\" border=\"0\" cellpadding=\"0\" cellspacing=\"0\">
    <tr> 
      <td height=\"24\"></td>
      <td></td>
    </tr>
    <tr> 
      <td width=\"10%\">Naam</td>
      <td width=\"25%\"><input name=\"naam\" id=\"naam\" maxlength=\"40\" type=\"text\" size=\"40\" value=\"$naam\"></td>
    </tr>
    <tr> 
      <td width=\"10%\">Nummer</td>
      <td width=\"25%\"><input name=\"nummer\" id=\"nummer\" maxlength=\"40\" type=\"text\" size=\"40\" value=\"$nummer\"></td>
    </tr>
    <tr> 
      <td height=\"24\"> <input name=\"updaten\" type=\"submit\" id=\"updaten\" value=\"Updaten\">
         </td>
      <td>&nbsp;</td>
    </tr>
  </table>
</form>";
}

if($updaten) {
if($_POST['nummer'] ==""){
echo 'Je hebt geen telefoonnummer ingevult!';
}


$query="UPDATE gegevens set 
naam = '". $_POST["naam"] ."',
nummer = '". $_POST["nummer"] ."',
WHERE id='". $_GET["id"] ."'";
$result = mysql_query($query) or die (mysql_error());
echo ("De opdracht is uitgevoerd.<br>");
if ($result){
echo ("Record nummer " .$_GET['id'] . " is bijgewerkt<br>");
}
}

?>
<?php include ("link_onder.php"); ?>

  • bigbeng
  • Registratie: Augustus 2000
  • Laatst online: 26-11-2021
Gewoon nog een keertje doorlezen. Zo te zien heb je een komma teveel vlak voor de WHERE. Dit is redelijk standaard debugwerk. Als je je query gewoon even ge-echoot had, dan had je het waarschijnlijk zelf ook wel gezien.

[ Voor 42% gewijzigd door bigbeng op 17-10-2007 08:36 ]


Verwijderd

Ik denk dat het komt omdat je meerdere forms met dezelfde naam genereert. Probeer eens

PHP:
1
echo"<form name=\"updaten$id\" method=\"post\" action=\"wijzigen.php?id=".$_GET["id"]."\">


Maar dit weet ik niet zeker.

EDIT: Eh, ja. Daar zal het wel aan liggen (@bigbeng). Inderdaad, var_dump en echo zijn je vrienden.

[ Voor 18% gewijzigd door Verwijderd op 17-10-2007 08:38 ]


  • We Are Borg
  • Registratie: April 2000
  • Nu online

We Are Borg

Moderator Wonen & Mobiliteit / General Chat
En kijk ook eens naar mysql_real_escape_string()

  • dvdheiden
  • Registratie: Maart 2006
  • Laatst online: 18:05
Bij mij valt SQL nog wel eens over de kolomnamen, het tussen quotes plaatsen daarvan helpt nog wel eens, zou dan zoiets moeten worden:
code:
1
$query="SELECT * FROM gegevens WHERE `id`='".mysql_real_escape_string($_GET['id']) ."'";

[ Voor 54% gewijzigd door dvdheiden op 17-10-2007 08:45 ]


  • NMe
  • Registratie: Februari 2004
  • Laatst online: 20-11 11:59

NMe

Quia Ego Sic Dico.

Als je een syntaxfout krijgt, dan is dat altijd het resultaat van slordig coden. Je hebt dan meestal een tikfout gemaakt (of in een minder waarschijnlijk geval: je gebruikt code die pas in een latere versie ondersteund wordt). In dit geval heb je inderdaad gewoon een komma teveel staan, waar je zo achter had kunnen komen als je gewoon even de query die uiteindelijk uitgevoerd wordt had afgedrukt. Zie ook Programming FAQ - Debuggen: hoe doe ik dat?

Dit topic kan in elk geval wel dicht. :)

'E's fighting in there!' he stuttered, grabbing the captain's arm.
'All by himself?' said the captain.
'No, with everyone!' shouted Nobby, hopping from one foot to the other.


  • NMe
  • Registratie: Februari 2004
  • Laatst online: 20-11 11:59

NMe

Quia Ego Sic Dico.

Toevoeging van de topicstarter:
@Bigbeng
Bedankt! Heb hem weggehaald en het werkte!
Dat zo'n kleine fout ervoor kan zorgen dat het niet meer werkt :).

'E's fighting in there!' he stuttered, grabbing the captain's arm.
'All by himself?' said the captain.
'No, with everyone!' shouted Nobby, hopping from one foot to the other.

Pagina: 1

Dit topic is gesloten.