meerdere berichten verwijderen
Even een vraagje. Graag wil ik voor mijn mail inbox vinkjes voor de mails hebben zodat je de berichten kunt selecteren en dan de geselecteerde berichten verwijderen. Daarvoor heb ik het onderstaande script gemaakt maar die verwijderd maar 1 bericht. Hoe kan ik ervoor zorgen dat hij alle geselecteerde berichten verwijderd?
Alvast bedankt!
Nomis
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
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
<?php
if($_POST['verwijder']){
$sql = 'DELETE FROM PB WHERE to_ID="'.$_SESSION['ID'].'" AND ber_ID="'.$_POST['bericht'].'"';
$result = mysql_query($sql);
if ($result) {
echo 'De berichten zijn verwijdert';
} else {
echo 'De berichten zijn niet verwijdert.<br />';
echo 'Database fout: ' . mysql_error();
}
}
echo '<table border="0" width="100%">';
<tr>
<td><b>Status</td>
echo '<td>';
echo '<b>Van';
echo '</td>';
echo '<td>';
echo '<b>Onderwerp:';
echo '</td>';
echo '<td><input name="allbox" type="checkbox" value="Check All" onclick="InboxCheckAll();" /></td>';
echo '</tr>';
while($rij = mysql_fetch_array($fea)){
echo '<tr>';
echo '<td>';
if($rij['status'] == 'unread'){
echo '<img src="http://testarena.zesnul.nl/ledensystem/images/unread.gif">';
} else if($rij['status'] == 'read') {
echo '<img src="http://testarena.zesnul.nl/ledensystem/images/read.gif">';
} else {
echo '<img src="http://testarena.zesnul.nl/ledensystem/images/message.gif">';
}
echo '</td>';
echo '<td>';
echo '<form action="'.$SERVER['PHP_SELF'].'" method="post">';
$sa = 'SELECT * FROM inlog WHERE ID="'.$rij['from_ID'].'"';
$ms = mysql_query($sa) OR die (mysql_error());
$da = mysql_fetch_array($ms);
echo $da['naam'];
echo '</td>';
echo '<td>';
echo '<a href="?loginsysteem=postvak&action=read&berID='.$rij['ber_ID'].'">'.pb($rij['naam']).'</a>';
echo '</td>';
echo '<td>';
echo '<input type="checkbox" name="bericht" value="'.$rij['ber_ID'].'">';
echo '</td>';
echo '</tr>';
}
echo '</table>';
echo '<input type="hidden" name="verwijder">';
echo '<input type="submit" value="Verwijder de berichten">';
echo '</form> ';
}
?>
if($_POST['verwijder']){
$sql = 'DELETE FROM PB WHERE to_ID="'.$_SESSION['ID'].'" AND ber_ID="'.$_POST['bericht'].'"';
$result = mysql_query($sql);
if ($result) {
echo 'De berichten zijn verwijdert';
} else {
echo 'De berichten zijn niet verwijdert.<br />';
echo 'Database fout: ' . mysql_error();
}
}
echo '<table border="0" width="100%">';
<tr>
<td><b>Status</td>
echo '<td>';
echo '<b>Van';
echo '</td>';
echo '<td>';
echo '<b>Onderwerp:';
echo '</td>';
echo '<td><input name="allbox" type="checkbox" value="Check All" onclick="InboxCheckAll();" /></td>';
echo '</tr>';
while($rij = mysql_fetch_array($fea)){
echo '<tr>';
echo '<td>';
if($rij['status'] == 'unread'){
echo '<img src="http://testarena.zesnul.nl/ledensystem/images/unread.gif">';
} else if($rij['status'] == 'read') {
echo '<img src="http://testarena.zesnul.nl/ledensystem/images/read.gif">';
} else {
echo '<img src="http://testarena.zesnul.nl/ledensystem/images/message.gif">';
}
echo '</td>';
echo '<td>';
echo '<form action="'.$SERVER['PHP_SELF'].'" method="post">';
$sa = 'SELECT * FROM inlog WHERE ID="'.$rij['from_ID'].'"';
$ms = mysql_query($sa) OR die (mysql_error());
$da = mysql_fetch_array($ms);
echo $da['naam'];
echo '</td>';
echo '<td>';
echo '<a href="?loginsysteem=postvak&action=read&berID='.$rij['ber_ID'].'">'.pb($rij['naam']).'</a>';
echo '</td>';
echo '<td>';
echo '<input type="checkbox" name="bericht" value="'.$rij['ber_ID'].'">';
echo '</td>';
echo '</tr>';
}
echo '</table>';
echo '<input type="hidden" name="verwijder">';
echo '<input type="submit" value="Verwijder de berichten">';
echo '</form> ';
}
?>
Let overigens wel op met het woord verwijderen. Het doet meer dan je denkt, en helemaal als het fout gaat. Je kunt misschien beter met een bepaalde status werken.
Gewijzigd op 01/01/1970 01:00:00 door Simon Kroes
foreach. Door erop te klikken kun je er meer over lezen ;-).
Je doorloopt een array met Hoop dat het lukt
:o </b> vergeten
Dat niet alleen. Je echo't de HTML niet, maar zet ze er gewoon tussen terwijl de PHP tag nog openstaat.
Dat snap ik niet helemaal
Code (php)
Dat staat er in jouw code. Je echo't <tr><td><b>Status</td> niet, het staat er alleen maar tussen. PHP wil dit gaan zien als een functie, variabele of whatever, maar niet als HTML, wat wel jouw bedoeling is. Je zult dit stukje dus ook even moeten echo'en:
maar dat is nog zon 300 regels langer.
Als ik eerlijk moet zijn lukt het niet helemaal met die array
Wat of waar gaat het precies fout?
waarom weet ik niet
Dat moet toch ook? :'-)
Niet bedoel ik, sorry
Heb je een stuk code voor me?
ik snap nog zelfs niet helemaal hoe het werkt
ben al voor de 3de keer bezig met die php.net door te lezen maar kom er niet uit
Kijk maar eens:
Code (php)
Nu zal ieder woord in de array in $woord gestopt worden en zal deze geëcho'd worden. Als foreach dat woord gehad heeft, pakt hij het volgende woord (indien dat er is) en stopt deze in $woord. Nu bevat $woord niet meer het woord van net, maar het volgende woord.
Foreach staat dus voor 'voor elk element in de array, doen we dit'. Dat 'doen we dit' staat tussen de accolades ( { en } ). In bovenstaande code wordt elk element geëcho'd.
Als je nu ook nog de sleutel van een element array erbij wilt hebben, kun je dat zo doen:
Code (php)
Nu wordt hetzelfde gedaan als net, alleen wordt nu ook nog de sleutel meegegeven. In $sleutel zullen dus omstebeurt woord1, woord2, woord3 en woord4 komen te zitten. In $woord komen weer dit, is, een en lijst te zitten.
Datzelfde doen we met je $_POST waardes die uit je formulier komen. $_POST is immers een array. Maar in een array kan ook weer een andere array zitten. In dit geval hebben we daar mee te maken.
Code (php)
Nu haal je ieder element in $_POST op. $key bevat in dit geval de veldnaam die je aan het veld gegeven hebt. $waarde bevat de ingevoerde waarde.
In ons geval zal één van de $waarde variabelen een array bevatten. Namelijk de array met alle checkboxen die aangevinkt zijn. Kijk maar eens:
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
<?php
foreach($_POST as $key => $waarde) {
// eerst even kijken of $waarde wel een array is, want dat is niet altijd het geval
if(is_array($waarde)) {
foreach($waarde as $checkbox) {
echo "Checkbox (" . $checkbox . ") is aangevinkt.";
}
} else {
echo $key . " bevat " . $waarde . " in \$_POST. <br />";
}
}
?>
foreach($_POST as $key => $waarde) {
// eerst even kijken of $waarde wel een array is, want dat is niet altijd het geval
if(is_array($waarde)) {
foreach($waarde as $checkbox) {
echo "Checkbox (" . $checkbox . ") is aangevinkt.";
}
} else {
echo $key . " bevat " . $waarde . " in \$_POST. <br />";
}
}
?>
Nu bevat $checkbox stuk voor stuk de waardes van de checkboxen die aangevinkt waren. Je geeft in je formulier aan iedere checkbox het ID van een bericht als value. Zodra deze is aangevinkt, komt die value dus in de array te zitten. Als we nu op de plek van echo "Checkbox (" . $checkbox . ") is aangevinkt."; een query zetten die met $checkbox (welke dus het ID van een bericht bevat) dat bericht verwijderd. Dan wordt die dus verwijderd.
Nou het is uiteindelijk toch een heel verhaal geworden, maar hoop dat je het snapt.
Gewijzigd op 01/01/1970 01:00:00 door Jesper Diovo
Alleen 1 ding snap ik nog niet
als ik id 10 en 11 geselecteert heb, dan geeft hij aan:
bericht bevat 10 in $_POST.
verwijder bevat Verwijder de berichten in $_POST.
en niet 10 en 11?
Gewijzigd op 01/01/1970 01:00:00 door Simon Kroes
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
//ff echotje voor al je html ...
echo '
HTML
HTML
HTML
HTML
HTML
HTML
HTML
HTML
HTML
HTML
';
?>
//ff echotje voor al je html ...
echo '
HTML
HTML
HTML
HTML
HTML
HTML
HTML
HTML
HTML
HTML
';
?>
Kevichill schreef op 16.04.2008 03:27:
je kan de html toch ook zo echo'en ?
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
//ff echotje voor al je html ...
echo '
HTML
HTML
HTML
HTML
HTML
HTML
HTML
HTML
HTML
HTML
';
?>
//ff echotje voor al je html ...
echo '
HTML
HTML
HTML
HTML
HTML
HTML
HTML
HTML
HTML
HTML
';
?>
Weet ik,
maar ik vind handiger ( en overzichterlijker )
als het in meerderen is