Autor Zpráva
Ches
Profil *
Ahoj, chci se zeptat jestli jde nějak udělat to, že když mám ve formuláři otázku a výběr odpovědí za pomocí checkboxů nastavit aby bylo povinné minimálně jednu možnost zvolit.

Příklad:

Vyber alespoň jedno ovoce které bys chtěl mít v jídelníčku (možno zvolit více odpovědí): 
<input type="checkbox" name="ovoce1" value="jablko">Jablko<br>
<input type="checkbox" name="ovoce2" value="hruska">Hruška<br>
<input type="checkbox" name="ovoce3" value="banan">Banán<br>
<input type="checkbox" name="ovoce4" value="svestka">Švestka<br>

Návštěvník stránek bude odpovídat na otázku a pokud nezvolí nic, tak ho můj stávající skript bez problémů odešle, což je špatně, potřeboval bych, aby byla jedna z těchto čtyř možností nutností zadat.

Díky za rady
marek094
Profil
Ches:
Ano, jde.
Musíš do svého „stávajícího skriptu“ přidat podmínku.
panther
Profil
Ches:
pojmenuj si jednotlive prvky ne indexy, ale jako pole, tedy „ovoce[]“. Pak jen kontroluj, zde pole „ovoce“ existuje.
Ches
Profil *
No moje html stránka vypadá podobně jako jsem už uvedl a php skript zpracovává:

$dalsi_moznosti = $_POST['dalsi_moznosti'];
$ovoce1 = $_POST['ovoce1'];
$ovoce2 = $_POST['ovoce2'];
$ovoce3 = $_POST['ovoce3'];
$ovoce4 = $_POST['ovoce4'];
if ($dalsi_moznosti!=""  and $spam=="2") 
{ 
Mail("muj@mail.com, ","$predmet $jmeno $prijmeni",$zprava, $hlavicka); 
To znamená, že pokud volbu u ovoce nezaškrtnu, script běží dál a v pořádku se odešle.

A podle panthera by to mělo vypadat nějak takto?
HTML
<input type="checkbox" name="ovoce[]" value="jablko">Jablko<br>
<input type="checkbox" name="ovoce[]" value="hruska">Hruška<br>
<input type="checkbox" name="ovoce[]" value="banan">Banán<br>
<input type="checkbox" name="ovoce[]" value="svestka">Švestka<br>

a PHP
$dalsi_moznosti = $_POST['dalsi_moznosti'];
$ovoce[] = $_POST['ovoce'];
if ($dalsi_moznosti!="" and $ovoce="" and $spam=="2") 
{ 
Mail("muj@mail.com, ","$predmet $jmeno $prijmeni",$zprava, $hlavicka); 

PHPku nijak moc nerozumím, takže to možná je úplná pitomost.
blaaablaaa
Profil
if (!empty($_POST['dalsi_moznosti']) && isset($_POST["ovoce"]) && $spam=="2")
Ches
Profil *
blaaablaaa:

Díky to funguje. Ale teď nevím jak udělat to, aby mi odesílalo vybrané možnosti mailem.

Teď jsem měl v textu který se odesílal:

Vybrané ovoce: ".$ovoce1." ".$ovoce2." ".$ovoce3."

Pokud se checkbox nezaškrtl, tak se neodeslalo nic a pokud ano, tak hodnota checkboxu.
Alphard
Profil
Máte vůbec představu, co se dostane na server, nebo jen kopírujete kódy?
Vypište si data v post: var_dump($_POST);
Uvidíte strukturu příchozího pole, pak s použitím funkce implode() nebo třeba cyklu foreach můžete vygenerovat mail.
Ches
Profil *
Já chápu co se kam posílá, já potřebuju jen znát tvar té proměnné, která bude ve zprávě.
blaaablaaa
Profil
Ches:
var_dump($_POST); vypise:
array(1) {
  ["ovoce"]=>
  array(2) {
    [0]=>
    string(6) "jablko"
    [1]=>
    string(6) "hruska"
  }
}

Z cehoz je jasne, ze POST obsahuje pole ovoce o dvou prvcich.

Pokud chcete dostat seznam ovoce oddeleny carkami, pouzijete fci implode: implode(", ", $_POST["ovoce"])
Pokud chcete s vracenym polem dale pracovat, pouzijete foreachL
foreach ( $_POST["ovoce"] as $ovoce ) {
   echo $ovoce."<br>";
}

Toto jsou ale zakladni veci, ke kterym byste dosel sam, kdybyste alespon rozklikl a vyzkousel funkce, ktere poslal Alphard.
Ches
Profil *
Díky, měl jsem tam chybku v překlepu. Vše funguje.

Vaše odpověď


Prosím používejte diakritiku a interpunkci.

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