Autor Zpráva
Afrod
Profil
Ahoj lidi sem v PHP velkej začátečník, ale teď sem narazil na problém a nevím si sním rady. Mám formulář a dělám na něm rolovací seznamy a pak celej form posílám na mail, ale problém je v tom, že se odešle všechno jenom né ty seznamy nevíte kde mám chybu?
Takhle vypadá moje fce:
function druhP()
{
$druh=array(1=>"Jak zhubnout", "Tvarování postavy");
      echo "<select>";
        for ($i=1; $i<=2;$i++) echo "\t<option value=$i>".$druh[$i]."</option>\n";
        echo "</select>";

}

Zkoušel jsem odeslat jak tu fci, tak i tu proměnnou $druh, ale nefunguje mi ani jedno. Ve zprávě co příde na mail se mi ukáže pouze a jen prázdnej řádek. Nevíte kde mám chybu?
Pokud budete chtít ještě něco vědět napište to.
Alphard
Profil
Select musí mít nějaké name, aby se pak mohlo odeslat value.
Jestli vám můžu kecat do stylu psaní, udělal bych to nějak takhle:

function druhP()
{
  $druh=array(1=>"Jak zhubnout", "Tvarování postavy");  // delší pole se obvykle také rozepisují na víc řádků

  echo "<select name=\"druhP\">";
    foreach ($druh as $klic => $hodnota)
    {
      echo "\t<option value=$klic>".$hodnota."</option>\n"; 
    }
  echo "</select>";
}
Afrod
Profil
Tak sem tomu dal jmeno a napsal name. Ted ale když už se to odešle, tak se v mailu zobrazí 1 místo toho zvolenýho. Co mám zas blbě?
Alphard
Profil
V minulém příspěvku jsem už trochu upravil váš kód (foreach), ale jestli je ještě čas provádět změny, bylo lepší mít obecnou funkci pro výpis selectu a hodnoty dodávat jako parametry.

function vypisSelect($name, $pole)
{
  echo "<select name=\"$name\">";
    foreach ($pole as $klic => $hodnota)
    {
      echo "\t<option value=$klic>".$hodnota."</option>\n"; 
    }
  echo "</select>";
}

$druhP = array(1=>"Jak zhubnout", "Tvarování postavy");
vypisSelect("druhP", $druhP);


Snad to není na začátek moc náročné. Ale funkce už stejně používáte.
Afrod
Profil
Posílám zde úryvek toho "prasečího" kódu:
$druh=$_POST['program'];

function druhP()
{
$druh=array(1=>"Jak zhubnout", "Tvarování postavy");
echo "<select name=\"program\">";
for ($i=1; $i<=2;$i++) echo "\t<option value=$i>".$druh[$i]."</option>\n";
echo "</select>";

}

V tom Vašem kódu nevim kde mam vzít ten $klic,$pole a následně $hodnota já to zatim nechápu. Prvně musim pochopit to co píšu teď a pak se pokusim pochopit Váš kód.
Alphard
Profil
Afrod:
V tom Vašem kódu nevim kde mam vzít ten $klic,$pole
$klic se nastaví ve foreach, to je speciální cyklus pro procházení pole.
$pole jsem předal jako parametr funkce vypisSelect().

Vkládejte prosím kódy mezi značky [pre] a [/pre] (stačí kliknout na ).
Afrod
Profil
Do mailu mi přijdou pouze čísla jak je to možný? Vždyť ta promenná $i se má řídit podle toho pole ne?
Alphard
Profil
Ve value máte jen klíč pole. Buď ho před odesláním využijte k vybrání správného prvku z pole, nebo vložte do value požadovaný řetězec (nezapoňte ho ošetřit, nesmí tam být např. uvozovky).

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: