Ik wil met het script klant_wijzigen.php de gegevens van een klant wijzigen maar dit lukt niet. Er komt geen enkele foutmelding, maar de gegevens van de klant worden ook niet gewijzigd. Wat is er mis aan onderstaand script ?
<?php
// $knID = bijvoorbeeld klantnummer 22
$voornaam = $_POST['voornaam'];
$achternaam = $_POST['achternaam'];
$straat = $_POST['straat'];
$postnummer = $_POST['postnummer'];
$gemeente = $_POST['gemeente'];
$telefoon = $_POST['telefoon'];
$gsm = $_POST['gsm'];
$emailadres = $_POST['emailadres'];
$btwnummer = $_POST['btwnummer'];
mysql_query("UPDATE klanten SET voornaam='$voornaam', achternaam='$achternaam',straat='$straat' ,
postnummer='$postnummer', telefoon='$telefoon', gsm='$gsm', emailadres='$emailadres' ,
btwnummer='$btwnummer' WHERE knID='$knID'") or die (mysql_error());
?>
De post waarde's bestaan wel degelijk want ik zie de waarde's als ik ze met echo op het scherm plaats.
als ik deze query uitvoer :
<?php
mysql_query("UPDATE klanten SET voornaam='$voornaam', achternaam='$achternaam',straat='$straat' ,
postnummer='$postnummer', telefoon='$telefoon', gsm='$gsm', emailadres='$emailadres' ,
btwnummer='$btwnummer' WHERE knID= 22") or die (mysql_error());
?>
werkt het perfect, dus ik denk dat het moet gezocht worden in de variabele $knID
vreemd is dat als ik de waarde van de variabele op het scherm plaats met echo dat er wel degelijk een waarde in zit. Het lijkt erop dat het laatste stukje niet goed is :
Ondertussen weet ik hoe het komt waarom de query niet werkt :
Als ik op de button vezenden druk dan dan heeft de variabele knID geen waarde meer blijkbaar.
Hoe kan ik ervoor zorgen dat de variabele knID zijn waarde blijft behouden ?
Gelieve Niet Bumpen:
Twee of meer keer achter elkaar in een topic posten heet bumpen. Bumpen is pas na 24 uur toegestaan en kan een reden zijn voor de admins en moderators om een topic te sluiten. Gebruik indien nodig de knop om je tekst aan te passen.
Nu nog wel even netjes leren scripten. Gebruik een opzet als dit:
<?php
//veld 1 is string, veld 2 is getal (int)
// controleren of ze bestaan, en of veld 2 wel echt getal is
if(isset($_POST['veld1'],$_POST['veld2'], enz) && is_int($_POST['veld2'])){
//veld 1 is string, veld2 is int
//query opstellen, met veilig maken van veld1
$sql = "UPDATE tabelnaam SET veld1 = '".mysql_real_escape_string($_POST['veld1'])."' , ".$_POST['veld2'];
if(!$result = mysql_query($sql)){
//mysql query geeft false als het niet lukt, en we besparen wat tijd door tegelijkertijd uit te voeren en te controleren (let op de ! aan het begin van de if)
//laat fout zien, maar stopt niet abrupt het gehele script zoals "die" heel vervelend doet
trigger_error(mysql_error());
}
else{
//update query gelukt
echo 'Briljant, de update is gelukt!';
}
}
else {
//kwam niet door if heen
echo 'Of u heeft een veld niet ingevuld, of veld 2 was geen getal';
}
?>