Pokud ve formuláři použijeme pole SELECT s možností vícenásobné volby, dostáváme několik hodnot pro jeden název formulářového pole. Stejně tak, pokud máme ve formuláři více polí se stejným názvem. Tento článek vám poradí, jak tyto hodnoty zpracovat v ASP.

U formulářového prvku SELECT můžeme uvedením parametru MULTIPLE umožnit označení více hodnot. Hodnota SIZE pak určuje počet zobrazených řádků. Při odeslání formuláře se předává seznam hodnot VALUE všech označených voleb.

<SELECT NAME=“Vyber“ SIZE=“5″ MULTIPLE>
    <OPTION VALUE=“1″>Hodnota 1</OPTION>
    <OPTION VALUE=“2″>Hodnota 2</OPTION>
    <OPTION VALUE=“3″>Hodnota 3</OPTION>
    <OPTION VALUE=“4″>Hodnota 4</OPTION>
    <OPTION VALUE=“5″>Hodnota 5</OPTION>
</SELECT>

Viz příklad.

Druhým typickým případem je zaškrtávací políčko CHECKBOX. Pokud dáme několika prvkům CHECKBOX stejný název NAME, dostáváme opět několik hodnot VALUE, pro všechna zaškrtnutá pole.

<INPUT TYPE=“checkbox“ NAME=“Vyber“ VALUE=“tram“>Tramvají<BR>
<INPUT TYPE=“checkbox“ NAME=“Vyber“ VALUE=“bus“>Autobusem<BR>
<INPUT TYPE=“checkbox“ NAME=“Vyber“ VALUE=“kolo“>Na kole<BR>
<INPUT TYPE=“checkbox“ NAME=“Vyber“ VALUE=“moto“>Na motorce<BR>
<INPUT TYPE=“checkbox“ NAME=“Vyber“ VALUE=“auto“>Autem<BR>

Viz příklad.

Obecně můžeme ve formuláři mít několik polí se stejným názvem. Nic nám nebrání v tom, pojmenovat stejně několik např. textových polí.

<INPUT TYPE=“text“ NAME=“PoleB“> <BR>
<INPUT TYPE=“text“ NAME=“PoleB“> <BR>
<INPUT TYPE=“text“ NAME=“PoleB“> <BR>
<INPUT TYPE=“text“ NAME=“PoleB“> <BR>
<INPUT TYPE=“text“ NAME=“PoleB“> <BR>

Viz příklad.

Ale pozor, v tomto případě se odesílají hodnoty všech polí, pro nevyplněná pole tedy prázdný řetězec. Stejně tak můžeme dát stejné NAME skupině jakýchkoliv formulářových polí. Dokonce můžeme zkombinovat různé typy pole. Ale praktická použitelnost asi bude pouze u toho seznamu s možností výcenásebného výběru a u skupiny zaškrtávacích polí.

Při následném zpracovávání takového rormuláře dostáváme pro jeden klíč kolekce request.form resp request.querystring (podle toho, jestli formulář posíláme metodou POST nebo GET) několik hodnot. Jejich zpracování v ASP je velice jednoduché. Obě kolekce nabízí vlastnost Count, která udává počet hodnot pro daný klíč. Tuto vlastnost lze použít i pokud použijeme request bez specifikace, o jakou kolekci jde.

Request.form(„klic“).Count
Request.QueryString(„klic“).Count
Request („klic“).Count

Při čtení jednotlivých hodnot pak stačí uvést pořadové číslo hodnoty:

Request.form(„klic“)(1)
Request.QueryString(„klic“)(1)
Request („klic“)(1)

Jednoduchý skript pro načtení hodnot formulářového prvku VyberA z našeho prvního příkladu, odeslaného metodou POST, do pole PoleA by tedy vypadal takto:

Dim PoleA
PocetHodnot = Request.Form(„VyberA“).Count
ReDim PoleA(PocetHodnot)
For n = 1 to PocetHodnot
    PoleA(n) = Request.Form(„VyberA“)(n)
Next>

Poznámka: pokud neznáme dopředu velikost pole, můžeme ho vytvořit jako dynamické. To znamená, že při jeho deklaraci příkazem Dim neuvedeme jeho velikost a před jeho použitím tuto velokost určíme příkazem ReDim.

Celý seznam hodnot můžeme přečíst i najednou.

StrA = Request.Form(&quot;VyberA &quot;)
StrA = Request.QueryString(&quot;VyberA &quot;)
StrA = Request (&quot;VyberA &quot;)

Výsledkem je pak textový řetězec, obsahující jednotlivé hodnoty oddělené čárkou a mezerou. Tedy například označením hodnot 1, 3 a 5 dostaneme řetězec "1, 3, 5".

A to je pro dnešek vše, přátelé.

Žádný příspěvek v diskuzi

Odpovědět