Delete niet (foreach)
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
<?
elseif($_POST['quickactiontype'] == "delete") {
$array = array(
"".$_POST[messageID].""
);
foreach($array as $msgid) {
$dbres = mysql_query("SELECT * FROM `pms` WHERE `id`='$msgid' AND (`door`='{$data->login}' OR `naar`='{$data->login}')") or die(mysql_error());
if($message = mysql_fetch_object($dbres)) {
mysql_query("DELETE FROM `pms` WHERE `id`='$msgid'") or die(mysql_error());
}
}
echo"Bericht(en) verwijderd.";
}
?>
elseif($_POST['quickactiontype'] == "delete") {
$array = array(
"".$_POST[messageID].""
);
foreach($array as $msgid) {
$dbres = mysql_query("SELECT * FROM `pms` WHERE `id`='$msgid' AND (`door`='{$data->login}' OR `naar`='{$data->login}')") or die(mysql_error());
if($message = mysql_fetch_object($dbres)) {
mysql_query("DELETE FROM `pms` WHERE `id`='$msgid'") or die(mysql_error());
}
}
echo"Bericht(en) verwijderd.";
}
?>
Gewijzigd op 01/01/1970 01:00:00 door - -
en kijk of je het dan nog ziet staan..
"Bericht(en) verwijderd."
Ik heb hem een beetje verander:
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
2
3
4
5
6
7
8
9
10
11
12
13
<?
elseif($_POST['quickactiontype'] == "delete") {
$array = array(
"".$_POST[messageID].""
);
foreach($array as $msgid) {
mysql_query("DELETE FROM `pms` WHERE `id`=$msgid") or die(mysql_error());
echo"Bericht(en) verwijderd.";
}
}
?>
elseif($_POST['quickactiontype'] == "delete") {
$array = array(
"".$_POST[messageID].""
);
foreach($array as $msgid) {
mysql_query("DELETE FROM `pms` WHERE `id`=$msgid") or die(mysql_error());
echo"Bericht(en) verwijderd.";
}
}
?>
Nu verwijderd hij alleen de laagste id..
Gewijzigd op 01/01/1970 01:00:00 door - -
en als je alle ` weghaald uit je query??
hij verwijderd nogsteeds allen de laatste..
$array = array("".$_POST[messageID]."");
Waarom de "" aan het begin en aan het eind: Kun je weglaten.
Waarom geen enkele quotes in $_POST[messageID]: Moet zijn $_POST['messageID']
Wat zit er in $_POST['messageID']? Is dat een array()? Dan krijg je een array() in een array().
En je kijkt eerst in de WHERE ..=.. AND (..=.. OR ..=..)
Als daar iets op wordt gevonden dan DELETE je alles met een hele andere WHERE namelijk WHERE ..=..
Verder check je niet of er wel iets is verwijderd, maar je geeft wel de melding.
SanThe schreef op 19.11.2006 17:22:
Erg vaak stukje script.
$array = array("".$_POST[messageID]."");
Waarom de "" aan het begin en aan het eind: Kun je weglaten.
Waarom geen enkele quotes in $_POST[messageID]: Moet zijn $_POST['messageID']
Wat zit er in $_POST['messageID']? Is dat een array()? Dan krijg je een array() in een array().
En je kijkt eerst in de WHERE ..=.. AND (..=.. OR ..=..)
Als daar iets op wordt gevonden dan DELETE je alles met een hele andere WHERE namelijk WHERE ..=..
Verder check je niet of er wel iets is verwijderd, maar je geeft wel de melding.
$array = array("".$_POST[messageID]."");
Waarom de "" aan het begin en aan het eind: Kun je weglaten.
Waarom geen enkele quotes in $_POST[messageID]: Moet zijn $_POST['messageID']
Wat zit er in $_POST['messageID']? Is dat een array()? Dan krijg je een array() in een array().
En je kijkt eerst in de WHERE ..=.. AND (..=.. OR ..=..)
Als daar iets op wordt gevonden dan DELETE je alles met een hele andere WHERE namelijk WHERE ..=..
Verder check je niet of er wel iets is verwijderd, maar je geeft wel de melding.
1.
ik gebruik "", omdat ik "".$_POST['messageID']."" had en anders krijg je een error met ".$_POST['messageID']."
2.
$_POST[messageID] had ik omdat ik even had zitten kijken of dat misschien hielp vergeten terug te zetten.
3.
$_POST['messageID'] is een id die uit een database word gehaald..
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
<?
$sql = mysql_query("SELECT id, titel, bericht , door, naar, datum, gelezen FROM pms where inbox='1' ORDER BY datum DESC limit 0,5") or die (mysql_error());
while($pm = mysql_fetch_assoc($sql))
{
Echo'
<tr>
<td bgcolor="'.$bg2.'" align="center"><input class="input" type="checkbox" name="messageID" value="'.$pm['id'].'"></td>
<td bgcolor="'.$bg1.'"><b>'.$titel.'</b></td>
<td bgcolor="'.$bg2.'" align="center">'.$datum.'</td>
<td bgcolor="'.$bg1.'" align="center"><a href="index.php?message=pm&actie=reply&id='.$pm['id'].'"><img src="images/icons/pm_reply.gif" border="0" alt="reply"></a></td>
</tr>
';
}
?>
$sql = mysql_query("SELECT id, titel, bericht , door, naar, datum, gelezen FROM pms where inbox='1' ORDER BY datum DESC limit 0,5") or die (mysql_error());
while($pm = mysql_fetch_assoc($sql))
{
Echo'
<tr>
<td bgcolor="'.$bg2.'" align="center"><input class="input" type="checkbox" name="messageID" value="'.$pm['id'].'"></td>
<td bgcolor="'.$bg1.'"><b>'.$titel.'</b></td>
<td bgcolor="'.$bg2.'" align="center">'.$datum.'</td>
<td bgcolor="'.$bg1.'" align="center"><a href="index.php?message=pm&actie=reply&id='.$pm['id'].'"><img src="images/icons/pm_reply.gif" border="0" alt="reply"></a></td>
</tr>
';
}
?>
4.
dat had ik al verwijderd:)
martijn schreef op 19.11.2006 17:29:
ik gebruik "", omdat ik "".$_POST['messageID']."" had en anders krijg je een error met ".$_POST['messageID']."
Het kan gewoon zo: $var = $_POST['messageID'];
Dus zonder "" en zonder punten.
Quote:
$_POST['messageID'] is een id die uit een database word gehaald..
Een $_POST komt uit een formulier. Dus hoe bedoel je dit?
Code (php)
1
2
3
4
5
6
7
8
9
10
11
2
3
4
5
6
7
8
9
10
11
<?
$array = array(
$_POST['messageID']
);
foreach($array as $msgid) {
mysql_query("DELETE FROM pms WHERE id=$msgid") or die(mysql_error());
echo"Bericht(en) verwijderd.";
}
}
?>
$array = array(
$_POST['messageID']
);
foreach($array as $msgid) {
mysql_query("DELETE FROM pms WHERE id=$msgid") or die(mysql_error());
echo"Bericht(en) verwijderd.";
}
}
?>
en werkt nog niet dus meer uitleg:p:
het is voor een pm systeem in de inbox komen alle berichten te staan die naar je zijn verzonden voor ieder bericht staat een checkbox en onderaan staat een checkbox om alles te selecteren ook is er een select option daarmee kun je berichten op gelezen of ongelezen zetten maar je kunt ze ook verwijderen
Die checkboxen hebben de naam messageID en value id van het bericht..
Ik heb ook een knop "ok" en als je daar op drukt moet hij alle berichten die geselecteerd staan verwijderen (dan staat dus de select op delete)
Nou word alleen maar het bericht met het laagste id verwijderd terwijl ik meerdere berichten aangevinkt heb staan hoe maak ik dat alle aangevinkte berichten verwijderd worden:)
Hoop dat het nu duidelijk is:)
Gewijzigd op 01/01/1970 01:00:00 door - -
Als dat zo is kun je dit doen:
Code (php)
1
2
3
4
5
6
7
8
9
10
2
3
4
5
6
7
8
9
10
<?php
foreach($_POST['messageID'] as $msgid)
{
mysql_query("DELETE FROM pms WHERE id=$msgid") or die(mysql_error());
if(mysql_affected_rows())
{
echo 'Bericht ' . $msgid . ' is verwijderd.</br>';
}
}
?>
foreach($_POST['messageID'] as $msgid)
{
mysql_query("DELETE FROM pms WHERE id=$msgid") or die(mysql_error());
if(mysql_affected_rows())
{
echo 'Bericht ' . $msgid . ' is verwijderd.</br>';
}
}
?>
Edit: Code gewijzigd.
Gewijzigd op 01/01/1970 01:00:00 door - SanThe -
:( dat is :
Dit is het script waar de checkboxen in staan:
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
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
<?
Echo'
<tr>
<td bgcolor="'.$bg2.'" align="center"><input class="input" type="checkbox" name="messageID[]" value="'.$pm['id'].'"></td>
<td bgcolor="'.$bg1.'"><b>'.$titel.'</b></td>
<td bgcolor="'.$bg2.'" align="center">'.$datum.'</td>
<td bgcolor="'.$bg1.'" align="center"><a href="index.php?message=pm&actie=reply&id='.$pm['id'].'"><img src="images/icons/pm_reply.gif" border="0" alt="reply"></a></td>
</tr>
';
}
Echo'
</table>
<table width="100%" border="0" cellspacing="0" cellpadding="4">
<tr>
<td><input class="input" type="checkbox" name="ALL" value="ALL" onClick="SelectAll(this.form);"> Selecteer alles</td>
<td align="right"><select name="quickactiontype">
<option value="viewed">Markeren als gelezen</option>
<option value="notviewed">Markeren als niet gelezen</option>
<option value="delete">Verwijderen</option>
</select>
<input type="submit" name="quickaction" value="Ok"></td>
</tr>
?>
Echo'
<tr>
<td bgcolor="'.$bg2.'" align="center"><input class="input" type="checkbox" name="messageID[]" value="'.$pm['id'].'"></td>
<td bgcolor="'.$bg1.'"><b>'.$titel.'</b></td>
<td bgcolor="'.$bg2.'" align="center">'.$datum.'</td>
<td bgcolor="'.$bg1.'" align="center"><a href="index.php?message=pm&actie=reply&id='.$pm['id'].'"><img src="images/icons/pm_reply.gif" border="0" alt="reply"></a></td>
</tr>
';
}
Echo'
</table>
<table width="100%" border="0" cellspacing="0" cellpadding="4">
<tr>
<td><input class="input" type="checkbox" name="ALL" value="ALL" onClick="SelectAll(this.form);"> Selecteer alles</td>
<td align="right"><select name="quickactiontype">
<option value="viewed">Markeren als gelezen</option>
<option value="notviewed">Markeren als niet gelezen</option>
<option value="delete">Verwijderen</option>
</select>
<input type="submit" name="quickaction" value="Ok"></td>
</tr>
?>
Gewijzigd op 01/01/1970 01:00:00 door - -
Zet je bovenaan je script ALTIJD de volgende regels:
Mag nooit meer ontbreken!
Zie ook zeker de opmerking van Frank. De eerste keer dat je op de pagina komt bestaat $_POST (nog) niet, daar kan de foreach op vallen als je dat dus niet eerst controleert.
HET WERKT:D
Bedankt SanThe:D