Katalog ASP odkaz∙: Hledßte informace o ASP? Zkuste nßÜ nov² katalog odkaz∙ na ASP weby. Vφce zde...
TextLink.cz
VyÜlo: 15.1.2001 Rubrika: ASP - Tipy

Jak zφskat vÜechny vybranΘ polo₧ky z formulß°ovΘho pole SELECT multiple?
V Φlßnku se dozvφte, jak pracovat s formulß°ov²m polem SELECT. Dßle se dozvφte, jak z n∞j pohodln∞ zφskat veÜkerΘ vybranΘ hodnoty a jak s nimi dßle pracovat. Na n∞kolika p°φkladech pochopφte architekturu chovßnφ tohoto formulß°ovΘho pole. V zßv∞ru se Vßm do rukou dostanou unikßtnφ zdrojovΘ k≤dy, kterΘ pouze doplnφ VaÜe znalosti. Vφce v Φlßnku...

Jestli₧e se rozhodnete vytvo°it kvalitnφ web ve kterΘm bude moci u₧ivatel vybφrat z r∙zn²ch menu a formulß°∙, jist∞ narazφte na problΘm p°i zpracovßvßnφ formulß°ovΘho pole SELECT s parametrem multiple, kterΘ umo₧≥uje vybrat libovoln² poΦet polo₧ek z menu.

Formulß° s polem SELECT multiple.

HTML k≤d Formulß°e:
<p align="center">
<form name="formular" method="POST" action="str.asp">
Vyberte si VaÜe oblφbenΘ koncovky:<br>
  <select size="5" name="D1" multiple>
    <option>Net</option>
    <option>Wap</option>
    <option>Com</option>
    <option>Prg</option>
    <option>Exe</option>
  </select>
<br>
<input type="submit" name="sends" value="Odeslat">
<br>
Stisknutφm CTRL lze vybrat vφce polo₧ek

</form>
</p>

On-line podobu naleznete na http://www.netday.cz/web/examples/formsel/.

Jestli₧e se ve formulß°i bude pole pro v²b∞r(SELECT) jmenovat D1 a vy na strßnce, kterß formulß° zpracovßvß pou₧ijete klasickΘho p°φkazu Request("D1"), dostanete v²sledek, kter² Vßm nejspφÜe nebude staΦit.

Request("D1") vrßtφ veÜkerΘ vybranΘ polo₧ky odd∞lenΘ Φßrkou.

P°φklad:

<%
Response.Write(Request("D1"))
%>

V²sledek bude nap°φklad nßsledujφcφ:
Net, Wap, Com

Jak zφskat jednotlivΘ hodnoty?

Metody, jak dostat vybranΘ polo₧ky p∞kn∞ odd∞len∞ jsou dv∞.

Prvnφ: vrßcen² °et∞zec "pro₧eneme" funkcφ, kterß pomocφ p°φkazu InStr, Left a Right postupn∞ vy°e₧e z danΘho °et∞zce jednotlivΘ hodnoty. Bohu₧el toto °eÜenφ nenφ nikterak efektivnφ a takΘ je velmi pracnΘ.

Druhß volba je nßsledujφcφ: vrßcenΘ hodnoty si nasm∞rujeme do objektu a ten nßsl∞dn∞ pomocφ FOR Each postupn∞ probereme a budeme uklßdat nap°φklad do pole.

P°φklad:

<%
Set Vystup = Request("D1")
intCelkem = Vystup.Count()

If intCelkem <> 0 Then
Response.Write("Vybral jste nßsledovn∞:<br>")

Dim strHodnoty(20)

For Each strPolozka In Vystup
x = x + 1

strHodnoty(x) = strPolozka

Next

For a=1 to intCelkem
Response.Write(strHodnoty(a) & "<br>")
Next

Else

Response.Write("Nevybral jste ₧ßdnou z polo₧ek.")

End If
%>

Tento k≤d zajistφ napln∞nφ pole strHodnoty polo₧kama, kterΘ se vybrali v p°edchßzejφcφcm formulß°i.

Jak k≤d funguje?

Nejd°φve se nadefinuje objekt Vystup. Dßle se do prom∞nnΘ intCelkem ulo₧φ poΦet vybran²ch polo₧ek. Nßsleduje otestovßnφ zda-li je prom∞nnß intCelkem odliÜnß od nuly. Jestli₧e ano, script pokraΦuje. Jestli₧e ne, vrßtφ hlßÜku "Nevybral jste ₧ßdnou z polo₧ek".

Jestli₧e je ovÜem n∞kterß polo₧ka vybrßna, je situace mnohem zajφmav∞jÜφ a zßbavn∞jÜφ. Nadefinuje se pole strHodnoty o maximßlnφm rozsahu 20 polo₧ek a zaΦne se postupn∞ plnit pomocφ FOR Each strPolozka In Vystup. P°i ka₧dΘm "prob∞hnutφ" je v prom∞nnΘ strPolozka aktußlnφ hodnota, kterß se ulo₧φ do pole strHodnoty(x), p°iΦem₧ x je prom∞nnß postupn∞ se zvyÜujφcφ o jedna p°i ka₧dΘm opakovßnφ(prob∞hnutφ) cyklu.

Poslednφ t°i °ßdky jsou ji₧ sv²m zp∙sobem nepovinnΘ a pouze vypisujφ zφskanΘ hondoty.

Stßhn∞te si zdrojovΘ k≤dy vÜech uvßd∞n²ch p°φklad∙.

On-line verzi vÜech p°φklad∙ naleznete na http://www.netday.cz/web/examples/formsel/.

Zden∞k Cendra
ceskywap@ceskywap.cz



   Souvisejφcφ Φlßnky
TextLink.cz