na toevoegen weergeven?
Pagina: « vorige 1 2 3 volgende »
Wat zit je met die query te doen? Half prepared statement, half onveilig prutswerk? Schrijf dit eerst eens om naar hoe prepared statements gebruikt dienen te worden, en als je toch bezig bent, haal die nutteloze variabelen die je toch niet gebruikt zoals $straat, $huisnr eens weg.
Wat bedoel je met half onveilig prutswerk?
Zo als ik mijn PDO SQL query heb neergezet, heb ik aanwijzingen en voorbeelden overgenomen c.q. geïnterpreteerd.
Maar misschien heb je een aanwijzing voor me?
Nu je het over de query hebt, bedacht ik me dat de variabele ook in de query gebruikt kunnen worden. Hiermee is het wel leesbaarder. verder lost het natuurlijk niets op.
Ik heb de query in de en wat omschrijvingen aangepast zie dit stukje code.
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
2
3
4
5
6
7
8
9
10
11
12
// als er dan geen fouten zijn ga na het opslaan naar index.php
if(!count($errors)) {
//gegevens opslaan in de database
$query01 = "INSERT INTO tabel_administraties (
administraties_naam, administraties_straat, administraties_huisnr, administraties_postcode, administraties_plaats, administraties_telefoonnr, administraties_kvk, administraties_btwnr, administraties_email
) VALUES (
'" . $naam . "', '" . $straat . "', '" . $huisnummer . "', '" . $postcode . "', '" . $plaats . "', '" . $telefoonnr. "', '" . $kvk . "', '" . $btwnr . "', '" . $website . "', '" . $email . "');";
$stmt = $dbh->prepare($query01);
$stmt->execute();
header('Location: index.php');
exit;
}[\code]
if(!count($errors)) {
//gegevens opslaan in de database
$query01 = "INSERT INTO tabel_administraties (
administraties_naam, administraties_straat, administraties_huisnr, administraties_postcode, administraties_plaats, administraties_telefoonnr, administraties_kvk, administraties_btwnr, administraties_email
) VALUES (
'" . $naam . "', '" . $straat . "', '" . $huisnummer . "', '" . $postcode . "', '" . $plaats . "', '" . $telefoonnr. "', '" . $kvk . "', '" . $btwnr . "', '" . $website . "', '" . $email . "');";
$stmt = $dbh->prepare($query01);
$stmt->execute();
header('Location: index.php');
exit;
}[\code]
http://php.net/manual/en/pdo.prepare.php Je hoort NOOIT de parameters in de query op te nemen als je prepared statements gebruikt.
Nee. Prepared statements scheiden hun parameters van de query, zoals in de manual voor prepare wordt beschreven: Daar zat dus de fout. Bedankt allemaal. Ben, je gaf net de laatste tip die ik nodig had om tot dit resultaat te komen.
Mogelijk dat ik de velden en variabele nog in een array kan zetten, om zo de code korter te maken, maar dit werkt en dat was het doel. Van de vraag.
Wat mijbetreft kan deze topic gesloten worden.
Voor de volledigheid de werkende code
administraties0.php
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
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
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
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
<?php
include("databaseopenen.php");
// functie die de formuliervelden valideert en foutmeldingen aanmaakt
function validate($naam, $email) {
$errors = array();
// validatieregels voor de naam
if(strlen($naam) < 1) {
$errors[] = 'U heeft geen naam ingevuld.';
}
// validatieregels voor het mailadres
if(!strlen($email)) :
$errors[] = 'U heeft geen email adres ingevuld.';
elseif(!filter_var($email, FILTER_VALIDATE_EMAIL)):
$errors[] = 'U heeft een ongeldig email adres ingevuld.';
endif;
// geef de array met foutmeldingen terug
return $errors;
}
// initialisatie van de variabelen (zorgt er voor dat variabelen altijd bestaan en een standaardwaarde hebben).
$naam = '';
$straat = '';
$huisnummer = '';
$postcode = '';
$plaats = '';
$telefoonnr = '';
$kvk = '';
$btwnr = '';
$website = '';
$email = '';
$errors = array();
// indien het formulier verstuurd is
if($_SERVER['REQUEST_METHOD'] == 'POST') {
// overschrijf de standaardwaarden voor de waarden die ge-POST zijn
$naam = $_POST["adm_naam"];
$straat = $_POST["adm_straat"];
$huisnummer = $_POST["adm_huisnummer"];
$postcode = $_POST["adm_postcode"];
$plaats = $_POST["adm_plaats"];
$telefoonnr = $_POST["adm_telefoonnr"];
$kvk = $_POST["adm_kvk"];
$btwnr = $_POST["adm_btwnr"];
$website = $_POST["adm_website"];
$email = $_POST["adm_email"];
// valideer de ingevulde gegevens
$errors = validate($naam, $email);
// als er dan geen fouten zijn ga na het opslaan naar index.php
if(!count($errors)) {
//gegevens opslaan in de database
$stmt = $dbh->prepare("INSERT INTO tabel_administraties (
administraties_naam, administraties_straat, administraties_huisnr, administraties_postcode, administraties_plaats, administraties_telefoonnr, administraties_kvk, administraties_btwnr, administraties_website, administraties_email
) VALUES (
:administraties_naam, :administraties_straat, :administraties_huisnr, :administraties_postcode, :administraties_plaats, :administraties_telefoonnr, :administraties_kvk, :administraties_btwnr, :administraties_website, :administraties_email
)");
$stmt->bindParam(':administraties_naam',$naam);
$stmt->bindParam(':administraties_straat',$straat);
$stmt->bindParam(':administraties_huisnr',$huisnummer);
$stmt->bindParam(':administraties_postcode',$postcode);
$stmt->bindParam(':administraties_plaats',$plaats);
$stmt->bindParam(':administraties_telefoonnr',$telefoonnr);
$stmt->bindParam(':administraties_kvk',$kvk);
$stmt->bindParam(':administraties_btwnr',$btwnr);
$stmt->bindParam(':administraties_website',$website);
$stmt->bindParam(':administraties_email',$email);
$stmt->execute();
header('Location: index.php');
exit;
}
}
?><!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>Geldboom administraties0</title>
<link rel="stylesheet" type="text/css" href="css/style.css">
</head>
<body>
<?php
if(count($errors)) {
echo '<ul id="errors">';
foreach($errors as $error) {
echo '<li>' . $error . '</li>';
}
echo '</ul>';
}
?>
<table class="empty">
<tr>
<td width="250" class="vak1">
</td>
<td class="programmadeel">
<form action="" method="post">
<p><B>Voer hier de administratie gegevens in.<B></p>
<table>
<tr><td>
<div class="pf">Naam : </div></td><td><input type="text" id="adm_naam" name="adm_naam" value="" tabindex="1" size="107">
</td></tr><tr><td>
<div class="pf">Straat + Huisnummer : </div></td><td><input type="text" id="adm_straat" name="adm_straat" value="" tabindex="2" size="90">
<input type="text" id="adm_huisnummer" name="adm_huisnummer" value="" tabindex="3" size="10">
</td></tr><tr><td>
<div class="pf">Postcode + Plaats : </div></td><td><input type="text" id="adm_postcode" name="adm_postcode" value="" tabindex="4" size="7">
<input type="text" id="adm_Plaats" name="adm_plaats" value="" tabindex="5" size="93">
</td></tr><tr><td>
<div class="pf">Telefoonnr : </div></td><td><input type="text" id="adm_telefoonnr" name="adm_telefoonnr" value="" tabindex="6" size="20">
</td></tr><tr><td>
<div class="pf">KvK : </div></td><td><input type="text" id="adm_kvk" name="adm_kvk" value="" tabindex="7" size="20">
</td></tr><tr><td>
<div class="pf">BTWnr : </div></td><td><input type="text" id="adm_btwnr" name="adm_btwnr" value="" tabindex="8" size="20">
</td></tr><tr><td>
<div class="pf">Website : </div></td><td><input type="text" id="adm_website" name="adm_website" value="" tabindex="9" size="107">
</td></tr><tr><td>
<div class="pf">e-mail : </div></td><td><input type="text" id="adm_email" name="adm_email" value="" tabindex="10" size="107">
</td></tr><tr><td>
<input type="reset" value="Velden legen" id="knop_reset" name="knop_reset" alt="Alle velden terug zetten in de default waarde" tabindex="11">
</td><td>
<input type="submit" value="Opslaan"; id="knop_opslaan" name="knop_opslaan" alt="Administratie opslaan" tabindex="12">
</table>
</form>
</td>
</tr>
</table>
</body>
</html>
include("databaseopenen.php");
// functie die de formuliervelden valideert en foutmeldingen aanmaakt
function validate($naam, $email) {
$errors = array();
// validatieregels voor de naam
if(strlen($naam) < 1) {
$errors[] = 'U heeft geen naam ingevuld.';
}
// validatieregels voor het mailadres
if(!strlen($email)) :
$errors[] = 'U heeft geen email adres ingevuld.';
elseif(!filter_var($email, FILTER_VALIDATE_EMAIL)):
$errors[] = 'U heeft een ongeldig email adres ingevuld.';
endif;
// geef de array met foutmeldingen terug
return $errors;
}
// initialisatie van de variabelen (zorgt er voor dat variabelen altijd bestaan en een standaardwaarde hebben).
$naam = '';
$straat = '';
$huisnummer = '';
$postcode = '';
$plaats = '';
$telefoonnr = '';
$kvk = '';
$btwnr = '';
$website = '';
$email = '';
$errors = array();
// indien het formulier verstuurd is
if($_SERVER['REQUEST_METHOD'] == 'POST') {
// overschrijf de standaardwaarden voor de waarden die ge-POST zijn
$naam = $_POST["adm_naam"];
$straat = $_POST["adm_straat"];
$huisnummer = $_POST["adm_huisnummer"];
$postcode = $_POST["adm_postcode"];
$plaats = $_POST["adm_plaats"];
$telefoonnr = $_POST["adm_telefoonnr"];
$kvk = $_POST["adm_kvk"];
$btwnr = $_POST["adm_btwnr"];
$website = $_POST["adm_website"];
$email = $_POST["adm_email"];
// valideer de ingevulde gegevens
$errors = validate($naam, $email);
// als er dan geen fouten zijn ga na het opslaan naar index.php
if(!count($errors)) {
//gegevens opslaan in de database
$stmt = $dbh->prepare("INSERT INTO tabel_administraties (
administraties_naam, administraties_straat, administraties_huisnr, administraties_postcode, administraties_plaats, administraties_telefoonnr, administraties_kvk, administraties_btwnr, administraties_website, administraties_email
) VALUES (
:administraties_naam, :administraties_straat, :administraties_huisnr, :administraties_postcode, :administraties_plaats, :administraties_telefoonnr, :administraties_kvk, :administraties_btwnr, :administraties_website, :administraties_email
)");
$stmt->bindParam(':administraties_naam',$naam);
$stmt->bindParam(':administraties_straat',$straat);
$stmt->bindParam(':administraties_huisnr',$huisnummer);
$stmt->bindParam(':administraties_postcode',$postcode);
$stmt->bindParam(':administraties_plaats',$plaats);
$stmt->bindParam(':administraties_telefoonnr',$telefoonnr);
$stmt->bindParam(':administraties_kvk',$kvk);
$stmt->bindParam(':administraties_btwnr',$btwnr);
$stmt->bindParam(':administraties_website',$website);
$stmt->bindParam(':administraties_email',$email);
$stmt->execute();
header('Location: index.php');
exit;
}
}
?><!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>Geldboom administraties0</title>
<link rel="stylesheet" type="text/css" href="css/style.css">
</head>
<body>
<?php
if(count($errors)) {
echo '<ul id="errors">';
foreach($errors as $error) {
echo '<li>' . $error . '</li>';
}
echo '</ul>';
}
?>
<table class="empty">
<tr>
<td width="250" class="vak1">
</td>
<td class="programmadeel">
<form action="" method="post">
<p><B>Voer hier de administratie gegevens in.<B></p>
<table>
<tr><td>
<div class="pf">Naam : </div></td><td><input type="text" id="adm_naam" name="adm_naam" value="" tabindex="1" size="107">
</td></tr><tr><td>
<div class="pf">Straat + Huisnummer : </div></td><td><input type="text" id="adm_straat" name="adm_straat" value="" tabindex="2" size="90">
<input type="text" id="adm_huisnummer" name="adm_huisnummer" value="" tabindex="3" size="10">
</td></tr><tr><td>
<div class="pf">Postcode + Plaats : </div></td><td><input type="text" id="adm_postcode" name="adm_postcode" value="" tabindex="4" size="7">
<input type="text" id="adm_Plaats" name="adm_plaats" value="" tabindex="5" size="93">
</td></tr><tr><td>
<div class="pf">Telefoonnr : </div></td><td><input type="text" id="adm_telefoonnr" name="adm_telefoonnr" value="" tabindex="6" size="20">
</td></tr><tr><td>
<div class="pf">KvK : </div></td><td><input type="text" id="adm_kvk" name="adm_kvk" value="" tabindex="7" size="20">
</td></tr><tr><td>
<div class="pf">BTWnr : </div></td><td><input type="text" id="adm_btwnr" name="adm_btwnr" value="" tabindex="8" size="20">
</td></tr><tr><td>
<div class="pf">Website : </div></td><td><input type="text" id="adm_website" name="adm_website" value="" tabindex="9" size="107">
</td></tr><tr><td>
<div class="pf">e-mail : </div></td><td><input type="text" id="adm_email" name="adm_email" value="" tabindex="10" size="107">
</td></tr><tr><td>
<input type="reset" value="Velden legen" id="knop_reset" name="knop_reset" alt="Alle velden terug zetten in de default waarde" tabindex="11">
</td><td>
<input type="submit" value="Opslaan"; id="knop_opslaan" name="knop_opslaan" alt="Administratie opslaan" tabindex="12">
</table>
</form>
</td>
</tr>
</table>
</body>
</html>
Code (php)
1
2
3
4
5
6
7
8
9
10
2
3
4
5
6
7
8
9
10
$naam = $_POST["adm_naam"];
$straat = $_POST["adm_straat"];
$huisnummer = $_POST["adm_huisnummer"];
$postcode = $_POST["adm_postcode"];
$plaats = $_POST["adm_plaats"];
$telefoonnr = $_POST["adm_telefoonnr"];
$kvk = $_POST["adm_kvk"];
$btwnr = $_POST["adm_btwnr"];
$website = $_POST["adm_website"];
$email = $_POST["adm_email"];
$straat = $_POST["adm_straat"];
$huisnummer = $_POST["adm_huisnummer"];
$postcode = $_POST["adm_postcode"];
$plaats = $_POST["adm_plaats"];
$telefoonnr = $_POST["adm_telefoonnr"];
$kvk = $_POST["adm_kvk"];
$btwnr = $_POST["adm_btwnr"];
$website = $_POST["adm_website"];
$email = $_POST["adm_email"];
Waarom zou je ze kopiëren?
Daar heb je gelijk in. Bedankt.
- Ariën - op 29/08/2017 23:18:27:
Dit zijn fratsen die niet echt nodig zijn:
Waarom zou je ze kopiëren?
Code (php)
1
2
3
4
5
6
7
8
9
10
2
3
4
5
6
7
8
9
10
$naam = $_POST["adm_naam"];
$straat = $_POST["adm_straat"];
$huisnummer = $_POST["adm_huisnummer"];
$postcode = $_POST["adm_postcode"];
$plaats = $_POST["adm_plaats"];
$telefoonnr = $_POST["adm_telefoonnr"];
$kvk = $_POST["adm_kvk"];
$btwnr = $_POST["adm_btwnr"];
$website = $_POST["adm_website"];
$email = $_POST["adm_email"];
$straat = $_POST["adm_straat"];
$huisnummer = $_POST["adm_huisnummer"];
$postcode = $_POST["adm_postcode"];
$plaats = $_POST["adm_plaats"];
$telefoonnr = $_POST["adm_telefoonnr"];
$kvk = $_POST["adm_kvk"];
$btwnr = $_POST["adm_btwnr"];
$website = $_POST["adm_website"];
$email = $_POST["adm_email"];
Waarom zou je ze kopiëren?
Tenzij je deze waarden weer in je formulier wilt weergeven (als de validatie mislukt). De $_POST variabelen zijn altijd onzeker (ontbreken zowiezo als de pagina in de GET modus wordt aangeroepen) dus zul je variabelen moeten initialiseren en voorwaardelijk overschrijven.
FOUT:
goed:
Code (php)
Ik vind jullie commentaar dan ook niet heel erg terecht (Ben en Aar) als je bedenkt dat je een gebruiksvriendelijk formulier wilt maken met validatie zoals 99,9% van alle formulieren zijn.
ALS je dat doet dan KUN je gelijk hebben. Als zou ik dat nooit zo doen. Maar TS doet dat helemaal niet, dus is dat een onterecht argument.
Het gaat er denk ik niet om wie er gelijk heeft. Het gaat er om dat iemand die nog niet zo thuis is in PHP graag een formulier wil maken dat WERKT. Ik schrijf zelf ook in OOP en gebruik een vooraanstaand framework maar als ik die code laat zien aan Frits dan zal hij er zeer waarschijnlijk niets mee gaan doen. Als je de ladder op moet klimmen moet je beginnen met de onderste sport toch?
Daar heb je een punt, maar ondertussen is het zinloos kopieren van variabelen zoals het woord al zegt zinloos.
Dat is natuurlijk zo waar als een koe.
Maar nu zit ik vast op waarschijnlijk iets kleins.
Ik kom op de pagina administraties0.php?id=1
Dan krijg ik alles goed in beeld en doe een mutatie in 1 of meer velden. en klik op opslaan.
Als ik dan in de database kijk, is er niets gebeurd.
Ikmoet dus ergens een foutje hebben. Maar waar?
Dit is de code van administraties0.php
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
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
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
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
<?php
include("databaseopenen.php");
// functie die de formuliervelden valideert en foutmeldingen aanmaakt
function validate($naam, $email) {
$errors = array();
// validatieregels voor de naam
if(strlen($naam) < 1) {
$errors[] = 'U heeft geen naam ingevuld.';
}
// validatieregels voor het mailadres
if(!strlen($email)) :
$errors[] = 'U heeft geen email adres ingevuld.';
elseif(!filter_var($email, FILTER_VALIDATE_EMAIL)):
$errors[] = 'U heeft een ongeldig email adres ingevuld.';
endif;
// geef de array met foutmeldingen terug
return $errors;
}
$errors = array();
if (isset($_GET["id"])) {
//Dit kan alleen uitgevoerd worden als id is ingegeven bij de url
$adm_id = intval($_GET['id']);
$stmt = $dbh->prepare("SELECT * FROM tabel_administraties WHERE administraties_id=" . $adm_id . " LIMIT 1");
$stmt->execute();
//PDO::FETCH_ASSOC: returns an array indexed by column name as returned in your result set
$record = $stmt->fetch(PDO::FETCH_ASSOC);
$adm_naam = $record['administraties_naam'];
$adm_straat = $record['administraties_straat'];
$adm_huisnummer = $record['administraties_huisnr'];
$adm_postcode = $record['administraties_postcode'];
$adm_plaats = $record['administraties_plaats'];
$adm_telefoonnr = $record['administraties_telefoonnr'];
$adm_kvk = $record['administraties_kvk'];
$adm_btwnr = $record['administraties_btwnr'];
$adm_website = $record['administraties_website'];
$adm_email = $record['administraties_email'];
} else {
//id is niet meegegeven bij de url dus is het een nieuw record
$adm_id = "nieuw";
$adm_naam = "";
$adm_straat = "";
$adm_huisnummer = "";
$adm_postcode = "";
$adm_plaats = "";
$adm_telefoonnr = "";
$adm_kvk = "";
$adm_btwnr= "" ;
$adm_website = "";
$adm_email = "";
}
// indien het formulier verstuurd is
if($_SERVER['REQUEST_METHOD'] == 'POST') {
// valideer de ingevulde gegevens
$errors = validate($_POST["adm_naam"], $_POST["adm_email"]);
// als er dan geen fouten zijn ga na het opslaan naar index.php
if(!count($errors)) {
if (isset($_GET["id"])) {
$query03 = "UPDATE tabel_administraties SET administraties_naam = :administraties_naam,
administraties_straat = :administraties_straat,
administraties_huisnr = :administraties_huisnr,
administraties_postcode = :administraties_postcode,
administraties_plaats = :administraties_plaats,
administraties_telefoonnr = :administraties_telefoonnr,
administraties_kvk = :administraties_kvk,
administraties_btwnr = :administraties_btwnr,
administraties_website = :administraties_website,
administraties_email = :administraties_email
WHERE administraties_id = :administraties_id";
$stmt->bindParam(':administraties_id',$adm_id);
$link1 = "index.php?id=" . $adm_id;
} else {
$query03 = "INSERT INTO tabel_administraties (
administraties_naam, administraties_straat, administraties_huisnr, administraties_postcode, administraties_plaats, administraties_telefoonnr, administraties_kvk, administraties_btwnr, administraties_website, administraties_email
) VALUES (
:administraties_naam, :administraties_straat, :administraties_huisnr, :administraties_postcode, :administraties_plaats, :administraties_telefoonnr, :administraties_kvk, :administraties_btwnr, :administraties_website, :administraties_email
)";
$link1 = "index.php";
}
//gegevens opslaan in de database
$stmt->bindParam(':administraties_naam',$_POST["adm_naam"]);
$stmt->bindParam(':administraties_straat',$_POST["adm_straat"]);
$stmt->bindParam(':administraties_huisnr',$_POST["adm_huisnummer"]);
$stmt->bindParam(':administraties_postcode',$_POST["adm_postcode"]);
$stmt->bindParam(':administraties_plaats',$_POST["adm_plaats"]);
$stmt->bindParam(':administraties_telefoonnr',$_POST["adm_telefoonnr"]);
$stmt->bindParam(':administraties_kvk',$_POST["adm_kvk"]);
$stmt->bindParam(':administraties_btwnr',$_POST["adm_btwnr"]);
$stmt->bindParam(':administraties_website',$_POST["adm_website"]);
$stmt->bindParam(':administraties_email',$_POST["adm_email"]);$stmt = $dbh->prepare($query03);
$stmt->execute();
//PDO::FETCH_ASSOC: returns an array indexed by column name as returned in your result set
$record = $stmt->fetch(PDO::FETCH_ASSOC);
header('Location: '.$link1);
exit;
}
}
?><!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>administraties0</title>
<link rel="stylesheet" type="text/css" href="css/style.css">
</head>
<body>
<?php
if(count($errors)) {
echo '<ul id="errors">';
foreach($errors as $error) {
echo '<li>' . $error . '</li>';
}
echo '</ul>';
echo '<pre>' . print_r($record, true) . '</pre>';
}
?>
<table class="empty">
<tr>
<td width="250" class="vak1">
</td>
<td class="programmadeel">
<form action="" method="post">
<h1><B>Administratie (<?php echo $adm_id; ?>)<B></h1>
<table>
<tr><td>
<div class="pf">Naam : </div></td><td><input type="text" id="adm_naam" name="adm_naam" tabindex="1" size="107" value="<?php echo $adm_naam; ?>">
</td></tr><tr><td>
<div class="pf">Straat + Huisnummer : </div></td><td><input type="text" id="adm_straat" name="adm_straat" tabindex="2" size="90" value="<?php echo $adm_straat; ?>">
<input type="text" id="adm_huisnummer" name="adm_huisnummer" tabindex="3" size="10" value="<?php echo $adm_huisnummer; ?>">
</td></tr><tr><td>
<div class="pf">Postcode + Plaats : </div></td><td><input type="text" id="adm_postcode" name="adm_postcode" tabindex="4" size="7" value="<?php echo $adm_postcode; ?>">
<input type="text" id="adm_Plaats" name="adm_plaats" tabindex="5" size="93" value="<?php echo $adm_plaats; ?>">
</td></tr><tr><td>
<div class="pf">Telefoonnr : </div></td><td><input type="text" id="adm_telefoonnr" name="adm_telefoonnr" tabindex="6" size="20" value="<?php echo $adm_telefoonnr; ?>">
</td></tr><tr><td>
<div class="pf">KvK : </div></td><td><input type="text" id="adm_kvk" name="adm_kvk" tabindex="7" size="20" value="<?php echo $adm_kvk; ?>">
</td></tr><tr><td>
<div class="pf">BTWnr : </div></td><td><input type="text" id="adm_btwnr" name="adm_btwnr" tabindex="8" size="20" value="<?php echo $adm_btwnr; ?>">
</td></tr><tr><td>
<div class="pf">Website : </div></td><td><input type="text" id="adm_website" name="adm_website" tabindex="9" size="107" value="<?php echo $adm_website; ?>">
</td></tr><tr><td>
<div class="pf">e-mail : </div></td><td><input type="text" id="adm_email" name="adm_email" tabindex="10" size="107" value="<?php echo $adm_email; ?>">
</td></tr><tr><td>
<input type="reset" value="Velden legen" id="knop_reset" name="knop_reset" alt="Alle velden terug zetten in de default waarde" tabindex="11">
</td><td>
<input type="submit" value="Opslaan"; id="knop_opslaan" name="knop_opslaan" alt="Administratie opslaan" tabindex="12">
</table>
</form>
</td>
</tr>
</table>
</body>
</html>
include("databaseopenen.php");
// functie die de formuliervelden valideert en foutmeldingen aanmaakt
function validate($naam, $email) {
$errors = array();
// validatieregels voor de naam
if(strlen($naam) < 1) {
$errors[] = 'U heeft geen naam ingevuld.';
}
// validatieregels voor het mailadres
if(!strlen($email)) :
$errors[] = 'U heeft geen email adres ingevuld.';
elseif(!filter_var($email, FILTER_VALIDATE_EMAIL)):
$errors[] = 'U heeft een ongeldig email adres ingevuld.';
endif;
// geef de array met foutmeldingen terug
return $errors;
}
$errors = array();
if (isset($_GET["id"])) {
//Dit kan alleen uitgevoerd worden als id is ingegeven bij de url
$adm_id = intval($_GET['id']);
$stmt = $dbh->prepare("SELECT * FROM tabel_administraties WHERE administraties_id=" . $adm_id . " LIMIT 1");
$stmt->execute();
//PDO::FETCH_ASSOC: returns an array indexed by column name as returned in your result set
$record = $stmt->fetch(PDO::FETCH_ASSOC);
$adm_naam = $record['administraties_naam'];
$adm_straat = $record['administraties_straat'];
$adm_huisnummer = $record['administraties_huisnr'];
$adm_postcode = $record['administraties_postcode'];
$adm_plaats = $record['administraties_plaats'];
$adm_telefoonnr = $record['administraties_telefoonnr'];
$adm_kvk = $record['administraties_kvk'];
$adm_btwnr = $record['administraties_btwnr'];
$adm_website = $record['administraties_website'];
$adm_email = $record['administraties_email'];
} else {
//id is niet meegegeven bij de url dus is het een nieuw record
$adm_id = "nieuw";
$adm_naam = "";
$adm_straat = "";
$adm_huisnummer = "";
$adm_postcode = "";
$adm_plaats = "";
$adm_telefoonnr = "";
$adm_kvk = "";
$adm_btwnr= "" ;
$adm_website = "";
$adm_email = "";
}
// indien het formulier verstuurd is
if($_SERVER['REQUEST_METHOD'] == 'POST') {
// valideer de ingevulde gegevens
$errors = validate($_POST["adm_naam"], $_POST["adm_email"]);
// als er dan geen fouten zijn ga na het opslaan naar index.php
if(!count($errors)) {
if (isset($_GET["id"])) {
$query03 = "UPDATE tabel_administraties SET administraties_naam = :administraties_naam,
administraties_straat = :administraties_straat,
administraties_huisnr = :administraties_huisnr,
administraties_postcode = :administraties_postcode,
administraties_plaats = :administraties_plaats,
administraties_telefoonnr = :administraties_telefoonnr,
administraties_kvk = :administraties_kvk,
administraties_btwnr = :administraties_btwnr,
administraties_website = :administraties_website,
administraties_email = :administraties_email
WHERE administraties_id = :administraties_id";
$stmt->bindParam(':administraties_id',$adm_id);
$link1 = "index.php?id=" . $adm_id;
} else {
$query03 = "INSERT INTO tabel_administraties (
administraties_naam, administraties_straat, administraties_huisnr, administraties_postcode, administraties_plaats, administraties_telefoonnr, administraties_kvk, administraties_btwnr, administraties_website, administraties_email
) VALUES (
:administraties_naam, :administraties_straat, :administraties_huisnr, :administraties_postcode, :administraties_plaats, :administraties_telefoonnr, :administraties_kvk, :administraties_btwnr, :administraties_website, :administraties_email
)";
$link1 = "index.php";
}
//gegevens opslaan in de database
$stmt->bindParam(':administraties_naam',$_POST["adm_naam"]);
$stmt->bindParam(':administraties_straat',$_POST["adm_straat"]);
$stmt->bindParam(':administraties_huisnr',$_POST["adm_huisnummer"]);
$stmt->bindParam(':administraties_postcode',$_POST["adm_postcode"]);
$stmt->bindParam(':administraties_plaats',$_POST["adm_plaats"]);
$stmt->bindParam(':administraties_telefoonnr',$_POST["adm_telefoonnr"]);
$stmt->bindParam(':administraties_kvk',$_POST["adm_kvk"]);
$stmt->bindParam(':administraties_btwnr',$_POST["adm_btwnr"]);
$stmt->bindParam(':administraties_website',$_POST["adm_website"]);
$stmt->bindParam(':administraties_email',$_POST["adm_email"]);$stmt = $dbh->prepare($query03);
$stmt->execute();
//PDO::FETCH_ASSOC: returns an array indexed by column name as returned in your result set
$record = $stmt->fetch(PDO::FETCH_ASSOC);
header('Location: '.$link1);
exit;
}
}
?><!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>administraties0</title>
<link rel="stylesheet" type="text/css" href="css/style.css">
</head>
<body>
<?php
if(count($errors)) {
echo '<ul id="errors">';
foreach($errors as $error) {
echo '<li>' . $error . '</li>';
}
echo '</ul>';
echo '<pre>' . print_r($record, true) . '</pre>';
}
?>
<table class="empty">
<tr>
<td width="250" class="vak1">
</td>
<td class="programmadeel">
<form action="" method="post">
<h1><B>Administratie (<?php echo $adm_id; ?>)<B></h1>
<table>
<tr><td>
<div class="pf">Naam : </div></td><td><input type="text" id="adm_naam" name="adm_naam" tabindex="1" size="107" value="<?php echo $adm_naam; ?>">
</td></tr><tr><td>
<div class="pf">Straat + Huisnummer : </div></td><td><input type="text" id="adm_straat" name="adm_straat" tabindex="2" size="90" value="<?php echo $adm_straat; ?>">
<input type="text" id="adm_huisnummer" name="adm_huisnummer" tabindex="3" size="10" value="<?php echo $adm_huisnummer; ?>">
</td></tr><tr><td>
<div class="pf">Postcode + Plaats : </div></td><td><input type="text" id="adm_postcode" name="adm_postcode" tabindex="4" size="7" value="<?php echo $adm_postcode; ?>">
<input type="text" id="adm_Plaats" name="adm_plaats" tabindex="5" size="93" value="<?php echo $adm_plaats; ?>">
</td></tr><tr><td>
<div class="pf">Telefoonnr : </div></td><td><input type="text" id="adm_telefoonnr" name="adm_telefoonnr" tabindex="6" size="20" value="<?php echo $adm_telefoonnr; ?>">
</td></tr><tr><td>
<div class="pf">KvK : </div></td><td><input type="text" id="adm_kvk" name="adm_kvk" tabindex="7" size="20" value="<?php echo $adm_kvk; ?>">
</td></tr><tr><td>
<div class="pf">BTWnr : </div></td><td><input type="text" id="adm_btwnr" name="adm_btwnr" tabindex="8" size="20" value="<?php echo $adm_btwnr; ?>">
</td></tr><tr><td>
<div class="pf">Website : </div></td><td><input type="text" id="adm_website" name="adm_website" tabindex="9" size="107" value="<?php echo $adm_website; ?>">
</td></tr><tr><td>
<div class="pf">e-mail : </div></td><td><input type="text" id="adm_email" name="adm_email" tabindex="10" size="107" value="<?php echo $adm_email; ?>">
</td></tr><tr><td>
<input type="reset" value="Velden legen" id="knop_reset" name="knop_reset" alt="Alle velden terug zetten in de default waarde" tabindex="11">
</td><td>
<input type="submit" value="Opslaan"; id="knop_opslaan" name="knop_opslaan" alt="Administratie opslaan" tabindex="12">
</table>
</form>
</td>
</tr>
</table>
</body>
</html>
Gewijzigd op 03/09/2017 21:15:56 door Frits van Leeuwen
2: Wat doe je op regel 97? Je preparet daar opnieuw, en correct me if I'm wrong, maar volgens mij verlies je dan al je binds.
3: Pas eens wat foutafhandeling toe, ga er niet klakkeloos vanuit dat queries slagen, maar controleer dat ook.
Als je het formulier post heb je dan nog wel een id in de url staan?
Ben van Velzen,
De Prepare zal ik verbeteren.
Regel 97 gaat over de e-mail in de bind plaatsen. Ik denk niet dat je die bedoelt. Welke bedoel je wel? En hoe kan ik dat testen?
Gaan queries waarvan je het antwoord al weet dan wel eens fout? Ik bedoel, als ik een record heb, en dat record aan de hand van de id oproep, dan gaat het toch niet mis?
-San The -,
Ik denk het wel, want als ik na het bewerken op opslaan klik, ga ik met header naar index.php en in de url staat dan ook het idnummer.
Maar misschien komt die daar op een andere manier. en heb je wel gelijk. Maar hoe test ik dat?
Maar ik snap wat je bedoelt. Ik probeer het uit.
Gewijzigd op 03/09/2017 16:03:32 door Frits van Leeuwen
Ja, alleen moet je de volgorde wel in acht nemen. Eerst prepare, dan bind. Niet andersom.
Maar helaas, Dat was niet de oplossing. Is er misschien iets waarmee ik eerst het updaten moet activeren?
Nee. Wat je wel moet doen is foutafhandeling inbouwen en eventuele foutmeldingen laten weergeven. Een eenvoudige manier om dit te doen is $dbh->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); te gebruiken in je code, en exceptions af te vangen.