Autor Zpráva
Dieee
Profil
Ahoj, prosím pomozte začátečníkovi pochopit php. Já vim, že je to strašně jednoduchý, ale já na to nedokážu přijít, tak mě prosím trochu pomozte.
V html:
<ul>
<strong>
Vybirej zde: 
</strong>
<form action="reg.php" method="POST">
<select>
<option value="1" name="$1" >Rohlík</option>
<option value="2" name="$2" >Máslo</option>
<option value="3" name="$3" >Chleba</option>
<option value="4" name="$4" >Pokladni</option>
</select>
<input type="submit" value="Dalsi">
</ul>
</form>

V php přemýšlím, že by to mělo být nějak takhle:
<?php
$prom1 = $_POST["1"];
$prom2 = $_POST["2"];
$prom3 = $_POST["3"];
$prom4 = $_POST["4"];
if ($prom1) {echo "Po kliknutí na odeslat, bych byl přesměrován do rohliky.html(php) to už je jedno";}
elseif ($prom2) {echo "Po kliknutí na odeslat, bych byl přesměrován do maslo.html(php) to už je jedno";}
elseif ($prom3) {echo "Po kliknutí na odeslat, bych byl přesměrován do chleba.html(php) to už je jedno";}
else {echo Po kliknutí na odeslat, bych byl přesměrován do pokladni.html(php) to už je jedno;} 
?>

Jde mi o to, že když si člověk zvolí třeba rohlíky pak dá odeslat přesune ho to na stránku kterou určím a tam bude mít obsah něčeho, třeba těch rohlíků. Děkuji za jakoukoliv radu do začátku, ale poznámky typu měl sis to najít na netu..nebojte zkoušel jsem a nějak mi to prostě nejde do hlavy, potřebuju trochu šťouchnout :))
Majkl578
Profil
1) atribut name se neuvádí u jednotlivých optionů, ale u selectu.
2) v name se nepoužívá dolar, nemá tam smysl (ledaže bys to v PHP chtěl přijmout jako $_POST['$1'])
3) je vhodné položky formuláře pojmenovávat výstižně, např. pecivo místo $1, podobně tak i hodnoty možností (chleba místo 1)

V PHP pak v přijmeš:
a) řetězec, pokud select umožňuje vybrat jednu hodnotu (standardně)
b) pole, pokud má select vlastnost multiple a jméno má na konci [] (např. pecivo[])

Příklad formuláře:
<form method="post">
    <select name="pecivo">
        <option disabled selected>Vyberte si co chcete</option>
        <option value="rohlik">Rohlík</option>
        <option value="maslo">Máslo</option>
        <option value="chleba">Chleba</option>
        <option value="pokladni">Pokladní</option>
    </select>
    <input type="submit" name="submitter" value="Odeslat">
</form>

PHP script na zpracování:
if (isset($_POST['submitter'])) { //formulář byl odeslán
    if (isset($_POST['pecivo'])) { //pecivo bylov vybráno
        switch ($_POST['pecivo']) {
            case 'rohlik' :
                echo 'Chcete rohlík';
                break;
            case 'maslo' :
                echo 'Chcete máslo';
                break;
            case 'chleba' :
                echo 'Chcete chleba';
                break;
            case 'pokladni' :
                echo 'Pokladní vám nedáme';
                break;
            default : //pokud podvrhl hodnotu
                echo 'Není mi jasné co bys rád';
        }
    } else { //pokud nevybral hodnotu
        echo 'Na něco jsi zapomněl, šéfe';
    }
}
Dieee
Profil
Okamžitá a správná odpověd, fakt poklona, že mi to píše "The requested method POST is not allowed for ..." to zkusim nějak dopilovat s GET atd.. ale stejně by mě zajímalo když kliknu na odeslat co v php změnim místo echo 'Checete máslo', aby mě to hodilo novou stránku s obsahem třeba toho chleba..Mám mezi ten script hodit
include ('novastranka.html'); 
?
Majkl578
Profil
Dieee:
The requested method POST is not allowed for …
To vypadá na nějakou podivnou chybu web serveru.

Mám mezi ten script hodit…
Pokud to má házet na novou stránku, tak tam patří spíš přesměrování pomocí header, tedy:
header('Location: http://example.com/novastranka.html');
Nezapomeň, že při použití funkce header ještě nesmí být odeslán žádný výstup prohlížeči.
Medvídek
Profil
Dieee:
A nebo to udělat přes JS:

<form>
 <select name="URL" onchange="window.location.href=this.form.URL.options[this.form.URL.selectedIndex].value">
   <option value="">Vyberte si z pečiva:</option>
   <option value="http://x.com/rohliky/">Rohlíky</option>
   <option value="http://x.com/chleba/">Chleba</option>
   <option value="http://x.com/houskyy/">Housky</option>
   </select>
 </form>
Dieee
Profil
Majkl578:
To vypadá na nějakou podivnou chybu web serveru.
Nemám to přez server..mám to doma na pc, ale apache mám spuštený :))

Medvídek:
A nebo to udělat přes JS:
Já newim jestli je v mym případě dobrý si do toho ještě plést JS ?! I když ten script vypadá jednodušejc ?!...
Medvídek
Profil
Dieee:
že když si člověk zvolí třeba rohlíky pak dá odeslat přesune ho to na stránku kterou určím a tam bude mít obsah něčeho.
Proto bych to udělal JavaScriptem, přesměruje tě to na stránku hned po vybrání pečiva.
panther
Profil
Medvídek:
Proto bych to udělal JavaScriptem, přesměruje tě to na stránku hned po vybrání pečiva.
pokud JavaScriptem, tak ti dole chybí JavaScriptem skrytý submit, aby to nebylo na přítomnosti JS závislé.
Dieee
Profil
Tak děkuji moc, za vyřešní problému... to The requested method POST is not allowed for … bylo tím že ve
<form method="post">
    <select name="pecivo">
        <option disabled selected>Vyberte si co chcete</option>
        <option value="rohlik">Rohlík</option>
        <option value="maslo">Máslo</option>
        <option value="chleba">Chleba</option>
        <option value="pokladni">Pokladní</option>
    </select>
    <input type="submit" name="submitter" value="Odeslat">
</form>

ve formu chybělo action="*.php" :))
na JS zatim nemám "koule" =)) Moc děkuji za rady!!!

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: