Problemen bij het verwijderen van gegevens uit de database
ik ben een klein controlepaneel aan het maken voor een website. Het is controlepaneel om een agenda up-to-date te houden.
Ik heb alle bestanden al klaar, alleen wil het bestand verwijder.php niet werken.
Ik slaag er iet in om bestanden uit een tabel in de database te verwijderen.
Wanneer ik dit script gebruik, en op delete klik, worden er geen gegevens gewist. Nochtans zie ik alle gegevens uit de tabel opgelijst en kan ik item via een checkbox aanvinken.
Iemand een idee wat er fout is in dit script?
Alvast bedankt,
Kevin
Code: verwijder.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
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
<html>
<body>
<!--==============================header=================================-->
<header></header>
<div class="main">
<div class="main_bg_foto">
<div class="row-1">
<a href="index.html"><img src="../images/logo.png" top="20px" width="360" height="260"></img></a>
</div>
<!--==============================content================================-->
<div class="container_24">
<div class="grid_23">
<div class="wrapper_visible">
<div class="agenda_bg">
<div class="wrapper_visible">
<?php
$host="localhost"; // Host name
$username="xxx"; // Mysql username
$password="xxx"; // Mysql password
$db_name="test"; // Database name
$tbl_name="agenda"; // Table name
// Connect to server and select databse.
mysql_connect("$host", "$username", "$password")or die("cannot connect");
mysql_select_db("$db_name")or die("cannot select DB");
$sql="SELECT * FROM $tbl_name";
$result=mysql_query($sql);
$count=mysql_num_rows($result);
?>
<table>
<tr class"titel">
<td><form name="form1" method="post" action="">
<table>
<tr>
<td bgcolor="#FFFFFF"> </td>
<td colspan="4"><strong>Verwijder item uit de lijst</strong></td>
</tr>
<tr>
<td align="center" bgcolor="#FFFFFF">#</td>
<td align="center" bgcolor="#FFFFFF"><strong>Id</strong></td>
<td align="center" bgcolor="#FFFFFF"><strong>Datum</strong></td>
<td align="center" bgcolor="#FFFFFF"><strong>Uur</strong></td>
<td align="center" bgcolor="#FFFFFF"><strong>Locatie</strong></td>
<td align="center" bgcolor="#FFFFFF"><strong>Productie</strong></td>
</tr>
<?php
while($rows=mysql_fetch_array($result)){
?>
<tr>
<td align="center" bgcolor="#FFFFFF"><input name="checkbox[]" type="checkbox" id="checkbox[]" value="<? echo $rows['bericht_id']; ?>"></td>
<td bgcolor="#FFFFFF"><? echo $rows['bericht_id']; ?></td>
<td bgcolor="#FFFFFF"><? echo $rows['weekdag']; ?></td>
<td bgcolor="#FFFFFF"><? echo $rows['uur']; ?></td>
<td bgcolor="#FFFFFF"><? echo $rows['locatie']; ?></td>
<td bgcolor="#FFFFFF"><? echo $rows['productie']; ?></td>
</tr>
<?php
}
?>
<tr>
<td colspan="5" align="center" bgcolor="#FFFFFF"><input name="delete" type="submit" id="delete" value="Delete"></td>
</tr>
<?php
// Check if delete button active, start this
if($delete){
for($i=0;$i<$count;$i++){
$del_id = $checkbox[$i];
$sql = "DELETE FROM $tbl_name WHERE id='$del_id'";
$result = mysql_query($sql);
}
// if successful redirect to delete_multiple.php
if($result){
echo "<meta http-equiv=\"refresh\" content=\"0;URL=verwijder.php\">";
}
}
mysql_close();
?>
</table>
</form>
</td>
</tr>
</table>
</div>
</div>
</div>
</div>
</div>
</div>
<div class="clear"></div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
<footer>
</footer>
</body>
</html>
<body>
<!--==============================header=================================-->
<header></header>
<div class="main">
<div class="main_bg_foto">
<div class="row-1">
<a href="index.html"><img src="../images/logo.png" top="20px" width="360" height="260"></img></a>
</div>
<!--==============================content================================-->
<div class="container_24">
<div class="grid_23">
<div class="wrapper_visible">
<div class="agenda_bg">
<div class="wrapper_visible">
<?php
$host="localhost"; // Host name
$username="xxx"; // Mysql username
$password="xxx"; // Mysql password
$db_name="test"; // Database name
$tbl_name="agenda"; // Table name
// Connect to server and select databse.
mysql_connect("$host", "$username", "$password")or die("cannot connect");
mysql_select_db("$db_name")or die("cannot select DB");
$sql="SELECT * FROM $tbl_name";
$result=mysql_query($sql);
$count=mysql_num_rows($result);
?>
<table>
<tr class"titel">
<td><form name="form1" method="post" action="">
<table>
<tr>
<td bgcolor="#FFFFFF"> </td>
<td colspan="4"><strong>Verwijder item uit de lijst</strong></td>
</tr>
<tr>
<td align="center" bgcolor="#FFFFFF">#</td>
<td align="center" bgcolor="#FFFFFF"><strong>Id</strong></td>
<td align="center" bgcolor="#FFFFFF"><strong>Datum</strong></td>
<td align="center" bgcolor="#FFFFFF"><strong>Uur</strong></td>
<td align="center" bgcolor="#FFFFFF"><strong>Locatie</strong></td>
<td align="center" bgcolor="#FFFFFF"><strong>Productie</strong></td>
</tr>
<?php
while($rows=mysql_fetch_array($result)){
?>
<tr>
<td align="center" bgcolor="#FFFFFF"><input name="checkbox[]" type="checkbox" id="checkbox[]" value="<? echo $rows['bericht_id']; ?>"></td>
<td bgcolor="#FFFFFF"><? echo $rows['bericht_id']; ?></td>
<td bgcolor="#FFFFFF"><? echo $rows['weekdag']; ?></td>
<td bgcolor="#FFFFFF"><? echo $rows['uur']; ?></td>
<td bgcolor="#FFFFFF"><? echo $rows['locatie']; ?></td>
<td bgcolor="#FFFFFF"><? echo $rows['productie']; ?></td>
</tr>
<?php
}
?>
<tr>
<td colspan="5" align="center" bgcolor="#FFFFFF"><input name="delete" type="submit" id="delete" value="Delete"></td>
</tr>
<?php
// Check if delete button active, start this
if($delete){
for($i=0;$i<$count;$i++){
$del_id = $checkbox[$i];
$sql = "DELETE FROM $tbl_name WHERE id='$del_id'";
$result = mysql_query($sql);
}
// if successful redirect to delete_multiple.php
if($result){
echo "<meta http-equiv=\"refresh\" content=\"0;URL=verwijder.php\">";
}
}
mysql_close();
?>
</table>
</form>
</td>
</tr>
</table>
</div>
</div>
</div>
</div>
</div>
</div>
<div class="clear"></div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
<footer>
</footer>
</body>
</html>
Edit:
Code-tags geplaatst.
Gewijzigd op 24/07/2013 21:32:54 door - Ariën -
Kan je alle code tussen [code][/code] steken?
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
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
<html>
</head>
<body>
<!--==============================header=================================-->
<header></header>
<div class="main">
<div class="main_bg_foto">
<div class="row-1">
<a href="index.html"><img src="../images/logo.png" top="20px" width="360" height="260"></img></a>
</div>
<!--==============================content================================-->
<div class="container_24">
<div class="grid_23">
<div class="wrapper_visible">
<div class="agenda_bg">
<div class="wrapper_visible">
<?php
$host="localhost"; // Host name
$username="xxx"; // Mysql username
$password="xxx"; // Mysql password
$db_name="test"; // Database name
$tbl_name="agenda"; // Table name
// Connect to server and select databse.
mysql_connect("$host", "$username", "$password")or die("cannot connect");
mysql_select_db("$db_name")or die("cannot select DB");
$sql="SELECT * FROM $tbl_name";
$result=mysql_query($sql);
$count=mysql_num_rows($result);
?>
<table>
<tr class"titel">
<td><form name="form1" method="post" action="">
<table>
<tr>
<td bgcolor="#FFFFFF"> </td>
<td colspan="4"><strong>Verwijder item uit de lijst</strong></td>
</tr>
<tr>
<td align="center" bgcolor="#FFFFFF">#</td>
<td align="center" bgcolor="#FFFFFF"><strong>Id</strong></td>
<td align="center" bgcolor="#FFFFFF"><strong>Datum</strong></td>
<td align="center" bgcolor="#FFFFFF"><strong>Uur</strong></td>
<td align="center" bgcolor="#FFFFFF"><strong>Locatie</strong></td>
<td align="center" bgcolor="#FFFFFF"><strong>Productie</strong></td>
</tr>
<?php
while($rows=mysql_fetch_array($result)){
?>
<tr>
<td align="center" bgcolor="#FFFFFF"><input name="checkbox[]" type="checkbox" id="checkbox[]" value="<? echo $rows['bericht_id']; ?>"></td>
<td bgcolor="#FFFFFF"><? echo $rows['bericht_id']; ?></td>
<td bgcolor="#FFFFFF"><? echo $rows['weekdag']; ?></td>
<td bgcolor="#FFFFFF"><? echo $rows['uur']; ?></td>
<td bgcolor="#FFFFFF"><? echo $rows['locatie']; ?></td>
<td bgcolor="#FFFFFF"><? echo $rows['productie']; ?></td>
</tr>
<?php
}
?>
<tr>
<td colspan="5" align="center" bgcolor="#FFFFFF"><input name="delete" type="submit" id="delete" value="Delete"></td>
</tr>
<?php
// Check if delete button active, start this
if($delete){
for($i=0;$i<$count;$i++){
$del_id = $checkbox[$i];
$sql = "DELETE FROM $tbl_name WHERE id='$del_id'";
$result = mysql_query($sql);
}
// if successful redirect to delete_multiple.php
if($result){
echo "<meta http-equiv=\"refresh\" content=\"0;URL=verwijder.php\">";
}
}
mysql_close();
?>
</table>
</form>
</td>
</tr>
</table>
</div>
</div>
</div>
</div>
</div>
</div>
<div class="clear"></div>
<!--==============================footer=================================-->
<footer>
<div class="footer"></div>
</footer>
</body>
</html>
</head>
<body>
<!--==============================header=================================-->
<header></header>
<div class="main">
<div class="main_bg_foto">
<div class="row-1">
<a href="index.html"><img src="../images/logo.png" top="20px" width="360" height="260"></img></a>
</div>
<!--==============================content================================-->
<div class="container_24">
<div class="grid_23">
<div class="wrapper_visible">
<div class="agenda_bg">
<div class="wrapper_visible">
<?php
$host="localhost"; // Host name
$username="xxx"; // Mysql username
$password="xxx"; // Mysql password
$db_name="test"; // Database name
$tbl_name="agenda"; // Table name
// Connect to server and select databse.
mysql_connect("$host", "$username", "$password")or die("cannot connect");
mysql_select_db("$db_name")or die("cannot select DB");
$sql="SELECT * FROM $tbl_name";
$result=mysql_query($sql);
$count=mysql_num_rows($result);
?>
<table>
<tr class"titel">
<td><form name="form1" method="post" action="">
<table>
<tr>
<td bgcolor="#FFFFFF"> </td>
<td colspan="4"><strong>Verwijder item uit de lijst</strong></td>
</tr>
<tr>
<td align="center" bgcolor="#FFFFFF">#</td>
<td align="center" bgcolor="#FFFFFF"><strong>Id</strong></td>
<td align="center" bgcolor="#FFFFFF"><strong>Datum</strong></td>
<td align="center" bgcolor="#FFFFFF"><strong>Uur</strong></td>
<td align="center" bgcolor="#FFFFFF"><strong>Locatie</strong></td>
<td align="center" bgcolor="#FFFFFF"><strong>Productie</strong></td>
</tr>
<?php
while($rows=mysql_fetch_array($result)){
?>
<tr>
<td align="center" bgcolor="#FFFFFF"><input name="checkbox[]" type="checkbox" id="checkbox[]" value="<? echo $rows['bericht_id']; ?>"></td>
<td bgcolor="#FFFFFF"><? echo $rows['bericht_id']; ?></td>
<td bgcolor="#FFFFFF"><? echo $rows['weekdag']; ?></td>
<td bgcolor="#FFFFFF"><? echo $rows['uur']; ?></td>
<td bgcolor="#FFFFFF"><? echo $rows['locatie']; ?></td>
<td bgcolor="#FFFFFF"><? echo $rows['productie']; ?></td>
</tr>
<?php
}
?>
<tr>
<td colspan="5" align="center" bgcolor="#FFFFFF"><input name="delete" type="submit" id="delete" value="Delete"></td>
</tr>
<?php
// Check if delete button active, start this
if($delete){
for($i=0;$i<$count;$i++){
$del_id = $checkbox[$i];
$sql = "DELETE FROM $tbl_name WHERE id='$del_id'";
$result = mysql_query($sql);
}
// if successful redirect to delete_multiple.php
if($result){
echo "<meta http-equiv=\"refresh\" content=\"0;URL=verwijder.php\">";
}
}
mysql_close();
?>
</table>
</form>
</td>
</tr>
</table>
</div>
</div>
</div>
</div>
</div>
</div>
<div class="clear"></div>
<!--==============================footer=================================-->
<footer>
<div class="footer"></div>
</footer>
</body>
</html>
KIjken of er gepost is: $_SERVER['REQUEST_METHOD'] == 'POST'
Verder zie ik veel variabelen tussen aanhalingstekens.
Zet het even in code blokken dan kunnen we verder kijken
Ik ben nog maar net begonnen met php en ik begrijp nog heel veel niet...
dus met:
'KIjken of er gepost is: $_SERVER['REQUEST_METHOD'] == 'POST'
Verder zie ik veel variabelen tussen aanhalingstekens.
Zet het even in code blokken dan kunnen we verder kijken'
weet ik nog niet wat ik moet doen eerlijk gezegd..
Bedankt al voor de reactie
for($i=0;$i<$count;$i++){
$del_id = $_POST['checkbox'][$i];
$sql = "DELETE FROM $tbl_name WHERE id='".$del_id."'";
$result = mysql_query($sql);
Misschien zo weet niet zeker
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
2
3
4
5
6
7
8
9
10
11
12
13
14
15
<?php
// Check if delete button active, start this
if($delete){
for($i=0;$i<$count;$i++){
$del_id = $checkbox[$i];
$sql = "DELETE FROM $tbl_name WHERE id='$del_id'";
$result = mysql_query($sql);
}
// if successful redirect to delete_multiple.php
if($result){
echo "<meta http-equiv=\"refresh\" content=\"0;URL=verwijder.php\">";
}
}
mysql_close();
?>
// Check if delete button active, start this
if($delete){
for($i=0;$i<$count;$i++){
$del_id = $checkbox[$i];
$sql = "DELETE FROM $tbl_name WHERE id='$del_id'";
$result = mysql_query($sql);
}
// if successful redirect to delete_multiple.php
if($result){
echo "<meta http-equiv=\"refresh\" content=\"0;URL=verwijder.php\">";
}
}
mysql_close();
?>
Klopt vrij weinig van.
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
<?
#is er gepost
if($_SERVER['REQUEST_METHOD'] == 'POST'){
#is er gesubmit?
if(isset($_POST['delete'])){
# zijn er checkboxen aangevinkt?
if(!empty($_POST['checkbox'])){
mysql_query("DELETE FROM ".$tbl_name." WHERE id IN ".implode(",", mysql_real_escape_string($_POST['checkbox']));
}
}
}
?>
#is er gepost
if($_SERVER['REQUEST_METHOD'] == 'POST'){
#is er gesubmit?
if(isset($_POST['delete'])){
# zijn er checkboxen aangevinkt?
if(!empty($_POST['checkbox'])){
mysql_query("DELETE FROM ".$tbl_name." WHERE id IN ".implode(",", mysql_real_escape_string($_POST['checkbox']));
}
}
}
?>
Gewijzigd op 24/07/2013 16:53:12 door gerhard l
Verder is het natuurlijk ook grappig dat je zo te zien eerst je pagina opbouwt en dan pas de delete doet. Zo krijg je na het drukken op het delete knop nooit te zien dat iets ook daadwerkelijk verwijdert is.... tot je op refresh drukt dan....
Ja dat is een goede opmerking die ik zelf nog niet heb gezien. Maar goed, blijft het feit dat het scriptje nog niet werkt. Ik dacht dit makkelijker zou zijn...
En je query klopt niet.
Ik zou het als volgt doen
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
If( $_SERVER['REQUEST_METHOD'] == 'POST') {
$error = array();
$counter = 0;
If(empty($_POST['checkbox'])) {
$error[] = '<li>Er zijn geen berichten geselecteerd</li>';
} else {
Foreach($_POST['checkbox'] as $selected) {
If(!mysql_query('DELETE FROM ' . $tbl_name . ' WHERE bericht_id = ' . $selected)) {
$error[] = '<li>Kon bericht met id: ' . $selected . ' niet verwijderen</li>
<li>' . Mysql_error() . '</li>';
} else {
$counter++;
}
}
}
If(!empty($error)) {
Echo 'Fout bij verwijderen.. <ul>' . Implode($error) . </ul>';
}
If($counter > 0) {
Echo 'Succesvol ' . $counter . ' berichten verwijderd.';
}
}
$error = array();
$counter = 0;
If(empty($_POST['checkbox'])) {
$error[] = '<li>Er zijn geen berichten geselecteerd</li>';
} else {
Foreach($_POST['checkbox'] as $selected) {
If(!mysql_query('DELETE FROM ' . $tbl_name . ' WHERE bericht_id = ' . $selected)) {
$error[] = '<li>Kon bericht met id: ' . $selected . ' niet verwijderen</li>
<li>' . Mysql_error() . '</li>';
} else {
$counter++;
}
}
}
If(!empty($error)) {
Echo 'Fout bij verwijderen.. <ul>' . Implode($error) . </ul>';
}
If($counter > 0) {
Echo 'Succesvol ' . $counter . ' berichten verwijderd.';
}
}
En uiteraard eerst controlleren of $selected wel een getal is)
Gewijzigd op 24/07/2013 17:19:49 door Dennis WhoCares
Zet error-reporting aan.
Debuggen: echo je query eens naar het scherm om te kijken of er dat staat wat je verwacht.
@ Francoi gckx: je loopt lang genoeg mee om te weten hoe je code tussen code-tags zou kunnen plaatsen ;-)
En dan wel met de WHERE IN methode Gerhard de items verwijderen, en beetje aangepast dan wel (want daar klopt ook vrij weinig van:
Code (php)
Gewijzigd op 24/07/2013 18:47:57 door Ger van Steenderen