Autor Zpráva
Tomashek
Profil
Zdravím. Mám tenhle problém:
potřeboval bych aby když zaškrtnu více checkboxů, tak aby se updatlo ty řádky v sql tabulce, které jsou vybrané pomoci checkboxu.
mám daný select- jakou akci chci vybrat (zatím pouze jedna-vymazání za pomoci editace sloupce smazané na 1)

if(isset($submit)){ //jestli je odeslaný formulář
if($oznacene=="delete"){ //jestli je vybraná akce delete 
if($smaz=="$delete_id"){MySQL_Query("UPDATE sz SET smaz_pr='1' where id='$smaz'") or die (mysql_error());} //úprava  zprávy kde je zaškrtnutý checkbox $delete_id je id zprávy a smaz_pr je smazani u prijimatele (to samé je i u odesilatele)
}
header("Location:/message"); // presmerovani zpet
}


Mě to funguje jenom s prvním vybraným checkboxem ...ostatní nic neudělaly

Snad to jde pochopit. Díky
Akacko
Profil
Tomashek
Musíš udělat pole checkboxů
<input type="ceckbox" name="vyber[]"  value="neco"/>

Po odeslaní to zpracuješ takto:
UPDATE sz SET smaz_pr='1' where id in (' . implode(',',$_POST['vyber']) . ')
Tomashek
Profil
když nastavím name="vyber[]" tak to nezměni nic, jinak to změni pouze ten jeden :-(
Akacko
Profil
Tomashek
a změnil jsi i ten SQL dotaz? Popř. ukaž, jak máš napsány ty checkboxy.
Tomashek
Profil
<input type=\"checkbox\" name=\"vyber\" value=\"$oznac_id\">


a pak porovnavam: nejprve jestli je odeslan formular, pak jesli akce je smazat a pak jestli vyber je rovnu idu

if(isset($submit)){  //akce 
if($oznacene=="delete"){
if($vyber=="$oznac_id"){MySQL_Query("UPDATE sz SET smaz_pr='1',prectene='1' where id='$vyber'") or die (mysql_error());}
}
}


jak jsem mel vyber[] tak mě napadlo ze musi byt taky v podmince
if($vyber[]=="$oznac_id")


ale to mi hodilo error
Akacko
Profil
Tomashek
Já myslel, že tam máš více checjboxů. Něco jako
<input type="checkbox" name="vyber[]" value="$oznac_id1">
<input type="checkbox" name="vyber[]" value="$oznac_id2">
<input type="checkbox" name="vyber[]" value="$oznac_id3">

if(isset($submit))
{  //akce 
mysql_query("UPDATE sz SET smaz_pr='1', prectene='1' WHERE id in (implode(',',$_POST['vyber'])") or die (mysql_error());
}

nebo to můžeš udělat pomocí foreach() což není tak elegantní
<input type="checkbox" name="vyber[]" value="$oznac_id1">
<input type="checkbox" name="vyber[]" value="$oznac_id2">
<input type="checkbox" name="vyber[]" value="$oznac_id3">

if(isset($submit))
{
foreach($_POST['vyber'] as $vyber)
{
mysql_query("UPDATE sz SET smaz_pr='1', prectene='1' WHERE id=$vyber)") or die (mysql_error());
}
}
Tomashek
Profil
já to mám v cyklu takže těch checkboxů tam je víc a u každého je jiné id
Akacko
Profil
Tomashek
Potom by to mělo fungovat jak jsem napsal, akorát ten input v cyklu změň na
<input type="checkbox" name="vyber[]" value="$oznac_id">
Tomashek
Profil
opravdu to nejde :'-( musel jsem to dát do 2 echo protože nemůže být v echo'$hodnota' vypsalo by to $hodnota a ne to co v ni je
hodím sem přijaté zprávy snad z toho půjde něco vyčíst

else {   //prijate zpravy
echo'<form action="" method="post" >
<table style="text-align:left;" align="center" border="0" cellspacing="0" cellpadding="0" width="700px">
<tr><td><font size="6px">Předmět</font>
       <td><font size="6px">Odesílatel</font>
       <td><font size="6px">Čas odeslání</font></td></tr>
<tr><td height="20px">';

while($vypis=MySQL_Fetch_Array($query)){   //cyklus ktery vypise vsechny zpravy ktere jsou v db a kde prijimatel je váš nick
$id=$vypis['id'];
$oznac_id=$vypis['id'];

echo"<tr><td height=\"35px\" width=\"265px\"><a href=\"/?str=message&amp;akce=read&amp;id=$id\" class=\"a\">".$vypis['predmet']."</a>   //vypise predmet
 
                <td height=\"35px\"><a class=\"a\">".$vypis['odesilatel']."</a>    //vypise kdo poslal
              
                <td height=\"35px\" width=\"170px\"><a class=\"a\">".$vypis['cas']."</a></td>";     //vypise kdy poslane

 echo'<td><input type="checkbox" name="vyber"';echo" value=\"$oznac_id\"></td></tr>";   //tohle je ten checkbox  ..kdyz mu dam name="vyber[]" tak to neudela vubec nic

if(isset($submit)){  //akce 
if($oznacene=="delete"){       //smazat
if($vyber=="$oznac_id"){MySQL_Query("UPDATE sz SET smaz_pr='1',prectene='1' where id='$vyber'") or die (mysql_error());}
}

if($oznacene=="prectene"){    //prectene
if($vyber=="$oznac_id"){MySQL_Query("UPDATE sz SET prectene='1' where id='$vyber'") or die (mysql_error());}
}

if($oznacene=="neprectene"){   //neprectene
if($vyber=="$oznac_id"){MySQL_Query("UPDATE sz SET prectene='0' where id='$vyber'") or die (mysql_error());}
}
header("Location:/message");
}
echo'<tr><td colspan="4" align="right">     //odesilaci formular
<select name="oznacene" style="color: rgb(255, 255, 255); background-color: black;">
<option><---------Označené---------></option>
<option value="delete">Smazat</option>
<option value="prectene">Označ jako přečtené</option>
<option value="neprectene">Označ jako nepřečtené</option><input type="submit" name="submit" value="ok">
</select>
</table>
</form>';
Toto téma je uzamčeno. Odpověď nelze zaslat.