Waarom werkt deze query niet ?

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

JVB

JVB

21/08/2009 16:22:00
Quote Anchor link
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 ?
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
<?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());
?>
Gewijzigd op 01/01/1970 01:00:00 door JVB
 
PHP hulp

PHP hulp

19/11/2024 16:34:50
 
Tamara

Tamara

21/08/2009 16:24:00
Quote Anchor link
bestaan de POST waardes wel?

edit: variabelen buiten quotes houden in je query.
Gewijzigd op 01/01/1970 01:00:00 door Tamara
 
- SanThe -

- SanThe -

21/08/2009 16:27:00
Quote Anchor link
Je post is nu niet echt leesbaar. Pas je post even aan en gebruik en tags om je code heen. Om php code zet je uiteraard dit:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
<?php en ?>
Gebruik je Afbeelding knop om dit te doen.

SanThe.

Edit:
$vars zomaar copiëren is zinloos.
$vars buiten quotes houden.
Script is lek => sql-injection.
Foutafhandeling ontbreekt.
Gewijzigd op 01/01/1970 01:00:00 door - SanThe -
 
JVB

JVB

21/08/2009 16:50:00
Quote Anchor link
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 :

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
<?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 :

WHERE knID='$klantnummer'";

wat is er fout ? ( dank voor de hulp )
Gewijzigd op 01/01/1970 01:00:00 door JVB
 
JVB

JVB

21/08/2009 17:02:00
Quote Anchor link
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 Afbeelding knop om je tekst aan te passen.

SanThe.
Gewijzigd op 01/01/1970 01:00:00 door JVB
 
Jesper Diovo

Jesper Diovo

21/08/2009 17:18:00
Quote Anchor link
Meesturen met het formulier in een hidden form ; ).
 

21/08/2009 19:07:00
Quote Anchor link
Of in de URL als GET parameter :)
 
Afra ca

Afra ca

21/08/2009 20:57:00
Quote Anchor link
Nu nog wel even netjes leren scripten. Gebruik een opzet als dit:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
<?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';
}

?>
 
- Ricardo -

- Ricardo -

21/08/2009 22:06:00
Quote Anchor link
Opslaan in een sessie :)
 



Overzicht Reageren

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.