Autor Zpráva
mORb
Profil *
mam vypis sprav pre daneho uzivatela:

<?

while($msg = mysql_fetch_array($messages))
{
if($msg[precitane]==0):
echo'<tr><td class="message_chckb_c"><input type="checkbox" name="chcb"></td><td class="nick_c"><a href="index.php?page=message_read&id_mes='.$msg[id_mes].'" class="smallhyp_o">'.$msg[Login].'</a></td><td class="datum_c">'.$msg[datum_odos].' - '.$msg[cas_odos].'</td><td class="message_neprecit_c">Neprečítaná</td></tr>';
else:
echo'<tr><td class="message_chckb_c"><input type="checkbox" name="chcb"></td><td class="nick_c"><a href="index.php?page=message_read&id_mes='.$msg[id_mes].'" class="smallhyp_w">'.$msg[Login].'</a></td><td class="datum_c">'.$msg[datum_odos].' - '.$msg[cas_odos].'</td><td class="message_precit_c">'.$msg[precitane].'</td></tr>';
endif;
}
?>

potom po vypise nasleduju moznosti:

<td><input type="submit" name="delete" value="Všetky" class="login_butt"></td>

<td><input type="submit" name="delete" value="Označené" class="login_butt"></td>
<td><input type="submit" name="delete" value="Neoznačené" class="login_butt"></td>
<input type="hidden" name="odeslano" value="ano">

a po stlaceni "Oznacene" chcem aby sa mi vymazali z DB vsetky spravy ktore su oznacene a "Neoznacene" aby sa vymazali neoznacene.. v ramci jedneho <form> dikes moc za kazdu radu
Joker
Profil
Za prvé teď máte všechny ty checkboxy pojmenované stejně. Budete muset každý pojmenovat jinak.
Nejspíš tak, že si v tom while uděláte nějaký index, který budete přidávat ke jménu checkboxu, takže se budou jmenovat "chcb0", "chcb1", "chcb2",...

No a potom už zaškrtnutí třeba checkboxu chcb12 zjistíte takhle:
if(isset($_POST["chcb12"])...
(respektive $_GET, pokud používáte metodu GET)

Nevýhoda tohohle je, že potom při tom mazání byste asi pároval checkboxy s řádky tabulky na základě jejich pořadí, takže pokud by mezitím někdo třeba přidal nebo vymazal řádek, můžete smazat jinou zprávu, než bylo původně zamýšleno.
Takže bych k tomu checkboxu přidal ještě:
'<input type="hidden" name="idmsg'.$i.'" id="idmsg'.$i.'" value="'.$msg["id_mes"].'">'

No a potom při tom čtení:
if(isset($_POST["chcb".$i])) {
$idmsg = intval($_POST["idmsg".$i]);
...
}
mORb
Profil *
no uz to funguje ale zatial mi to vymazava len po jednej sprave aj ked ich mam oznacenych viac...neviem ako tam dalej spravit cyklus kedze s php len zacinam... mam to takto:

if($delete=="Označené"){

if(isset($_POST["chcb".$i])) {
//$idmsg = intval($_POST["idmsg".$i]);
mysql_query("delete from message where id_mes='$i'");
echo Mysql_error();
}
}
mORb
Profil *
teda tie spravy sa vymazu ale kolko sprav som vymazal tolkokrat musim dat refresh:) a postupne mi tie spravy miznu..
Joker
Profil
Problém toho Vašeho skriptu je, že to $i není stejné jako id_mes. Od toho jsem tam právě já měl to neviditelné pole, ve kterém bylo uložené id.

A za druhé to musíte dát celé do cyklu... něco jako:
for($i=0; $i < $pocet_zprav; $i++){
if(isset($_POST["chcb".$i])) {
$idmsg = intval($_POST["idmsg".$i]);
if(!mysql_query("delete from message where id_mes=$idmsg")) echo Mysql_error();
}
}

Jinak já bych si možná radši v tom cyklu sestavil SQL dotaz a až potom ho provedl najednou (tady pokud vymazáváte třeba 50 zpráv, potřebujete 50 dotazů do databáze), ale na druhou stranu pokud v tom někde uděláte chybu, tak taky můžete vymazat všechny zprávy v databázi, takže nevím, jestli to mám doporučovat...
Feri
Profil *
ako spravím, aby, ak je zaškrtnutý checkbox, aby sa obnovilo textové pole - predtým je pole "readonly" a políčko je predtým nezaškrtnuté...viete mi niekto pomôcť?
Toto téma je uzamčeno. Odpověď nelze zaslat.

0