Lege kolommen bij een update van een tabel in de database
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)
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
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());
}
?>
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)
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
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());
}
?>
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
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)
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
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());
}
?>
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
Het werkt dus prima nu, begrijp ik? :-)
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
Dat klopt, want het execute() commando ontbreekt daar. De query wordt niet uitgevoerd.
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)
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
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());
}
?>
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());
}
?>
Dat is leuk om te horen, graag gedaan!