<?
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.";
}
?>
zet regel 14 eens gelijk achter de delete query (dan wordt het dus regel 12)
en kijk of je het dan nog ziet staan..
dan geeft hij niet meer

"Bericht(en) verwijderd."

Ik heb hem een beetje verander:

<?
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..
en als je alle ` weghaald uit je query??
hij verwijderd nogsteeds allen de laatste..
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.
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.


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..
<?
$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.
$_POST['messageID'] is een id die uit een database word gehaald..

Een $_POST komt uit een formulier. Dus hoe bedoel je dit?
Dit heb ik nu:

<?
$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:)
Al die checkboxen hebben: name=messageID[] ? Of anders?

Als dat zo is kun je dit doen:
<?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>';
}
}
?>
Edit: Code gewijzigd.
Warning: Invalid argument supplied for foreach() in D:\wamp\www\Dark-War\pm.php on line 40

:( dat is :
<?
foreach($_POST['messageID'] as $msgid)
?>

Dit is het script waar de checkboxen in staan:

<?
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>
?>

Reageren