meerdere rijen updaten met checkbox
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
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
<?php
//connect met db
include("connect.php");
//als formulier gepost is
if( $_SERVER['REQUEST_METHOD'] == "POST") {
foreach ($_POST['upd'] as $update)
{
mysql_query("UPDATE t_uren SET akkoord = 1 WHERE id = '" . $akkoord . "'") or die(mysql_error());
}
} else {
$sql = "SELECT * FROM t_uren";
$query = mysql_query($sql);
?>
<table>
<tr>
<td>ID:</td>
<td>Project:</td>
<td>Datum:</td>
<td>Uren:</td>
<td>Akkoord?</td>
</tr>
<?php
while($data = mysql_fetch_array($query)) {
?>
<form method="post" action="uren.php" name="akkoord">
<input type="hidden" name="id" value="<?php $data['id']; ?>">
<tr>
<td><?php echo $data['id'];?></td>
<td><?php echo $data['project'];?></td>
<td><?php echo $data['datum'];?></td>
<td><?php echo $data['uren'];?></td>
<td><input type="checkbox" value="<?php $data['id']; ?>" name="upd[]"></td>
</tr>
<?php
}
?>
<tr>
<td colspan="2"><input type="submit"></td>
</tr>
</form>
</table>
<?php
}
?>
//connect met db
include("connect.php");
//als formulier gepost is
if( $_SERVER['REQUEST_METHOD'] == "POST") {
foreach ($_POST['upd'] as $update)
{
mysql_query("UPDATE t_uren SET akkoord = 1 WHERE id = '" . $akkoord . "'") or die(mysql_error());
}
} else {
$sql = "SELECT * FROM t_uren";
$query = mysql_query($sql);
?>
<table>
<tr>
<td>ID:</td>
<td>Project:</td>
<td>Datum:</td>
<td>Uren:</td>
<td>Akkoord?</td>
</tr>
<?php
while($data = mysql_fetch_array($query)) {
?>
<form method="post" action="uren.php" name="akkoord">
<input type="hidden" name="id" value="<?php $data['id']; ?>">
<tr>
<td><?php echo $data['id'];?></td>
<td><?php echo $data['project'];?></td>
<td><?php echo $data['datum'];?></td>
<td><?php echo $data['uren'];?></td>
<td><input type="checkbox" value="<?php $data['id']; ?>" name="upd[]"></td>
</tr>
<?php
}
?>
<tr>
<td colspan="2"><input type="submit"></td>
</tr>
</form>
</table>
<?php
}
?>
Die doet het niet... geen errors, gewoon een leeg scherm.
Ik heb al diverse tutorials over loops, checkboxes en arrays doorgelopen, maar ik kom er maar niet achter wat er mis gaat. Kan iemand me op weg helpen?
Quote:
geen errors
Goh, dat is gek! Waar is jouw foutafhandeling die errors op het scherm zou moeten zetten? Jij doet de aanname dat alles wel goed gaat, maar dat blijkt weer eens niet zo te zijn.
Oplossing: Foutafhandeling inbouwen
Gewijzigd op 01/01/1970 01:00:00 door Frank -
Ik heb de error reporting op E_ALL gezet, nog steeds een leeg scherm. Mijn SQL-query doet ook niks: er wordt niks ge-update en er komt ook geen foutmelding over de query.
Hier neem je gewoon aan dat de query lukt. Verander dat eens naar:
Ik krijg ook netjes een tabel met mijn gegevens erin, maar wanneer ik het formulier submit krijg ik een leeg scherm.
Vanwege het lege scherm en het gebrek aan foutmeldingen denk ik dat het probleem bij het doorgeven van de variabelen zit...
Wanneer ik de update-query vervang door
en ik klik twee selectievakjes aan geeft hij terug:
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
2
3
4
5
6
7
8
9
10
11
12
13
14
<?php
//als formulier gepost is
if( $_SERVER['REQUEST_METHOD'] == "POST") {
foreach ($_POST['upd'] as $update)
// Lever het aan als een array, dus: $_POST
{
mysql_query("UPDATE t_uren SET akkoord = 1 WHERE id = '" . $akkoord . "'") or die(mysql_error());
// Waar komt die $akkoord vandaan??
}
}
?>
//als formulier gepost is
if( $_SERVER['REQUEST_METHOD'] == "POST") {
foreach ($_POST['upd'] as $update)
// Lever het aan als een array, dus: $_POST
{
mysql_query("UPDATE t_uren SET akkoord = 1 WHERE id = '" . $akkoord . "'") or die(mysql_error());
// Waar komt die $akkoord vandaan??
}
}
?>
Verder echo je binnen de if ook helemaal niks, daar hoef je dus geen output/resultaat van te verwachten. Alle output staat in de else.
Ik kan echoen wat ik wil, maar er gebeurt niks. Zoals ik eerder al zei, het probleem zit waarschijnlijk in het feit dat ik de variabelen niet goed doorgeef Ik weet nog niet zo heel veel van PHP om de fout te vinden, dus daar heb ik jullie hulp bij nodig...
@GaMer13: wat bedoel je met 'lever het aan als een array, dus $_POST? Dat doe ik toch?
De $akkoord komt uit het formulier dat ik submit, of geef ik die niet goed door?
Verder zul je echt een controle met mysql_affected_rows() moeten inbouwen, anders heb je nooit enige zekerheid over het resultaat van een UPDATE- of DELETE-query. (INSERT laat ik even buiten beschouwing, maar zou je eigenlijk ook moeten checken)
Hoe heb jij de error_reporting() ingesteld?