Autor Zpráva
Marcus Flintus
Profil
Ahoj všichni,

mám na vás dotaz:
měl jsem za to, že když mám následující chceckbox v "postovaném" formuláři
<input class="check" type="checkbox" name="kopii" value="1" />

tak mi to při zaškrtnutí odešle $_POST["kopii"] = 1; ...

Nicméně to funguje tak, že pokud je zaškrtnutý, odešle $_POST["kopii"] = ""; a pokud je prázdný, neodešle vůbec nic.

Jakto? Mýlil jsem se předtím?

Díky
Marcus Flintus
Profil
Ha, automatické odkazy vložené do kódu, který jsem vložil napovídají, že jsem se zjevně mýlil.
Alphard
Profil
Marcus Flintus:
tak mi to při zaškrtnutí odešle $_POST["kopii"] = 1;
Ano, to je očekávatelné chování.
Můžete to vyzkoušet:

<?php
if (isset($_POST))
{
  foreach ($_POST as $id => $akce)
  {
    echo "$id => $akce";
  }
}
?>
<form method="post">
<input class="check" type="checkbox" name="kopii" value="1"> Test <br>

<input type="submit">
</form>


Mně to vypisuje kopii => 1
Flexa
Profil
Myslím, že zvolená hodnota 1, je dost nešťastná... Ona totiž ta jednička, co se vypíše, je podle mě vyjádření hodnoty true, kterou má odeslaný checkbox. Zkuste tam dám cokoliv jiného a stále by se měla vypisovat jednička.

PS: Není mi dost jasné, k čemu je potřeba, aby checkbox posílal value - když znáte name odeslaného checkboxu, tak přiřadit k němu hodnotu není snad problém...
DoubleThink
Profil *
Zkuste tam dám cokoliv jiného a stále by se měla vypisovat jednička.
Nesmysl. Implicitní hodnota checkboxu je "on"

Není mi dost jasné, k čemu je potřeba, aby checkbox posílal value
Value u checkboxu se používá běžně i u booleovských hodnot - programátoři se neradi spoléhají na to "on", které se taky může za pět let změnit.

Myslím...
Udělej nám laskavost, radši nemysli.

Marcus Flintus
Tvůj kód funguje, jak už psal Alphard. Podle mě máš někde dál ve formu prázdný textový input s name="kopii", který ti při parsování globálních polí ten checkbox přepíše.

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:

0