database gegevens updaten
Ik wil een pagina maken waarmee ik gegevens uit een database kan aanpassen.
liefst zou ik hebben dat dit in 2 stappen gebeurt namelijk:
1) een pagina waarop ik dmv <select></select> een waarde selecteer die ik wil aanpassen en waarbij ik op 'volgende' moet klikken
2)een pagina waar de velden weergeven worden en waar ik dus de nieuwe waarden invul.
aangezien ik nog niet veel ervaring heb had ik graag de mening van ervaren php'ers gehoord. voornamelijk hoe jullie dan tewerk gaan qua script-logica?
alvast bedankt
mvg
stappen:
- in html een form maken
- database verbinding maken en database selecteren
- in php met $_GET of $_POST de waardes van het form in een SQL query zetten <-- je query is hier een INSERT
- als de query geslaagd is iets aan de gebruiker laten zien
1)
waardes staan in kolommen en rijen, dus je select selecteerd een rij of een kolom, waarschijnlijk een kolom want er zijn vaak zoveel rijen dat je select te groot wordt.
stappen:
- in html een form maken voor het selecteren van de kolom (select)
- database verbinding maken en database selecteren
- juiste rij ophalen ... hoe selecteer je deze rij ??
- in php met $_GET of $_POST de waardes van het form de select uitlezen om te kijken welke kolom je nodig hebt.
- de waarde van deze kolom staat in een array van de rij die je net hebt opgehaald (even om het simpel te houden haal je een hele rij op)
- als je een waarde gevonden hebt een ander form maken waarbij je deze waarde bij <input text="" value=" hier moet deze waarde komen " ...
Dan zit je dus op de "tweede" pagina en dan weer opnieuw:
- database verbinding maken en database selecteren
- in php met $_GET of $_POST de waardes van het form in een SQL query zetten <-- je query is hier een UPDATE
- als de query geslaagd is iets aan de gebruiker laten zien
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
<h2>Artikel wijzigen</h2>
<form action='' method='post'>
<table>
<tr><td>Selecteer een artikel:</td><td><select name='artikel'>
<option value=''>Kies een artikel</option>
<?php
include('dbconnect.php');
$sql_sel_art = "SELECT artikel_id, naam FROM artikel";
$res_sel_art = mysql_query($sql_sel_art);
while ($rij = mysql_fetch_assoc($res_sel_art)) {
echo "<option value='". $rij['artikel_id'] ."'>". $rij['naam'] ."</option>\n";
}
mysql_close($db);
?>
</select></td></tr>
<tr><td></td><td><input type='submit' name='next' value='volgende' /></td></tr>
</table>
</form>
<form action='' method='post'>
<table>
<tr><td>Selecteer een artikel:</td><td><select name='artikel'>
<option value=''>Kies een artikel</option>
<?php
include('dbconnect.php');
$sql_sel_art = "SELECT artikel_id, naam FROM artikel";
$res_sel_art = mysql_query($sql_sel_art);
while ($rij = mysql_fetch_assoc($res_sel_art)) {
echo "<option value='". $rij['artikel_id'] ."'>". $rij['naam'] ."</option>\n";
}
mysql_close($db);
?>
</select></td></tr>
<tr><td></td><td><input type='submit' name='next' value='volgende' /></td></tr>
</table>
</form>
daarna zit ik te denken aan een if .. else constructie zoals hieronder maar dit blijkt niet te werken.
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
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
<?php
if ($_SERVER['REQUEST_METHOD'] == 'post' && isset($_POST['next'])) {
include('dbconnect.php');
$sql_sel_art = "SELECT artikel_id, naam, omschrijving, prijs FROM artikel";
$res_sel_art = mysql_query($sql_sel_art);
$rij = mysql_fetch_assoc($res_sel_art);
?>
<h2>Artikel wijzigen</h2>
<form action='' method='post'>
<table>
<tr><td>Artikelnaam:</td><td><input type="text" name="artikelnaam" value='<?php echo $rij['naam']?>' /></td></tr>
<tr><td>Categorie:</td><td><select name='categorie'>
<!--<option disabled='disabled'>kies een categorie</option>-->
<option value=''>kies een categorie</option>
<?php
include("dbconnect.php");
$sql = "SELECT categorie_id, naam FROM categorie";
$result = mysql_query($sql);
while ($rij2 = mysql_fetch_assoc($result)) {
echo "<option value='" . $rij2['categorie_id'] ."'> ". $rij2['naam'] ."</option>\n";
}
mysql_close($db);
?>
</select></td></tr>
<tr><td>Beschrijving:</td><td><textarea name="artikelbeschrijving" cols="30" rows="4"><?php echo $rij['omschrijving'] ?></textarea></td></tr>
<tr><td>Prijs:</td><td><input type="text" name="artikelprijs" value='<?php echo $rij['prijs'] ?>' /></td></tr>
<tr><td></td><td><input type="submit" name="artikelwijzigen" value="wijzig" /><input type="reset" value="reset"/></td></tr>
</form>
</table>
<?php
} elseif ($_SERVER['REQUEST_METHOD'] == '' && isset($_POST['artikelwijzigen'])) {
} else {
?>
if ($_SERVER['REQUEST_METHOD'] == 'post' && isset($_POST['next'])) {
include('dbconnect.php');
$sql_sel_art = "SELECT artikel_id, naam, omschrijving, prijs FROM artikel";
$res_sel_art = mysql_query($sql_sel_art);
$rij = mysql_fetch_assoc($res_sel_art);
?>
<h2>Artikel wijzigen</h2>
<form action='' method='post'>
<table>
<tr><td>Artikelnaam:</td><td><input type="text" name="artikelnaam" value='<?php echo $rij['naam']?>' /></td></tr>
<tr><td>Categorie:</td><td><select name='categorie'>
<!--<option disabled='disabled'>kies een categorie</option>-->
<option value=''>kies een categorie</option>
<?php
include("dbconnect.php");
$sql = "SELECT categorie_id, naam FROM categorie";
$result = mysql_query($sql);
while ($rij2 = mysql_fetch_assoc($result)) {
echo "<option value='" . $rij2['categorie_id'] ."'> ". $rij2['naam'] ."</option>\n";
}
mysql_close($db);
?>
</select></td></tr>
<tr><td>Beschrijving:</td><td><textarea name="artikelbeschrijving" cols="30" rows="4"><?php echo $rij['omschrijving'] ?></textarea></td></tr>
<tr><td>Prijs:</td><td><input type="text" name="artikelprijs" value='<?php echo $rij['prijs'] ?>' /></td></tr>
<tr><td></td><td><input type="submit" name="artikelwijzigen" value="wijzig" /><input type="reset" value="reset"/></td></tr>
</form>
</table>
<?php
} elseif ($_SERVER['REQUEST_METHOD'] == '' && isset($_POST['artikelwijzigen'])) {
} else {
?>
eigenlijk weet ik niet of ik qua logica goed bezig ben of niet?
Gewijzigd op 21/09/2012 18:05:12 door ch th
Als je forms tussen if ($_SERVER['REQUEST_METHOD'] == 'post' ... { }
zetten zal er dus voor zorgen dat er nooit een form komt
en daarna zou de gebruiker op volgende moeten klikken om in het gedeelte te komen waar de huidige waarden van het artikel worden ingevuld en waar de gebruiker dus ook de mogelijkheid krijgt om deze waarden aan te passen.
de if else met de SERVER_REQUEST heb ik zo gedaan zodat ik in één en dezelfde pagina/bestand kan blijven. (is dit verstandig/efficiënt?)
EDIT: ik heb even alles wat ik tot nu toe heb gepost op de manier waarop ik denk dat het mogelijk is
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
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
<?php
if ($_SERVER['REQUEST_METHOD'] == 'post' && isset($_POST['next'])) {
// EERSTE FORMULIER (SELECTEREN ARTIKEL) IS INGEVULD EN ER IS OP SUBMIT GEKLIKT
include('dbconnect.php');
$sql_sel_art = "SELECT artikel_id, naam, omschrijving, prijs FROM artikel";
$res_sel_art = mysql_query($sql_sel_art);
$rij = mysql_fetch_assoc($res_sel_art);
?>
<h2>Artikel wijzigen</h2>
<form action='' method='post'>
<table>
<tr><td>Artikelnaam:</td><td><input type="text" name="artikelnaam" value='<?php echo $rij['naam']?>' /></td></tr>
<tr><td>Categorie:</td><td><select name='categorie'>
<!--<option disabled='disabled'>kies een categorie</option>-->
<option value=''>kies een categorie</option>
<?php
include("dbconnect.php");
$sql = "SELECT categorie_id, naam FROM categorie";
$result = mysql_query($sql);
while ($rij2 = mysql_fetch_assoc($result)) {
echo "<option value='" . $rij2['categorie_id'] ."'> ". $rij2['naam'] ."</option>\n";
}
mysql_close($db);
?>
</select></td></tr>
<tr><td>Beschrijving:</td><td><textarea name="artikelbeschrijving" cols="30" rows="4"><?php echo $rij['omschrijving'] ?></textarea></td></tr>
<tr><td>Prijs:</td><td><input type="text" name="artikelprijs" value='<?php echo $rij['prijs'] ?>' /></td></tr>
<tr><td></td><td><input type="submit" name="artikelwijzigen" value="wijzig" /><input type="reset" value="reset"/></td></tr>
</form>
</table>
<?php
} elseif ($_SERVER['REQUEST_METHOD'] == '' && isset($_POST['artikelwijzigen'])) {
// HIER WORDT VERWERKT WANNEER MEN BIJ HET 2e FORMULIER DE WIJZIGINGEN HEEFT AANGEBRACHT EN OP SUBMIT GEKLIKT WORDT
} else { //ER IS NOG GEEN FORMULIER VERZONDEN
?>
<h2>Artikel wijzigen</h2>
<form action='' method='post'>
<table>
<tr><td>Selecteer een artikel:</td><td><select name='artikel'>
<option value=''>Kies een artikel</option>
<?php
include('dbconnect.php');
$sql_sel_art = "SELECT artikel_id, naam FROM artikel";
$res_sel_art = mysql_query($sql_sel_art);
while ($rij = mysql_fetch_assoc($res_sel_art)) {
echo "<option value='". $rij['artikel_id'] ."'>". $rij['naam'] ."</option>\n";
}
mysql_close($db);
?>
</select></td></tr>
<tr><td></td><td><input type='submit' name='next' value='volgende' /></td></tr>
</table>
</form>
<?php
}
?>
if ($_SERVER['REQUEST_METHOD'] == 'post' && isset($_POST['next'])) {
// EERSTE FORMULIER (SELECTEREN ARTIKEL) IS INGEVULD EN ER IS OP SUBMIT GEKLIKT
include('dbconnect.php');
$sql_sel_art = "SELECT artikel_id, naam, omschrijving, prijs FROM artikel";
$res_sel_art = mysql_query($sql_sel_art);
$rij = mysql_fetch_assoc($res_sel_art);
?>
<h2>Artikel wijzigen</h2>
<form action='' method='post'>
<table>
<tr><td>Artikelnaam:</td><td><input type="text" name="artikelnaam" value='<?php echo $rij['naam']?>' /></td></tr>
<tr><td>Categorie:</td><td><select name='categorie'>
<!--<option disabled='disabled'>kies een categorie</option>-->
<option value=''>kies een categorie</option>
<?php
include("dbconnect.php");
$sql = "SELECT categorie_id, naam FROM categorie";
$result = mysql_query($sql);
while ($rij2 = mysql_fetch_assoc($result)) {
echo "<option value='" . $rij2['categorie_id'] ."'> ". $rij2['naam'] ."</option>\n";
}
mysql_close($db);
?>
</select></td></tr>
<tr><td>Beschrijving:</td><td><textarea name="artikelbeschrijving" cols="30" rows="4"><?php echo $rij['omschrijving'] ?></textarea></td></tr>
<tr><td>Prijs:</td><td><input type="text" name="artikelprijs" value='<?php echo $rij['prijs'] ?>' /></td></tr>
<tr><td></td><td><input type="submit" name="artikelwijzigen" value="wijzig" /><input type="reset" value="reset"/></td></tr>
</form>
</table>
<?php
} elseif ($_SERVER['REQUEST_METHOD'] == '' && isset($_POST['artikelwijzigen'])) {
// HIER WORDT VERWERKT WANNEER MEN BIJ HET 2e FORMULIER DE WIJZIGINGEN HEEFT AANGEBRACHT EN OP SUBMIT GEKLIKT WORDT
} else { //ER IS NOG GEEN FORMULIER VERZONDEN
?>
<h2>Artikel wijzigen</h2>
<form action='' method='post'>
<table>
<tr><td>Selecteer een artikel:</td><td><select name='artikel'>
<option value=''>Kies een artikel</option>
<?php
include('dbconnect.php');
$sql_sel_art = "SELECT artikel_id, naam FROM artikel";
$res_sel_art = mysql_query($sql_sel_art);
while ($rij = mysql_fetch_assoc($res_sel_art)) {
echo "<option value='". $rij['artikel_id'] ."'>". $rij['naam'] ."</option>\n";
}
mysql_close($db);
?>
</select></td></tr>
<tr><td></td><td><input type='submit' name='next' value='volgende' /></td></tr>
</table>
</form>
<?php
}
?>
Gewijzigd op 21/09/2012 18:17:53 door ch th
en dan een "tweede" pagina ..
probeer dat uit te werken en als je nog een concrete vraag hebt post maar
kleine hint: als $_POST['artikel'] aanwezig is dan werkte het eerste form. En als je naar dezelfde pagina (bijna altijd dan hetzelfde bestand) dan zorg er voor dat je in het tweede form geen name="artikel" zet. Zo kan je onderscheiden of je in het eerste of tweede zit.
telkens als ik een artikel selecteer en op volgende klik, laadt hij terug het eerste formulier.
wat zou hier de oorzaak van kunnen zijn?
Waarom ''? Moet dat niet 'post' zijn?
goed gezien ;) thnx
voorlopig kan ik al even verder.
errors:
Notice: Undefined index: artikel in ..\artikelwijzigen.php on line 92
Warning: mysql_fetch_assoc() expects parameter 1 to be resource, boolean given in ..\artikelwijzigen.php on line 94
Notice: Undefined variable: rij in ..\artikelwijzigen.php on line 101
Notice: Undefined variable: rij in ..\artikelwijzigen.php on line 105
EDIT: ik heb er even de code bijgezet
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
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
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
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
<?php
if ($_SERVER['REQUEST_METHOD'] == 'POST' && isset($_POST['next'])) { // eerste formulier gesubmit
include('dbconnect.php');
$error = array();
if (!isset($_POST['artikel']) || trim($_POST['artikel']) == '') {
$error['artikel'] = "Selecteer een artikel";
}
if (count($error) == 0) {
$sql_sel_art = "SELECT artikel_id, naam, omschrijving, prijs FROM artikel WHERE artikel_id='". $_POST['artikel'] ."'";
$res_sel_art = mysql_query($sql_sel_art);
$rij = mysql_fetch_assoc($res_sel_art);
?>
<h2>Artikel wijzigen</h2>
<form action='' method='post'>
<table>
<tr><td>Artikelnaam:</td><td><input type="text" name="artikelnaam" value='<?php echo $rij['naam']?>' /></td></tr>
<tr><td>Categorie:</td><td><select name='categorie'>
<!--<option disabled='disabled'>kies een categorie</option>-->
<option value=''>kies een categorie</option>
<?php
include("dbconnect.php");
$sql = "SELECT categorie_id, naam FROM categorie";
$result = mysql_query($sql);
while ($rij2 = mysql_fetch_assoc($result)) {
echo "<option value='" . $rij2['categorie_id'] ."'> ". $rij2['naam'] ."</option>\n";
}
mysql_close($db);
?>
</select></td></tr>
<tr><td>Beschrijving:</td><td><textarea name="artikelbeschrijving" cols="30" rows="4"><?php echo $rij['omschrijving'] ?></textarea></td></tr>
<tr><td>Prijs:</td><td><input type="text" name="artikelprijs" value='<?php echo $rij['prijs'] ?>' /></td></tr>
<tr><td></td><td><input type="submit" name="artikelwijzigen" value="wijzig" /><input type="reset" value="reset"/></td></tr>
</form>
</table>
<?php
} else {
?>
<h2>Artikel wijzigen</h2>
<form action='' method='post'>
<table>
<tr><td>Selecteer een artikel:</td><td><select name='artikel'>
<option value=''>Kies een artikel</option>
<?php
include('dbconnect.php');
$sql_sel_art = "SELECT artikel_id, naam FROM artikel";
$res_sel_art = mysql_query($sql_sel_art);
while ($rij = mysql_fetch_assoc($res_sel_art)) {
echo "<option value='". $rij['artikel_id'] ."'>". $rij['naam'] ."</option>\n";
}
mysql_close($db);
?>
</select></td></tr>
<?php
if (isset($error['artikel'])) {
echo "<tr><td></td><td class='error'>". $error['artikel'] ."</td></tr>";
}
?>
<tr><td></td><td><input type='submit' name='next' value='volgende' /></td></tr>
</table>
</form>
<?php
}
} elseif ($_SERVER['REQUEST_METHOD'] == 'POST' && isset($_POST['artikelwijzigen'])) { //submit 2e formulier
if (!isset($_POST['artikelnaam']) || trim($_POST['artikelnaam']) == '') {
$error['artikelnaam'] = "Vul een artikelnaam in.";
}
if (!isset($_POST['categorie']) || $_POST['categorie'] == '') {
$error['categorie'] = "Selecteer een categorie.";
}
if (!isset($_POST['artikelbeschrijving']) || trim($_POST['artikelbeschrijving']) == '' ) {
$error['artikelbeschrijving'] = "Vul een beschrijving in.";
}
if (!isset($_POST['artikelprijs']) || trim($_POST['artikelprijs']) == '' || !is_numeric($_POST['artikelprijs'])) {
$error['artikelprijs'] = "Vul een geldige prijs in.";
}
if (count($error) == 0) {
$message = array();
$sql_sel_cpa_id = "SELECT cpa_id FROM cpa WHERE artikel_id='". $_POST['artikel'] ."'";
$res_sel_cpa_id = mysql_query($sql_sel_cpa_id);
$cpa = mysql_fetch_assoc($res_sel_cpa_id);
$sql_upd_art = "UPDATE artikel SET
naam='". mysql_real_escape_string(trim($_POST['artikelnaam'])) ."',
omschrijving='". mysql_real_escape_string(trim($_POST['artikelbeschrijving'])) ."',
prijs='". mysql_real_escape_string(trim($_POST['artikelprijs'])) ."'
WHERE artikel_id='". $rij['artikel_id'] ."'";
$sql_upd_cpa = "UPDATE cpa SET
artikel_id='". $rij['artikel_id'] ."',
categorie_id='". $_POST['categorie'] ."'
WHERE cpa_id='". $cpa['cpa_id'] ."'";
if (mysql_query($sql_upd_art) && mysql_query($sql_upd_cpa)) {
$message['succes'] = "Het artikel is succesvol gewijzigd.";
echo "<span class='succes'>". $message['succes'] ."</span>";
header('REFRESH:3;');
} else {
$message['error'] = "Het artikel kon niet gewijzigd worden.";
echo "<span class='error'>". $message['error'] ."</span>";
}
} else {
?>
<h2>Artikel toevoegen</h2>
<table>
<form action="" method="post">
<tr><td>Artikelnaam:</td><td><input type="text" name="artikelnaam" value="<?php if(isset($_POST['artikelnaam'])) { echo $_POST['artikelnaam'];}?>" /></td></tr>
<?php
if (isset($error['artikelnaam'])) {
echo "<tr><td></td><td class='error'>". $error['artikelnaam'] ."</td></tr>";
}
?>
<tr><td>Categorie:</td><td><select name='categorie'>
<!--<option disabled='disabled'>kies een categorie</option>-->
<option value=''>kies een categorie</option>
<?php
include("dbconnect.php");
$sql = "SELECT categorie_id, naam FROM categorie";
$result = mysql_query($sql);
while ($rij = mysql_fetch_assoc($result)) {
echo "<option value='" . $rij['categorie_id'] ."'> ". $rij['naam'] ."</option>\n";
}
mysql_close($db);
?>
</select></td></tr>
<?php
if (isset($error['categorie'])) {
echo "<tr><td></td><td class='error'>". $error['categorie'] ."</td></tr>";
}
?>
<tr><td>Beschrijving:</td><td><textarea name="artikelbeschrijving" cols="30" rows="4"><?php if(isset($_POST['artikelbeschrijving'])) { echo $_POST['artikelbeschrijving'];}?> </textarea></td></tr>
<?php
if (isset($error['artikelbeschrijving'])) {
echo "<tr><td></td><td class='error'>". $error['artikelbeschrijving'] ."</td></tr>";
}
?>
<tr><td>Prijs:</td><td><input type="text" name="artikelprijs" value="<?php if(isset($_POST['artikelprijs'])) { echo $_POST['artikelprijs'];}?>" /></td></tr>
<?php
if (isset($error['artikelprijs'])) {
echo "<tr><td></td><td class='error'>". $error['artikelprijs'] ."</td></tr>";
}
?>
<tr><td></td><td><input type="submit" name="toevoegen" value="toevoegen" /><input type="reset" value="reset"/></td></tr>
</form>
</table>
<?php
}
} else { //er is nog niet gesubmit
?>
<h2>Artikel wijzigen</h2>
<form action='' method='post'>
<table>
<tr><td>Selecteer een artikel:</td><td><select name='artikel'>
<option value=''>Kies een artikel</option>
<?php
include('dbconnect.php');
$sql_sel_art = "SELECT artikel_id, naam FROM artikel";
$res_sel_art = mysql_query($sql_sel_art);
while ($rij = mysql_fetch_assoc($res_sel_art)) {
echo "<option value='". $rij['artikel_id'] ."'>". $rij['naam'] ."</option>\n";
}
mysql_close($db);
?>
</select></td></tr>
<tr><td></td><td><input type='submit' name='next' value='volgende' /></td></tr>
</table>
</form>
<?php
}
?>
if ($_SERVER['REQUEST_METHOD'] == 'POST' && isset($_POST['next'])) { // eerste formulier gesubmit
include('dbconnect.php');
$error = array();
if (!isset($_POST['artikel']) || trim($_POST['artikel']) == '') {
$error['artikel'] = "Selecteer een artikel";
}
if (count($error) == 0) {
$sql_sel_art = "SELECT artikel_id, naam, omschrijving, prijs FROM artikel WHERE artikel_id='". $_POST['artikel'] ."'";
$res_sel_art = mysql_query($sql_sel_art);
$rij = mysql_fetch_assoc($res_sel_art);
?>
<h2>Artikel wijzigen</h2>
<form action='' method='post'>
<table>
<tr><td>Artikelnaam:</td><td><input type="text" name="artikelnaam" value='<?php echo $rij['naam']?>' /></td></tr>
<tr><td>Categorie:</td><td><select name='categorie'>
<!--<option disabled='disabled'>kies een categorie</option>-->
<option value=''>kies een categorie</option>
<?php
include("dbconnect.php");
$sql = "SELECT categorie_id, naam FROM categorie";
$result = mysql_query($sql);
while ($rij2 = mysql_fetch_assoc($result)) {
echo "<option value='" . $rij2['categorie_id'] ."'> ". $rij2['naam'] ."</option>\n";
}
mysql_close($db);
?>
</select></td></tr>
<tr><td>Beschrijving:</td><td><textarea name="artikelbeschrijving" cols="30" rows="4"><?php echo $rij['omschrijving'] ?></textarea></td></tr>
<tr><td>Prijs:</td><td><input type="text" name="artikelprijs" value='<?php echo $rij['prijs'] ?>' /></td></tr>
<tr><td></td><td><input type="submit" name="artikelwijzigen" value="wijzig" /><input type="reset" value="reset"/></td></tr>
</form>
</table>
<?php
} else {
?>
<h2>Artikel wijzigen</h2>
<form action='' method='post'>
<table>
<tr><td>Selecteer een artikel:</td><td><select name='artikel'>
<option value=''>Kies een artikel</option>
<?php
include('dbconnect.php');
$sql_sel_art = "SELECT artikel_id, naam FROM artikel";
$res_sel_art = mysql_query($sql_sel_art);
while ($rij = mysql_fetch_assoc($res_sel_art)) {
echo "<option value='". $rij['artikel_id'] ."'>". $rij['naam'] ."</option>\n";
}
mysql_close($db);
?>
</select></td></tr>
<?php
if (isset($error['artikel'])) {
echo "<tr><td></td><td class='error'>". $error['artikel'] ."</td></tr>";
}
?>
<tr><td></td><td><input type='submit' name='next' value='volgende' /></td></tr>
</table>
</form>
<?php
}
} elseif ($_SERVER['REQUEST_METHOD'] == 'POST' && isset($_POST['artikelwijzigen'])) { //submit 2e formulier
if (!isset($_POST['artikelnaam']) || trim($_POST['artikelnaam']) == '') {
$error['artikelnaam'] = "Vul een artikelnaam in.";
}
if (!isset($_POST['categorie']) || $_POST['categorie'] == '') {
$error['categorie'] = "Selecteer een categorie.";
}
if (!isset($_POST['artikelbeschrijving']) || trim($_POST['artikelbeschrijving']) == '' ) {
$error['artikelbeschrijving'] = "Vul een beschrijving in.";
}
if (!isset($_POST['artikelprijs']) || trim($_POST['artikelprijs']) == '' || !is_numeric($_POST['artikelprijs'])) {
$error['artikelprijs'] = "Vul een geldige prijs in.";
}
if (count($error) == 0) {
$message = array();
$sql_sel_cpa_id = "SELECT cpa_id FROM cpa WHERE artikel_id='". $_POST['artikel'] ."'";
$res_sel_cpa_id = mysql_query($sql_sel_cpa_id);
$cpa = mysql_fetch_assoc($res_sel_cpa_id);
$sql_upd_art = "UPDATE artikel SET
naam='". mysql_real_escape_string(trim($_POST['artikelnaam'])) ."',
omschrijving='". mysql_real_escape_string(trim($_POST['artikelbeschrijving'])) ."',
prijs='". mysql_real_escape_string(trim($_POST['artikelprijs'])) ."'
WHERE artikel_id='". $rij['artikel_id'] ."'";
$sql_upd_cpa = "UPDATE cpa SET
artikel_id='". $rij['artikel_id'] ."',
categorie_id='". $_POST['categorie'] ."'
WHERE cpa_id='". $cpa['cpa_id'] ."'";
if (mysql_query($sql_upd_art) && mysql_query($sql_upd_cpa)) {
$message['succes'] = "Het artikel is succesvol gewijzigd.";
echo "<span class='succes'>". $message['succes'] ."</span>";
header('REFRESH:3;');
} else {
$message['error'] = "Het artikel kon niet gewijzigd worden.";
echo "<span class='error'>". $message['error'] ."</span>";
}
} else {
?>
<h2>Artikel toevoegen</h2>
<table>
<form action="" method="post">
<tr><td>Artikelnaam:</td><td><input type="text" name="artikelnaam" value="<?php if(isset($_POST['artikelnaam'])) { echo $_POST['artikelnaam'];}?>" /></td></tr>
<?php
if (isset($error['artikelnaam'])) {
echo "<tr><td></td><td class='error'>". $error['artikelnaam'] ."</td></tr>";
}
?>
<tr><td>Categorie:</td><td><select name='categorie'>
<!--<option disabled='disabled'>kies een categorie</option>-->
<option value=''>kies een categorie</option>
<?php
include("dbconnect.php");
$sql = "SELECT categorie_id, naam FROM categorie";
$result = mysql_query($sql);
while ($rij = mysql_fetch_assoc($result)) {
echo "<option value='" . $rij['categorie_id'] ."'> ". $rij['naam'] ."</option>\n";
}
mysql_close($db);
?>
</select></td></tr>
<?php
if (isset($error['categorie'])) {
echo "<tr><td></td><td class='error'>". $error['categorie'] ."</td></tr>";
}
?>
<tr><td>Beschrijving:</td><td><textarea name="artikelbeschrijving" cols="30" rows="4"><?php if(isset($_POST['artikelbeschrijving'])) { echo $_POST['artikelbeschrijving'];}?> </textarea></td></tr>
<?php
if (isset($error['artikelbeschrijving'])) {
echo "<tr><td></td><td class='error'>". $error['artikelbeschrijving'] ."</td></tr>";
}
?>
<tr><td>Prijs:</td><td><input type="text" name="artikelprijs" value="<?php if(isset($_POST['artikelprijs'])) { echo $_POST['artikelprijs'];}?>" /></td></tr>
<?php
if (isset($error['artikelprijs'])) {
echo "<tr><td></td><td class='error'>". $error['artikelprijs'] ."</td></tr>";
}
?>
<tr><td></td><td><input type="submit" name="toevoegen" value="toevoegen" /><input type="reset" value="reset"/></td></tr>
</form>
</table>
<?php
}
} else { //er is nog niet gesubmit
?>
<h2>Artikel wijzigen</h2>
<form action='' method='post'>
<table>
<tr><td>Selecteer een artikel:</td><td><select name='artikel'>
<option value=''>Kies een artikel</option>
<?php
include('dbconnect.php');
$sql_sel_art = "SELECT artikel_id, naam FROM artikel";
$res_sel_art = mysql_query($sql_sel_art);
while ($rij = mysql_fetch_assoc($res_sel_art)) {
echo "<option value='". $rij['artikel_id'] ."'>". $rij['naam'] ."</option>\n";
}
mysql_close($db);
?>
</select></td></tr>
<tr><td></td><td><input type='submit' name='next' value='volgende' /></td></tr>
</table>
</form>
<?php
}
?>
Gewijzigd op 23/09/2012 10:36:10 door ch th
nu krijg ik enkel nog de 2 onderstaande errors. ik zou niet weten hoe dit komt dus heb ik even het stukje code geplaatst waar de mysql_fetch_assoc 's in staan.
Warning: mysql_fetch_assoc() expects parameter 1 to be resource, boolean given in ..\artikelwijzigen.php on line 96
Warning: mysql_fetch_assoc() expects parameter 1 to be resource, boolean given in ..artikelwijzigen.php on line 107
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
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
<?php
if (count($error) == 0) {
$message = array();
$sql_sel_art = "SELECT artikel_id, naam, omschrijving, prijs FROM artikel WHERE artikel_id='". $_POST['artikel'] ."'";
$res_sel_art = mysql_query($sql_sel_art);
$rij = mysql_fetch_assoc($res_sel_art);
$sql_upd_art = "UPDATE artikel SET
naam='". mysql_real_escape_string(trim($_POST['artikelnaam'])) ."',
omschrijving='". mysql_real_escape_string(trim($_POST['artikelbeschrijving'])) ."',
prijs='". mysql_real_escape_string(trim($_POST['artikelprijs'])) ."'
WHERE artikel_id='". $rij['artikel_id'] ."'";
$sql_sel_cpa_id = "SELECT cpa_id FROM cpa WHERE artikel_id='". $_POST['artikel'] ."'";
$res_sel_cpa_id = mysql_query($sql_sel_cpa_id);
$cpa = mysql_fetch_assoc($res_sel_cpa_id);
$sql_upd_cpa = "UPDATE cpa SET
artikel_id='". $rij['artikel_id'] ."',
categorie_id='". $_POST['categorie'] ."'
WHERE cpa_id='". $cpa['cpa_id'] ."'";
if (mysql_query($sql_upd_art) && mysql_query($sql_upd_cpa)) {
$message['succes'] = "Het artikel is succesvol gewijzigd.";
echo "<span class='succes'>". $message['succes'] ."</span>";
header('REFRESH:3;');
} else {
$message['error'] = "Het artikel kon niet gewijzigd worden.";
echo "<span class='error'>". $message['error'] ."</span>";
}
?>
if (count($error) == 0) {
$message = array();
$sql_sel_art = "SELECT artikel_id, naam, omschrijving, prijs FROM artikel WHERE artikel_id='". $_POST['artikel'] ."'";
$res_sel_art = mysql_query($sql_sel_art);
$rij = mysql_fetch_assoc($res_sel_art);
$sql_upd_art = "UPDATE artikel SET
naam='". mysql_real_escape_string(trim($_POST['artikelnaam'])) ."',
omschrijving='". mysql_real_escape_string(trim($_POST['artikelbeschrijving'])) ."',
prijs='". mysql_real_escape_string(trim($_POST['artikelprijs'])) ."'
WHERE artikel_id='". $rij['artikel_id'] ."'";
$sql_sel_cpa_id = "SELECT cpa_id FROM cpa WHERE artikel_id='". $_POST['artikel'] ."'";
$res_sel_cpa_id = mysql_query($sql_sel_cpa_id);
$cpa = mysql_fetch_assoc($res_sel_cpa_id);
$sql_upd_cpa = "UPDATE cpa SET
artikel_id='". $rij['artikel_id'] ."',
categorie_id='". $_POST['categorie'] ."'
WHERE cpa_id='". $cpa['cpa_id'] ."'";
if (mysql_query($sql_upd_art) && mysql_query($sql_upd_cpa)) {
$message['succes'] = "Het artikel is succesvol gewijzigd.";
echo "<span class='succes'>". $message['succes'] ."</span>";
header('REFRESH:3;');
} else {
$message['error'] = "Het artikel kon niet gewijzigd worden.";
echo "<span class='error'>". $message['error'] ."</span>";
}
?>
zoals
Code (php)
1
<?php $result = mysql_query($sql) or die ('query geeft foutmelding: '.mysql_error()); ?>
Want niemand gaat na mijn weten dood als hij/zij iets fout doet.
Ik raad aan om een goede foutafhandeling te gebruiken.
Klik
Verder zeg je dat je fouten hebt verholpen door de inputs hidden te maken.
Ik denk dat je beter even kunt kijken waarom hij deze fout geeft. Want als je een Notice: Undefined index krijg betekend dit vaak dat de $var niet aanwezig is.
$var artikel zal dus niet bestaan in het gedeelte code waar je het gebruikt.
Tevens zie ik in de code regelmatig deze voor bij komen.
Deze staan voornamelijk in de Query's. Deze kun je beter even controleren of het wel een cijfer is. Dit doe je door een (int)..
Gewijzigd op 26/09/2012 02:28:10 door Frank WD
Frank WD op 26/09/2012 02:20:51:
Frank, dit is geen controle wat jij doet. Jij typecast de variabele nu naar een int. Dat is iets anders dan controleren of het een int is.
Bedankt voor de verbetering, ik heb het idd even verkeert uit gelegd.
ivm die variabelen die ik met de hidden field doorstuur;
het script werkt met 2 formulieren namelijk, als de pagina voor het eerst geladen wordt, moet er een artikel gekozen worden dus $_POST['artikel'].
maar deze geposte waarde heb ik ook nodig in het tweede formulier en als ik geen hidden fields gebruik heb ik die geposte waarde niet in het 2e formulier. bij mijn weten zouden geposte waarden superglobals moeten zijn en dus ook overal beschikbaar zijn, wat dus niet het geval is bij mij
Gewijzigd op 26/09/2012 11:27:57 door ch th
Doorgeven via hidden fields betekent wel dat een ieder dit in de broncode kan manipuleren. Zou daarom kiezen voor sessie-variabelen.
hmm. ik vind het vooral raar dat de geposte waarden niet gedurende het hele script beschikbaar blijven. is dit normaal?
Ik snap ook even niet waarom je $_POST waardes wilt door geven aan je 2e formulier.
Ja die opzet snap ik wel, alleen zoals Obelic zegt vallen die aan te passen in je broncode. Ik zou persoonlijk zoals Ozzie al aangaf sessie's gebruiken.
Dit heeft voordeel dat je niet telkens alles hoeft te laden en de waardes zijn overal beschikbaar tot de browser gesloten word. Ik zou daarom toch eens de optie van sessie's na kijken of dit voldoet aan jou ijzen in gebruik.
Om eventuele controle (bijvoorbeeld emailadres) te wijzigen? Controleren doe je aan het het eind (eventueel nogmaals).