Lege kolommen bij een update van een tabel in de database

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Steve Bonoo

Steve Bonoo

27/12/2022 13:35:06
Quote Anchor link
Beste mensen,

Ik zou blij zijn of iemand mij kan helpen met het volgende probleem. Ik heb een database KlantTest aangemaakt met een tabel Klant die uit vier kolommmnen bestaat, t.w. klantnummer, voornaam, achternaam en voorraad. Als ik een update doe dan worden de laatste drie kolommen keurig netjes geupdate, maar update ik alleen een kolom, bijvoorbeeld de kolom voorraad, dan worden de kolommen voornaam en achternaam leeg gemaakt. En dit is juist het probleem waartegen ik aanloop. Hieronder zie je de code die ik heb geschreven:

<html>
<body style="background-color: lightyellow">

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
23
24
25
26
<?php

    try{
        $db = new PDO("mysql:host=localhost;dbname=KlantTest","test", "test");
        $klantnummer=$_POST["klantnummer"];
        $voornaam=$_POST["voornaam"];
        $achternaam = $_POST["achternaam"];
        $voorraad = $_POST["voorraad"];
        
        $query = $db->prepare("UPDATE klant SET voornaam = '$voornaam', achternaam = '$achternaam', voorraad = '$voorraad' WHERE klantnummer = $klantnummer;");
                    
        if ($query->execute()){
            echo "<h2>De klant met klantnummer  $klantnummer   van tabel klant is gewijzigd.</h2>";
            echo "<br>";

        }

        else {
            print_r($db->errorInfo());
        }

        echo "<br>";
        }

         
    catch(PDOException $e) {
      die("Error!: " . $e->getMessage());
    }

?>

<br>
Klik <a href = "klant.html">hier</a> om terug te gaan naar het hoofdmenu.
</body>
</html>

Ik heb ook onderstaande codes geprobeerd met if-statements voor elke kolom, maar in dit geval gebeurd er niets. De oude gegevens blijven bestaan. Hieronder het programma met de if-statements:

<html>
<body style="background-color: lightyellow">

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
23
24
25
26
27
28
29
<?php

    try{
        $db = new PDO("mysql:host=localhost;dbname=KlantTest","test", "test");
        $klantnummer=$_POST["klantnummer"];
        $voornaam=$_POST["voornaam"];
        $achternaam=$_POST["achternaam"];
        $voorraad=$_POST["voorraad"];


if($_POST["voornaam"] != ""){
            $voornaam=$_POST["voornaam"];
            $query = $db->prepare("UPDATE klant SET voornaam = '$voornaam' WHERE klantnummer = $klantnummer;");
        }


if($_POST["achternaam"] != ""){
            $achternaam=$_POST["achternaam"];
            $query = $db->prepare("UPDATE klant SET achternaam = '$achternaam' WHERE klantnummer = $klantnummer;");
        }


if($_POST["voorraad"] != ""){
            $voorraad=$_POST["voorraad"];
            $query = $db->prepare("UPDATE klant SET voorraad = '$voorraad' WHERE klantnummer = $klantnummer;");
        }
}
         
    catch(PDOException $e) {
      die("Error!: " . $e->getMessage());
    }
            
?>

<br>

Klik <a href = "klant.html">hier</a> om terug te gaan naar het hoofdmenu.
</body>
</html>


Groeten,
Steve
 
PHP hulp

PHP hulp

16/04/2024 08:04:02
 
- Ariën  -
Beheerder

- Ariën -

27/12/2022 13:49:38
Quote Anchor link
Je manier om prepare () te gebruiken klopt ook niet helemaal:
https://www.w3schools.com/php/php_mysql_prepared_statements.asp
 
Steve Bonoo

Steve Bonoo

27/12/2022 14:27:30
Quote Anchor link
Beste Ariën,

Bedankt voor je snelle reactie.
Als ik een Insert of een Select wil doen van de tabel Klant, dan werkt dat prima en uiteraard gebruik ik andere statements. Ik zal zeker die link van w3school die je mij hebt gestuurd gaan bestuderen. Hieronder een voorbeeld van een Insert dat werkt, maar wel voor een ander programma dan van Klant:

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
23
24
25
26
27
28
<?php
    try{
        $db = new PDO("mysql:host=localhost;dbname=boo_eindopdrachtphp","boo_1", "steve");
        if (isset ($_POST["verzenden"])) {
            $vleeseternaam = filter_input(INPUT_POST, "vleeseternaam", FILTER_SANITIZE_STRING);
            $vleesetergewicht = filter_input(INPUT_POST, "vleesetergewicht", FILTER_SANITIZE_NUMBER_FLOAT, FILTER_FLAG_ALLOW_FRACTION);        

                    
        $query = $db->prepare("INSERT INTO Vleeseters (vleeseternaam, vleesetergewicht )
                         VALUES(:vleeseternaam, :vleesetergewicht)"
);
        
        $query->bindParam("vleeseternaam", $vleeseternaam);
        $query->bindParam("vleesetergewicht", $vleesetergewicht);
        
                
        if ($query->execute()){
            echo "Er is een nieuw record toegevoegd aan de tabel Vleeseters!";
        }

        else {
            echo "Oeps! Er is iets misgegaan";
        }

        echo "<br>";
        }
    }

    catch(PDOException $e) {
      die("Error!: " . $e->getMessage());
    }

?>


Groeten,
Steve
 
- Ariën  -
Beheerder

- Ariën -

27/12/2022 14:59:53
Quote Anchor link
Het werkt dus prima nu, begrijp ik? :-)
 
Steve Bonoo

Steve Bonoo

27/12/2022 15:17:43
Quote Anchor link
Beste Ariën,

Nee, helaas nog niet. Ik ben net nu bezig om die site van w3schools die je mij eerder had gestuurd, door te nemen. Maar als je nog suggesties hebt, dan hoor ik dat heel graag van je. Zelf ga ik later op de dag nog het e.e.a. proberen.

Groeten,
Steve
 
Ozzie PHP

Ozzie PHP

27/12/2022 15:32:00
Quote Anchor link
>> Ik heb ook onderstaande codes geprobeerd met if-statements voor elke kolom, maar in dit geval gebeurd er niets.

Dat klopt, want het execute() commando ontbreekt daar. De query wordt niet uitgevoerd.
 
Steve Bonoo

Steve Bonoo

27/12/2022 17:00:50
Quote Anchor link
Beste Ozzie,

Je hebt groot gelijk. Het werkt. Mijn dag kan niet meer stuk! Dank je wel. Ik heb dat execute()-commando toegevoegd.
En natuurlijk wil ik Ariën ook bedanken voor zijn support.

Zo ziet het programma er nu uit met daarin het execute() commando:

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
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
50
51
52
53
54
55
56
57
58
59
<?php

    try{
        $db = new PDO("mysql:host=localhost;dbname=boo_klanttest","boo_1", "steve");
        $klantnummer=$_POST["klantnummer"];
        $voornaam=$_POST["voornaam"];
        $achternaam=$_POST["achternaam"];
        $voorraad=$_POST["voorraad"];


if($_POST["voornaam"] != ""){
            $voornaam=$_POST["voornaam"];
            $query = $db->prepare("UPDATE klant SET voornaam = '$voornaam' WHERE klantnummer =
                                 $klantnummer;"
);
            
            if ($query->execute()){
            echo "<h2>De klant met klantnummer  $klantnummer   van tabel klant is gewijzigd.</h2>";
            echo "<br>";

            }

            else {
                print_r($db->errorInfo());
            }
        }


if($_POST["achternaam"] != ""){
            $achternaam=$_POST["achternaam"];
            $query = $db->prepare("UPDATE klant SET achternaam = '$achternaam' WHERE klantnummer =
                                 $klantnummer;"
);
            
            if ($query->execute()){
            echo "<h2>De klant met klantnummer  $klantnummer   van tabel klant is gewijzigd.</h2>";
            echo "<br>";

            }

            else {
                print_r($db->errorInfo());
            }        
        }


if($_POST["voorraad"] != ""){
            $voorraad=$_POST["voorraad"];
            $query = $db->prepare("UPDATE klant SET voorraad = '$voorraad' WHERE klantnummer =
                                 $klantnummer;"
);
            
            if ($query->execute()){
            echo "<h2>De klant met klantnummer  $klantnummer   van tabel klant is gewijzigd.</h2>";
            echo "<br>";

            }

            else {
                print_r($db->errorInfo());
            }        
        }
}
         
    catch(PDOException $e) {
      die("Error!: " . $e->getMessage());
    }
            
?>
 
Ozzie PHP

Ozzie PHP

27/12/2022 18:02:01
Quote Anchor link
>> Je hebt groot gelijk. Het werkt. Mijn dag kan niet meer stuk!

Dat is leuk om te horen, graag gedaan!
 



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.