12.07.2012 22:04
1
Dobrý den,

řeším jeden problém, na který jsem nedokázal nikde najít odpověď (řešení), které by se mi podařilo rozchodit.

Jedná se o to, že mám v php formulář, který když odešlu a náhodou uživatel zapomene nějaké údaje zapsat, tak jej upozorním a hodnoty, které již zadal načtu přes $_POST['jmeno_inputu'].

Bohužel však nevím, jak vyřešit <select>. Jeden z mých selektů vypadá takto:

PHP kód:
    <select name="od_mesic">
    <
option value="0">Měsíc</option>
    <
option value="1">ledna</option>
    <
option value="2">února</option>
    <
option value="3">března</option>
    <
option value="4">dubna</option>
    <
option value="5">května</option>
    <
option value="6">června</option>
    <
option value="7">července</option>
    <
option value="8">srpna</option>
    <
option value="9">září</option>
    <
option value="10">října</option>
    <
option value="11">listopadu</option>
    <
option value="12">prosince</option>
    </
select
Rád bych: Pokud uživatel neprojde kontrolou, aby pokud již něco vybere, aby se ta hodnota načetla i po obnovení (refresh) stránky.

Jen dodám, že některé <select> vypisuji ručně (viz horní příklad), některé vybírám z databáze.

Děkuji za každou připomínku.
12.07.2012 22:15
2
Tak to overujte ajaxem nebo jquery
12.07.2012 22:19
3
Vem si vrácenou hodnotu $_post a údaje načítej z array (nebo něčeho, co můžeš jednoduše porovnávat... případně bys mohl pro každou položku napsat podmíněný příkaz IF)... V případě že se bude rovna value s $_POST, přidej do tagu
Kód:
<option value="ta správná" selected></option>
Příklad řešení s IF (je to ale trochu prasárna)
PHP kód:
<select name="od_mesic">
<?php if(!isset($_POST['od_mesic'])) {$_POST['od_mesic']='0';};?>
    <option value="0" <?php if($_POST['od_mesic']=='0') { print('selected');} ?>>Měsíc</option>
    <option value="1" <?php if($_POST['od_mesic']=='1') { print('selected');} ?>>ledna</option>
    <option value="2" <?php if($_POST['od_mesic']=='2') { print('selected');} ?>>února</option>
    <option value="3" <?php if($_POST['od_mesic']=='3') { print('selected');} ?>>března</option>
    <option value="4" <?php if($_POST['od_mesic']=='4') { print('selected');} ?>>dubna</option>
    <option value="5" <?php if($_POST['od_mesic']=='5') { print('selected');} ?>>května</option>
    <option value="6" <?php if($_POST['od_mesic']=='6') { print('selected');} ?>>června</option>
    <option value="7" <?php if($_POST['od_mesic']=='7') { print('selected');} ?>>července</option>
    <option value="8" <?php if($_POST['od_mesic']=='8') { print('selected');} ?>>srpna</option>
    <option value="9" <?php if($_POST['od_mesic']=='9') { print('selected');} ?>>září</option>
    <option value="10" <?php if($_POST['od_mesic']=='10') { print('selected');} ?>>října</option>
    <option value="11" <?php if($_POST['od_mesic']=='11') { print('selected');} ?>>listopadu</option>
    <option value="12" <?php if($_POST['od_mesic']=='12') { print('selected');} ?>>prosince</option>
    </select>
Trošku jsem improvizoval... Nevím jak taháš data do formuláře, každopádně na rychlo to lze vyřešit takhle.
12.07.2012 23:48
4
Původně odeslal filipsedivy
Tak to overujte ajaxem nebo jquery
Raději bych pouze ověřování skrz PHP. S Ajaxem ani s Jquery nemám velké zkušenosti, proto se jim raději vyhýbám, pokud je to možné. Přesto děkuji.

[QUOTE=Treaty;818373]Vem si vrácenou hodnotu $_post a údaje načítej z array (nebo něčeho, co můžeš jednoduše porovnávat... případně bys mohl pro každou položku napsat podmíněný příkaz IF)... V případě že se bude rovna value s $_POST, přidej do tagu
Kód:
<option value="ta správná" selected></option>
Děkuji, na podobném principu bych chtěl ověřit i data z databáze, díky tvé odpovědi mám však představu o tom, jak toho docílit. Děkuji.
12.07.2012 23:59
5
Kód:
// definice obsahu seznamu
$hodnoty_pro_select = array('0' => 'Měsíc', '1' => 'Leden', '2' => 'Únor', ...atd... );

// zvolena hodnota
if(!empty($_REQUEST['od_mesic'])) { $zvolena = (int)$_REQUEST['od_mesic']; }
else { $zvolena = -1; }

// vypis selectu
echo '<select name="od_mesic">';
foreach($hodnoty_pro_select as $k => $v)
{ echo '<option value="'.$k.'"'.($zvolena == $k ? ' selected' : '').'>'.$v.'</option>'; }
echo '</select>';
13.07.2012 16:29
6
Chtěl bych jen upozornit že cpát všude AJAX a JQUERY není moc ideální, protože v dosti státních firmách si admini zjednodušují práci tak, že JS je zakázaný. To znamená že jsou vám tyto technologie úplně k prdu.
13.07.2012 18:13
7
Původně odeslal arkill
Chtěl bych jen upozornit že cpát všude AJAX a JQUERY není moc ideální, protože v dosti státních firmách si admini zjednodušují práci tak, že JS je zakázaný. To znamená že jsou vám tyto technologie úplně k prdu.
Tak pokud chceš live validaci, tak si napíšeš jQuery a potom uděláš ještě tvrdou server side validaci, aby jsi to měl zajištěné :) Stačí u kódu přemýšlet nad využitím... Já mám buď jen validaci v programu (po odeslání) nebo přidám navíc live validaci (jen tam, kde to je citelné :D)...