Delete multiple rows
Mijn huidige script:
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
if(isset($_POST['sub_delete'])) {
$sql = "
DELETE FROM
gebruikers
WHERE
username = '".$_POST['username']."'
";
if(!$res = mysql_query($sql))
{
trigger_error(mysql_error().'<br />In query: '.$sql);
}
elseif(mysql_affected_rows() == 0)
{
echo 'U heeft geen leerlingen geselecteerd';
}
elseif(mysql_affected_rows() == 1)
{
echo 'Er is 1 leerling verwijderd uit de database.';
}
else
{
echo 'Er zijn '.mysql_affected_rows().' leerlingen verwijderd uit de database.';
}
}
$sql = "
DELETE FROM
gebruikers
WHERE
username = '".$_POST['username']."'
";
if(!$res = mysql_query($sql))
{
trigger_error(mysql_error().'<br />In query: '.$sql);
}
elseif(mysql_affected_rows() == 0)
{
echo 'U heeft geen leerlingen geselecteerd';
}
elseif(mysql_affected_rows() == 1)
{
echo 'Er is 1 leerling verwijderd uit de database.';
}
else
{
echo 'Er zijn '.mysql_affected_rows().' leerlingen verwijderd uit de database.';
}
}
Zou ik met de huidige query het voor elkaar kunnen krijgen of moet het geheel anders?
Gewijzigd op 01/01/1970 01:00:00 door Naam Loos
Op regel 19 kun je '.mysql_affected_rows().' vervangen door 1.
Voor derest zal hij denk ik wel werken, heb je hem al getest?
Gewijzigd op 01/01/1970 01:00:00 door Yearupie Achternaamloos
Het script werkt ook wel alleen maar op 1 rij per keer terwijl ik meerdere checkboxes aanvink.
$users is de array waar al je te verwijderen namen in staan.
De $delete_where komt in plaats van username = '".$_POST['username']."'
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
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
<?php
#| " $delete_where " variable aanmaken voor het opslaan van de lijst met de te verwijderen gebruikers.
$delete_where = "username = '".$users[0]."'";
#| Aantal gebruikers tellen.
$delete_count($users);
#| Alle te verwijderen gebruikers toevoegen.
for($i = 1; $i <= $delete_count; $i++)
{
#| Gebruiker toevoegen.
$delete_where .= " OR username = '".$users[$i]."'";
}
?>
#| " $delete_where " variable aanmaken voor het opslaan van de lijst met de te verwijderen gebruikers.
$delete_where = "username = '".$users[0]."'";
#| Aantal gebruikers tellen.
$delete_count($users);
#| Alle te verwijderen gebruikers toevoegen.
for($i = 1; $i <= $delete_count; $i++)
{
#| Gebruiker toevoegen.
$delete_where .= " OR username = '".$users[$i]."'";
}
?>
De error's:
Code (php)
1
2
3
4
5
2
3
4
5
Notice: Undefined variable: users in *ergensopmijnpc* on line 82
Notice: Undefined variable: delete_count in *ergensopmijnpc* on line 87
Fatal error: Function name must be a string in *ergensopmijnpc* on line 87
Notice: Undefined variable: delete_count in *ergensopmijnpc* on line 87
Fatal error: Function name must be a string in *ergensopmijnpc* on line 87
Ik gebruik het script zoals hierboven en dit:
hoe ziet je code er nu uit? Ik denk dat je het verkeerd toepast.
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
if(isset($_POST['sub_delete'])) {
$delete_where = $_POST['username'];
#| " $delete_where " variable aanmaken voor het opslaan van de lijst met de te verwijderen gebruikers.
$delete_where = "username = '".$users[0]."'";
#| Aantal gebruikers tellen.
$delete_count($users);
#| Alle te verwijderen gebruikers toevoegen.
for($i = 1; $i <= $delete_count; $i++)
{
#| Gebruiker toevoegen.
$delete_where .= " OR username = '".$users[$i]."'";
}
}
[/code]
if(isset($_POST['sub_delete'])) {
$delete_where = $_POST['username'];
#| " $delete_where " variable aanmaken voor het opslaan van de lijst met de te verwijderen gebruikers.
$delete_where = "username = '".$users[0]."'";
#| Aantal gebruikers tellen.
$delete_count($users);
#| Alle te verwijderen gebruikers toevoegen.
for($i = 1; $i <= $delete_count; $i++)
{
#| Gebruiker toevoegen.
$delete_where .= " OR username = '".$users[$i]."'";
}
}
[/code]
Code (php)
Natuurlijk ziet je checkbox er dan zo uit.
Code (php)
1
<input type="checkbox" name="checkboxnaam[]" id="checkboxnaam[]" value="'.$Row['hierhetid'].'" />
Natuurlijk eerst alle id's ophalen uit de database en fetchen
Gewijzigd op 01/01/1970 01:00:00 door Mr.Ark
$delete_where = $_POST['username']; waar is dat nu weer goed voor?
@ Mr.Ark Dat ziet er leuk uit morgen zelf eens uit proberen.
Gewijzigd op 01/01/1970 01:00:00 door - Mark -
Waarom moeilijk gaan doen met een for loopje en de array tellen?
Als je het dan op die manier doet gebruik dan gewoon foreach().
Ik tel meestal de waardes in de array voor het weergeven van " x van x aantal rijen verwijderd. "
Warning: array_map() [function.array-map]: Argument #2 should be an array in C:\wamp\www\edu\admin\leerling.php on line 87
Warning: implode() [function.implode]: Invalid arguments passed in C:\wamp\www\edu\admin\leerling.php on line 87
Er zijn 5 leerlingen verwijderd uit de database.
line 87 is in Mr.Ark zijn voorbeeld lijn 11
Je heb je html formulier niet goed, gebruik je:
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
<tr>
<td><input type="checkbox" name="checkboxnaam[]" id="checkboxnaam[]" value="<?php echo $row['username']; ?>" /></td>
<td><img src="icons/user.png"></td>
<td><?php echo $row['username']; ?></td>
<td><?php echo $row['naam']; ?></td>
<td><?php echo $row['tvoegsels']; ?></td>
<td><?php echo $row['anaam']; ?></td>
<td><?php echo $row['klas']; ?></td>
<td><img src="icons/user_delete.png"></td>
<td><a href="lln_edit.php?username=<?php echo $row['username']; ?>"><img src="icons/user_edit.png" border="0"></a></td>
<td><img src="icons/text_list_numbers.png"></td>
<td><img src="icons/lock.png"></td>
</tr>
<?php
}
}
?>
</table>
<br />
<input type="submit" name="sub_delete" value=" Verwijderen" class="delete" />
<input type="submit" name="sub_block" value=" Blokkeren" class="lock" />
<input type="submit" name="sub_toets" value=" Toets starten" class="toets" />
</form>
<?php
if(isset($_POST['sub_delete'])) {
$query =
"
DELETE FROM
gebruikers
WHERE
username
IN
(
" . implode(', ', array_map('intval', $_POST['checkboxname'])) . "
)
";
if(!$res = mysql_query($sql))
{
trigger_error(mysql_error().'<br />In query: '.$sql);
}
elseif(mysql_affected_rows() == 0)
{
echo 'U heeft geen leerlingen geselecteerd';
}
elseif(mysql_affected_rows() == 1)
{
echo 'Er is 1 leerling verwijderd uit de database.';
}
else
{
echo 'Er zijn '.mysql_affected_rows().' leerlingen verwijderd uit de database.';
}
}
[/code]
<td><input type="checkbox" name="checkboxnaam[]" id="checkboxnaam[]" value="<?php echo $row['username']; ?>" /></td>
<td><img src="icons/user.png"></td>
<td><?php echo $row['username']; ?></td>
<td><?php echo $row['naam']; ?></td>
<td><?php echo $row['tvoegsels']; ?></td>
<td><?php echo $row['anaam']; ?></td>
<td><?php echo $row['klas']; ?></td>
<td><img src="icons/user_delete.png"></td>
<td><a href="lln_edit.php?username=<?php echo $row['username']; ?>"><img src="icons/user_edit.png" border="0"></a></td>
<td><img src="icons/text_list_numbers.png"></td>
<td><img src="icons/lock.png"></td>
</tr>
<?php
}
}
?>
</table>
<br />
<input type="submit" name="sub_delete" value=" Verwijderen" class="delete" />
<input type="submit" name="sub_block" value=" Blokkeren" class="lock" />
<input type="submit" name="sub_toets" value=" Toets starten" class="toets" />
</form>
<?php
if(isset($_POST['sub_delete'])) {
$query =
"
DELETE FROM
gebruikers
WHERE
username
IN
(
" . implode(', ', array_map('intval', $_POST['checkboxname'])) . "
)
";
if(!$res = mysql_query($sql))
{
trigger_error(mysql_error().'<br />In query: '.$sql);
}
elseif(mysql_affected_rows() == 0)
{
echo 'U heeft geen leerlingen geselecteerd';
}
elseif(mysql_affected_rows() == 1)
{
echo 'Er is 1 leerling verwijderd uit de database.';
}
else
{
echo 'Er zijn '.mysql_affected_rows().' leerlingen verwijderd uit de database.';
}
}
[/code]
http://phphulp.vindme.nl/demo/multidelete/multidelete.php
Voor de mensen die het ook nog even willen testen, snel even voorbeeldje online gegooid. Let niet op hoe de text beetje slordig wordt weergegeven ^^
-> Voor de mensen die het ook nog even willen testen, snel even voorbeeldje online gegooid. Let niet op hoe de text beetje slordig wordt weergegeven ^^
Edit:
Je gebruikt de username ->
Zet daar het id van de gebruiker neer, je werkt namelijk niet met namen je werkt altijd met id's.
Je gebruikt de username ->
Code (php)
1
<input type="checkbox" name="checkboxnaam[]" id="checkboxnaam[]" value="<?php echo $row['username']; ?>" />
Zet daar het id van de gebruiker neer, je werkt namelijk niet met namen je werkt altijd met id's.
Gewijzigd op 01/01/1970 01:00:00 door Mr.Ark
Ark? kun je even je scriptje in posten / zippen ? ik wil even kijken hoe jij het doet...
Bramboos schreef op 02.02.2010 22:04:
Ark? kun je even je scriptje in posten / zippen ? ik wil even kijken hoe jij het doet...
Nee dat is niet mogelijk ^^.
Wat wel mogelijk is, is dat ik een voorbeeld voor je gemaakt heb.
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
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
<?PHP
# Errors laten zien
error_reporting(E_ALL);
ini_set('display_errors', 1);
# Connectie met je database maken
require_once '....';
# Error is false
$Error = false;
# Array voor de berichten
$Message = array();
# Kijken of er gepost wordt
if($_SERVER['REQUEST_METHOD'] == 'POST')
{
# Kijken of checkbox niet leeg is
if(empty($_POST['delete']))
{
# Geen checkbox aangevinkt
$Message[] = 'Selecteer A.U.B een checkbox.';
# Error is true
$Error = true;
}
# Kijken of error false is
if($Error == false)
{
# Query uitvoeren
$aQuery =
"
DELETE FROM
gebruikers
WHERE
id
IN
(
" . implode(', ', array_map('intval', $_POST['delete'])) . "
)
";
# Resultaat van de query
$aResult = mysql_query($aQuery);
# Kijken of de query is gelukt
if(!$aResult)
{
# Fout opgetreden in de query
$Message[] = 'Er is een fout opgetreden, de fout is: '.mysql_error();
}
else
{
# Gebruiker(s) succesvol verwijderd
$Message[] = 'Gebruiker(s) succesvol verwijderd';
}
}
}
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Checkbox Delete</title>
</head>
<body>
<h3>Gebruikers Verwijderen</h3>
<?PHP
# Kijken of er berichten zijn
if(!empty($Message))
{
# Berichten laten zien
foreach($Message as $Msg)
{
echo $Msg.'<br/>';
}
}
# Query uitvoeren
$bQuery =
"
SELECT
id,
username
FROM
gebruikers
ORDER BY
id
DESC
";
# Resultaat van de query
$bResult = mysql_query($bQuery);
# Kijken of de query is gelukt
if(!$bResult)
{
# Fout opgetreden in de query
$Message[] = 'Er is een fout opgetreden, de fout is: '.mysql_error();
}
else
{
# Kijken of er wel gebruikers zijn
if(mysql_num_rows($bResult) == 0)
{
# Geen gebruikers in de database
$Message[] = 'Er staan nog geen gebruikers in de database.';
}
else
{
# Begin formulier en tabel
echo '<form id="form1" name="form1" method="post" action="">';
echo '<table width="300" border="0">';
# While loop uitvoeren om alle gebruikers te laten zien
while($Row = mysql_fetch_assoc($bResult))
{
echo '<tr>
<td><strong>ID</strong></td>
<td><strong>Gebruiker</strong></td>
<td><strong>Verwijder</strong></td>
</tr>
<tr>
<td>'.$Row['id'].'</td>
<td>'.$Row['username'].'</td>
<td><input type="checkbox" name="delete[]" id="delete[]" value="'.$Row['id'].'" /></td>
</tr>
';
}
# Formulier, tabel sluiten en verwijder knop laten zien
echo '<tr><td colspan="3"><input type="submit" name="button" id="button" value="Verwijder" /></td></tr>';
echo '</table>';
echo '</form>';
}
}
?>
</body>
</html>
# Errors laten zien
error_reporting(E_ALL);
ini_set('display_errors', 1);
# Connectie met je database maken
require_once '....';
# Error is false
$Error = false;
# Array voor de berichten
$Message = array();
# Kijken of er gepost wordt
if($_SERVER['REQUEST_METHOD'] == 'POST')
{
# Kijken of checkbox niet leeg is
if(empty($_POST['delete']))
{
# Geen checkbox aangevinkt
$Message[] = 'Selecteer A.U.B een checkbox.';
# Error is true
$Error = true;
}
# Kijken of error false is
if($Error == false)
{
# Query uitvoeren
$aQuery =
"
DELETE FROM
gebruikers
WHERE
id
IN
(
" . implode(', ', array_map('intval', $_POST['delete'])) . "
)
";
# Resultaat van de query
$aResult = mysql_query($aQuery);
# Kijken of de query is gelukt
if(!$aResult)
{
# Fout opgetreden in de query
$Message[] = 'Er is een fout opgetreden, de fout is: '.mysql_error();
}
else
{
# Gebruiker(s) succesvol verwijderd
$Message[] = 'Gebruiker(s) succesvol verwijderd';
}
}
}
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Checkbox Delete</title>
</head>
<body>
<h3>Gebruikers Verwijderen</h3>
<?PHP
# Kijken of er berichten zijn
if(!empty($Message))
{
# Berichten laten zien
foreach($Message as $Msg)
{
echo $Msg.'<br/>';
}
}
# Query uitvoeren
$bQuery =
"
SELECT
id,
username
FROM
gebruikers
ORDER BY
id
DESC
";
# Resultaat van de query
$bResult = mysql_query($bQuery);
# Kijken of de query is gelukt
if(!$bResult)
{
# Fout opgetreden in de query
$Message[] = 'Er is een fout opgetreden, de fout is: '.mysql_error();
}
else
{
# Kijken of er wel gebruikers zijn
if(mysql_num_rows($bResult) == 0)
{
# Geen gebruikers in de database
$Message[] = 'Er staan nog geen gebruikers in de database.';
}
else
{
# Begin formulier en tabel
echo '<form id="form1" name="form1" method="post" action="">';
echo '<table width="300" border="0">';
# While loop uitvoeren om alle gebruikers te laten zien
while($Row = mysql_fetch_assoc($bResult))
{
echo '<tr>
<td><strong>ID</strong></td>
<td><strong>Gebruiker</strong></td>
<td><strong>Verwijder</strong></td>
</tr>
<tr>
<td>'.$Row['id'].'</td>
<td>'.$Row['username'].'</td>
<td><input type="checkbox" name="delete[]" id="delete[]" value="'.$Row['id'].'" /></td>
</tr>
';
}
# Formulier, tabel sluiten en verwijder knop laten zien
echo '<tr><td colspan="3"><input type="submit" name="button" id="button" value="Verwijder" /></td></tr>';
echo '</table>';
echo '</form>';
}
}
?>
</body>
</html>
Lees de code goed door en zorg dat je er iets van op steekt !
Let op: pas zodanig de code aan naar jouw wens.
Succes verder !
Edit:
Typo ^^
Typo ^^
Gewijzigd op 01/01/1970 01:00:00 door Mr.Ark
MOOI, weer wat geleerd en werkend gekregen. Ik vraag me alleen nog af hoe ik het beste de insert query kan doen. Je kunt meerdere rijen tegelijk invoegen maar hoe kun je dat doen met selectbox?
Hoe kan ik dat het beste doen? Ik wil dat je op de submit knop verwijderen drukt dat die dan de delete query doet op alle aangevinkte checkboxes en bij blokkeren weer een andere query op alle rijen...
Ik doe het nu zo:
Code (php)
1
2
3
2
3
<input type="submit" name="sub_delete" value=" Verwijderen" class="delete" />
<input type="submit" name="sub_block" value=" Blokkeren" class="lock" />
<input type="submit" name="sub_toets" value=" Toets starten" class="toets" />
<input type="submit" name="sub_block" value=" Blokkeren" class="lock" />
<input type="submit" name="sub_toets" value=" Toets starten" class="toets" />
En die roep ik zo aan:
Allerbeste manier is op de volgende:
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
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
<?PHP
# Kijken of er gepost wordt
if($_SERVER['REQUEST_METHOD'] == 'POST')
{
# Kijken of er op knop 1 wordt geklikt
if(isset($_POST['knop1']))
{
echo 'Knop 1 aangeklikt';
}
# Kijken of er op knop 2 wordt geklikt
if(isset($_POST['knop2']))
{
echo 'Knop 2 aangeklikt';
}
}
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Knop Test</title>
</head>
<body>
<form id="form1" name="form1" method="post" action="">
<input type="submit" name="button" value="Knop 1">
<input type="hidden" name="knop1" id="knop1" />
</form>
<form id="form2" name="form2" method="post" action="">
<input type="submit" name="button" value="Knop 2">
<input type="hidden" name="knop2" id="knop2" />
</form>
</body>
</html>
# Kijken of er gepost wordt
if($_SERVER['REQUEST_METHOD'] == 'POST')
{
# Kijken of er op knop 1 wordt geklikt
if(isset($_POST['knop1']))
{
echo 'Knop 1 aangeklikt';
}
# Kijken of er op knop 2 wordt geklikt
if(isset($_POST['knop2']))
{
echo 'Knop 2 aangeklikt';
}
}
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Knop Test</title>
</head>
<body>
<form id="form1" name="form1" method="post" action="">
<input type="submit" name="button" value="Knop 1">
<input type="hidden" name="knop1" id="knop1" />
</form>
<form id="form2" name="form2" method="post" action="">
<input type="submit" name="button" value="Knop 2">
<input type="hidden" name="knop2" id="knop2" />
</form>
</body>
</html>
Voorbeeld: hier
Gewijzigd op 01/01/1970 01:00:00 door Mr.Ark