Wat is er fout?

Status
Niet open voor verdere reacties.

amorphis

Gebruiker
Lid geworden
4 dec 2002
Berichten
122
Beste Helpmij.nl mensen,

Ik ben een gastenboekje aan het maken en ben momenteel aan het administratiepaneel bezig. met name het wijzigen van posts.
Ik haal de waardes van de post met succes op door te zoeken op de post_id en kan ze dan aanpasse in tekstvelden. als ik dit dan terug wil posten (met een sql update) loopt het mis.

als ik de waardes in mijn sql statement echo komen ze correct tevoorschijn. maar updaten doet de tabel niet. :eek:

hier is het statement:
Code:
mysql_query("UPDATE gb SET gb_name = $naam, gb_email = $email, gb_url = $homepage, gb_content = $boodschap WHERE gb_ID = $code");

Ik herhaal: Bij het echo'en net boven de statement komt alles netje te voorschijn maar de tabel past niet aan.
Wat doe ik mis? :(

Vriendelijke maar radeloze groeten,
Amorphis
 
Laatst bewerkt:
amorphis zei:
als ik de waardes in mijn sql statement echo komen ze correct tevoorschijn.

Code:
mysql_query("UPDATE gb SET gb_name = $naam, gb_email = $email, gb_url = $homepage, gb_content = $boodschap WHERE gb_ID = $code");

Wat bedoel je met "echo"?
Bedoel je:
Code:
mysql_query("SELECT gb_name, gb_email, gb_url, gb_content FROM gb WHERE gb_ID = $code");

Als je dit bedoelde met echo en hij geeft idd de goede row terug zou het misschien kunnen zijn dat je je connection niet afsluit heel eventueel.
Anders is er iets mis met je statement, waarschijnlijk bij de WHERE conditie
 
kijk ik zal even wat meer code posten ...

// Aanpassen in database

$naam = $_GET['naam'];
$email = $_GET['email'];
$homepage = $_GET['homepage'];
$boodschap = $_GET['boodschap'];
$code = $_GET['code'];

// dit werkt dus wel ... (is maar voor te testen dat alle vorige code werkt)
echo $naam . $email . $homepage . $boodschap . $code;

// dit niet ... dus zit de fout hier ... maar ik kom er niet uit ..
mysql_query("UPDATE gb SET gb_name = $naam, gb_email = $email, gb_url = $homepage, gb_content = $boodschap WHERE gb_ID = $code");

Groeten
Amorphis
 
code tot een minimum herleiden en dan beginne te testen kan soms wel helpen

ik moest dus gewoon ( '$xxx' ) haakjes ' naast mijn variable zetten :rolleyes: .
Nu ja het werkt :D
Weer iets bijgeleert.

Groeten
Amorphis
 
Probeer dit eens:
mysql_query("UPDATE gb SET gb_name = '$naam', gb_email = '$email', gb_url = '$homepage', gb_content = '$boodschap' WHERE gb_ID = $code");

// Edit: net te laat :D
 
Laatst bewerkt:
Je gebruikt GET om je form te versturen. Omdat een url maar 256 karakters kan bevatten beperkt dit erg de lengte van een bericht dat iemand kan insturen. Je kunt beter POST gebruiken.
Probeer je ook eens voor te stellen hoe je sql statement eruit gaat zien als iemand zo vriendelijk is om als $_GET['code'] bijvoorbeeld "1 OR TRUE " in te sturen. Dan krijg je
Code:
UPDATE gb .... WHERE gb_id = 1 OR TRUE
oftewel een conditie die altijd waar is en vervolgens worden dus ALLE rijen in de hele tabel veranderd. Leuk voor mensen die graag alleen maar hun eigen tekst in je gastenboek zien.
Je moet ook zorgen dat niemand html, of nog erger javascript als bericht in kan geven.
Code:
$_GET['boodschap'] = <script>alert('hallo');</script>
Vaak kun je het beste alle < vervangen door &lt; en > door &gt;
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan