Autor | Zpráva | ||
---|---|---|---|
Asterofix Profil * |
#1 · Zasláno: 6. 8. 2007, 10:57:05
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 |
#2 · Zasláno: 6. 8. 2007, 11:05:53
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 * |
#3 · Zasláno: 6. 8. 2007, 11:10:46
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 * |
#4 · Zasláno: 6. 8. 2007, 12:00:33
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 * |
#5 · Zasláno: 6. 8. 2007, 13:26:22
Asterofix
Od bukaje je to taky dobře, akorát nekontroluje zda seznam byl odeslan či nokoliv |
||
Asterofix Profil * |
#6 · Zasláno: 6. 8. 2007, 14:34:00
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 * |
#7 · Zasláno: 7. 8. 2007, 09:06:02
<? ten otazník do sebe uzavírá php kód ?>
http://www.linuxsoft.cz/article.php?id_article=176 |
||
World Profil |
#8 · Zasláno: 7. 8. 2007, 09:36:03
on nejspíše myslel tento otazník: ...== 'volba1' ? ' selected...
|
||
M** Profil * |
#9 · Zasláno: 7. 8. 2007, 09:42:25
World
neřekl bych. nebo se se přepsal. on napsal zool a to cos napsal ty, napsal bukaj |
||
Asterofix Profil * |
#10 · Zasláno: 7. 8. 2007, 12:54:52
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 |
#11 · Zasláno: 7. 8. 2007, 14:05:19
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ř.:
Je to v podstatě zkrácený zápis podmínky IF. |
||
Asterofix Profil * |
#12 · Zasláno: 7. 8. 2007, 18:04:01
bukaj
Díky za vysvětlení, hned to na něčem vyzkouším ;-) |
||
Mastodont Profil |
#13 · Zasláno: 7. 8. 2007, 18:47:29
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. |
||
Časová prodleva: 17 let
|
0