Autor Zpráva
Fisak
Profil
Zdravím. Zkouším nově políčko hidden a chtěl bych abych pomocí něj mohl mazat určité záznamy z db.. jenomže mám např. tři čísla:
5456156
6841355
8465199
a když budu chtít smazat jakékoliv smaže se vždy to poslední.
Kod:
//smazání banu
if(isset($_POST['delete_ip_ban']))
{
        
    db::query_system("DELETE FROM banip WHERE ipaddress = '".mysql_real_escape_string($_POST['ipban'])."'");
        
    redirect_page("admin", "ip_blocking");
    
}
<form method="post">
<fieldset>
<legend>Seznam zablokovaných</legend>
<table>
<?php
$sqlip = db::query_system("select * from banip");
while($dataip = mysql_fetch_assoc($sqlip)){

    echo "<tr><td>".$dataip['ipaddress']."</td><td>".$dataip['note']."</td><td>".$dataip['date']."</td><td><input type='hidden' value=".$dataip['ipaddress']." name='ipban'><input name=\"delete_ip_ban\" type=\"submit\" id=\"form\" value=\"".ucfirst(translate("delete"))."\"/></td></tr>";

}
?>
</table>
</fieldset>
</form>
noName
Profil *
Musle by jsi ty čísla rozdlit například 345, 678, 899 a potom to pomocí funkce explode() rozdělil tyto čísla na pole. Pak by jsi pomocí foreach prošel pole s čísly a smazal je postupně.
Alphard
Profil
[#2] noName
Co, jak, kde prosím? Aby z toho nebyla ještě větší patlanina než [#1].

[#1] Fisak
Pochopitelně, neexistuje vazba mezi polem s IP adresou a použitým odesílacím tlačítkem. Musel byste pro každý řádek generovat nový formulář, pak by to fungovalo.
Fisak
Profil
Alphard:
aha dobře... a mohu se zeptat jak to děláš ty ??
Someone
Profil
Já to řeším takto:
<?php
$sqlip = mysql_query("select * from ip");
$i = 1;
while($dataip = mysql_fetch_assoc($sqlip)){
    echo "
        <tr>
            <td>".$dataip['ipaddress']."</td>
            <td>".$dataip['note']."</td>
            <td>".$dataip['date']."</td>
            <td>
                <form method='POST'>
                    <input type='hidden' value=".$dataip['ipaddress']." name='ip".$i."'>
                    <input name=\"delete".$i."\" type=\"submit\" value=\"Odstranit\"/>
                </form>
            </td>
        </tr>";
        if (isset($_POST['delete'.$i])) {
          mysql_query("DELETE FROM tabulka WHERE tabulka.ip='".$_POST['ip'.$i]."'")
        }
        $i++;
}
?>
Alphard
Profil
[#4] Fisak
Záleží na situaci, když chci povolit změnu více položek najednou, tak samozřejmě checkboxy.

Pokud maximálně jednou, nastane problém. Nejjednodušší je netahat to přes post, ale dát tam normální odkaz s bezpečnostním tokenem a pro provedení přesměrovat. Toho se většinou držím. Když úroveň zabezpečení vyžaduje použít post, tak zřejmě více formulářů, nebo si hrát s věcmi jako
<form method="post">
 <input type="submit" name="send[]" value="1" />
 <input type="submit" name="send[]" value="2" />
 <input type="submit" name="send[]" value="3" />
</form>

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm: