Autor Zpráva
CATerPILAR
Profil
Ve formuláři mám vícero selectů. Při načtení stránky potřebuji u každého nastavit selected podle načtené hodnoty z db. Jde to udělat nějak jednoduše a elegantně. Selectů je na stránce asi 20.
habendorf
Profil
Kdysi jsem se ptal na totéž http://diskuse.jakpsatweb.cz/index.php?action=vthread&forum=8&topic=17 80

Jediné co si musíš dořešit je načtení těch hodnot z db a jejich předání skriptu.
CATerPILAR
Profil
Dobře, já jsem vymyslel trochu jinej způsob, třeba se bude někomu hodit.
Základem je to, aby se všechny optiony vypisovaly pomocí cyklu. Pak už stačí vložit podmínku IF a je to hotový.
        
$form1=... //je hodnota selectu načtená z db;
$typ=array(); //neboli všechny optiony se načítají z předem nadefinovaného pole
<SELECT NAME="form1">
<?php
for($i=0;$i<count($typ);$i++)
{ 
if($form1==$typ[$i]) $k="selected"; else $k="";
echo"<option $k value=$typ[$i]>$typ[$i]</option>";
}
?>
</SELECT>


Nejjednodušší je to u selectů ve kterém jsou dynamické hodnoty jako třeba datum. Odpadá nutnost definovat jakékoli statické pole.
<?php
$datum=date(Y);
for($i=$datum;$i>=$datum-10;$i--)
{ 
if($form3==$i) $k="selected"; else $k="";
echo"<option $k value=$i>$i</option>";
}
?>
Kajman_
Profil *
Nebo se dá udělat univerzální fuknce, které jen to pole předáte.

//funkce pro ryhle pouziti <select><option>*... $values je pole value=>popis
function form_select($name,$values,$actual='---null',$addatr='')
{
	$retstr='<select name="'.$name.'"'.$addatr.'>';
	foreach($values as $value => $text)
	{
		$retstr.='<option value="'.htmlspecialchars($value). '"' .($value==$actual?' selected':'').'>'.htmlspecialchars($text). '</option>';
	}
	$retstr.='</select>';
	return $retstr;
}
habendorf
Profil
Aha, myslel jsem že jde o JS, z otázky to nebylo jasné.

Vaše odpověď


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm:

0