Autor Zpráva
Asterofix
Profil *
Ahoj, právě jsem začal dělat na jedné návštěvní knize a zjistil jsem, že pro některé body formuláře bude lepší zvolit přepínače a rozevírací seznamy... , ale narazil jsem na jeden problém - napsal jsem si pár podmínek v php na zjištění zda jsou zadána povinná pole formu a pokud ne, skript se zastavý a vypíše se něco jako "Nezadali jste jméno" ale ostatní vyplněné políčka zůstanou s původními hodnotami tzn. form vypadá asi takhle:

<input type="text" name="email" value="<?php echo $email; ?>" size="40" maxlength="30" class="email">

ale nemůžu vymyslet žádný způsob, který by šel použít pro rozevírací seznam a přepínač, když html vypadá takhle:
<select size="1" name="seznam">
<option value="volba1" selected>Volba1</option>
<option value="volba2">volba2</option> .... </select>


Prosím tedy kohokoli, kdo má s tímto zkušenosti o radu. Díky předem za pomoc
bukaj
Profil
Asterofix
To se bude muset řešit přeš atribut selected. Takže něco jako:
<option value="volba1"<?php echo $_REQUEST['seznam'] == 'volba1' ? ' selected="selected"' : ''; ?>>Volba1</option>

Samozřejmě jde dát do podmínky, že když je seznam prázdný, tak se doplní výchozí hodnota např. 'volba1'.
zool
Profil *
Jako chcete, aby když to vyplní špatně zůstalo vybráno to políčko které si zvolil??? Tak to se pak udělá jednoduše: zjistite, ktere policko si vybral(to bude v položce seznam) a pak jestli hodnota souhlasi s value tak se tam vypiše selected...
př.

<select size="1" name="seznam">
<option value="volba1" <? if(isset($_POST["seznam"])){if($_POST["seznam"] == volba1){echo "selected="selected"";}} ?> >Volba1</option>
<option value="volba2">volba2</option> .... </select>
Asterofix
Profil *
bukaj
nějak jsem to nepochopil (s tímhle žádný zkušenosti nemám), ale i tak díky

zool
Díky moc, funguje to skvěle, taky jsem myslel, že to asi půjde přes podmínky, ale nevěděl jsem přesně jak na to... teď jsem to ještě nějak sesmolil pro ten přepínač a vše funguje jak jsem chtěl :-) Takže ještě jednou díky za pomoc
zool
Profil *
Asterofix

Od bukaje je to taky dobře, akorát nekontroluje zda seznam byl odeslan či nokoliv
Asterofix
Profil *
zool

Aha, no ale k čemu je tam ten otazník? (V php tolik zkušeností nemám takže mě prosím omluvte)
M**
Profil *
<? ten otazník do sebe uzavírá php kód ?>
http://www.linuxsoft.cz/article.php?id_article=176
World
Profil
on nejspíše myslel tento otazník: ...== 'volba1' ? ' selected...
M**
Profil *
World
neřekl bych. nebo se se přepsal. on napsal zool
a to cos napsal ty, napsal bukaj
Asterofix
Profil *
World

Ano, přesně tak, měl jsem na mysli ten otazník uprostřed (zas tak špatně na tom nejsem, abych neznal tohle <? ?> :-))
...== 'volba1' ? ' selected...

Takže ví to někdo?
bukaj
Profil
Asterofix
Jde o podmíněný operátor, někdy zvaný ternární (protože má 3 členy).
První člen (před otazníkem) je testovaný výraz.
Pokud se 1. člen vyhodnotí jako TRUE, tedy pravdivý, je vrácen druhý člen (mezi otazníkem a dvojtečkou).
A pokud je 1. člen vyhodnocen jako FALSE, neboli nepravda, je vrácena hodnota třetího členu (za dvojtečkou).

Př.:

$promenna = $je_pravda ? 'ANO' : 'NE';

//je to samé jako:

if($je_pravda){
$promenna = 'ANO';
}else{
$promenna = 'NE';
}


Je to v podstatě zkrácený zápis podmínky IF.
Asterofix
Profil *
bukaj

Díky za vysvětlení, hned to na něčem vyzkouším ;-)
Mastodont
Profil
Pokud ten select obsahuje hodně položek, tak já bych namísto if u každé položky prostě vzal ten seznam jako string a zavolal str_replace($_POST["seznam"], $_POST["seznam"] . ' selected="selected"' ', $select)

Chybějící uvozovky a tak si jistě doplníte sami.

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: