Formßt:
#repeat var|notemptyvar=
°φdφcφ_prom∞nnß
delimiter=
odd∞lovaΦ
+
°ßdek_SQL_p°φkazu
#endrepeat
V²znam:
Lze pou₧φt pouze uvnit° bloku SQLStatement
.
Umo₧≥uje automaticky generovat SQL p°φkazy (nebo jejich Φßsti) podle toho, kolikrßt byla urΦitß prom∞nnß (°φkejme jφ °φdφcφ prom∞nnß repeat bloku) p°eΦtena z HTML formulß°e (pou₧ito var=prom∞nnß
) nebo kolikrßt byla p°eΦtena neprßzdnß hodnota prom∞nnΘ (pou₧ito notemptyvar=prom∞nnß
). WBIK zjistφ, kolik hodnot °φdφcφ prom∞nnΘ bylo p°eΦteno z formulß°e na vstupnφ WWW strßnce (resp. kolik z t∞chto hodnot je neprßzdn²ch) a tolikrßt budou za sebou vygenerovßny °ßdky SQL p°φkaz∙ uzav°enΘ mezi #repeat
a #endrepeat
. Pokud je v t∞chto °ßdcφch citace °φdφcφ prom∞nnΘ, bude p°i prvnφm generovßnφ nahrazena prvnφ hodnotou z formulß°e, p°i druhΘm generovßnφ druhou hodnotou a₧ p°i poslednφm generovßnφ °ßdk∙ bude citace °φdφcφ prom∞nnΘ nahrazena poslednφ hodnotou °φdφcφ prom∞nnΘ, kterß byla p°eΦtena z formulß°e na vstupnφ WWW strßnce.
VygenerovanΘ °ßdky budou odd∞leny odd∞lovaΦem (delimiter). Tento parametr je nepovinn², pokud nenφ uveden, °ßdky budou odd∞leny mezerou. Pokud chceme odd∞lit jednotlivΘ °ßdky od sebe skupinou znak∙, ve kterΘ je i jin² znak, ne₧ pφsmeno, Φφslice, nebo podtr₧φtko ( _ ), musφme takov² odd∞lovaΦ uzav°φt do obrßcen²ch apostrof∙ ( ` ).
Pokud je v °ßdcφch uvedena citace prom∞nnΘ, kterß nenφ °φdφcφ prom∞nnou repeat bloku, pak tato citace bude nahrazena prvnφ hodnotou tΘto prom∞nnΘ, kterß byla p°eΦtena z formulß°e (i kdyby bylo p°eΦteno z formulß°e vφce hodnot tΘto prom∞nnΘ).
Repeat
blok m∙₧e mφt vφce °φdφcφch prom∞nn²ch. PoΦet opakovßnφ °ßdk∙ je stanoven podle °φdφcφ prom∞nnΘ s nejmenÜφm poΦtem p°eΦten²ch hodnot.
Uvnit° repeat
bloku lze pou₧φt libovoln² dalÜφ p°φkaz WBC preprocesoru. Nelze vÜak vno°it do sebe dva repeat
bloky, kterΘ majφ shodnou aspo≥ jednu °φdφcφ prom∞nnou.
P°φklad:
U₧ivatel ve WWW browseru zatrhne n∞kolik oznaΦovacφch Φtverc∙ z dynamicky vygenerovanΘ tabulky podle nßsledujφcφ Φßsti Üablony (pou₧ije se SQLStatement
Skupiny z p°edchozφho WBC). Jednß se o oznaΦenφ skupin zbo₧φ.
<FONT SIZE="2">Zatr₧enφm vyberte skupiny zbo₧φ, ze kter²ch budete objednßvat</FONT>
<BR> <TABLE WIDTH="35%"> <TH ALIGN="Center" WIDTH="30%">Skupina</TH>
<TH ALIGN="Center" WIDTH="5%">V²b∞r</TH>
<%begindetail Skupiny%> <TR><TD ALIGN="LEFT"><B><%Occis_skup%></B></TD><TD ALIGN="Center"><input type=checkbox name="Ridici" value="<%Cis_skup%>"></TD></TR> <%enddetail%> </TABLE>
Po stisku tlaΦφtka SUBMIT
se vykonß nßsledujφcφ SQL p°φkaz SELECT, kter² vybere zbo₧φ pouze z oznaΦen²ch skupin. Kolik skupin bylo zatr₧eno, tolikrßt se provede repeat
cyklus a vygeneruje podmφnku WHERE. Delimiter odd∞lφ vzniklΘ podmφnky spojkou OR.
SQLStatement: Cenik
+ SELECT OUT_DECNK.CIS_SKUP,OUT_DECNK.CIS_CNK,
+ OUT_DECNK.CEN_PROD,Real2Str(C_012_DPH.CHPROCENTO,-2) AS DPHCKO
+ FROM OUT_DECNK,C_012_DPH
+ WHERE (OUT_DECNK.OC012_DPH=C_012_DPH.CH012_DPH) AND (
#repeat var=Ridici delimiter=` OR `
+ (CIS_SKUP= "%Ridici%")
#endrepeat
+ )
+ GROUP BY OUT_DECNK.CIS_CNK
Byly-li zatr₧eny dv∞ skupiny s Φφslem 4 a 6, podmφnka SELECTu bude vypadat
...
WHERE (OUT_DECNK.OC012_DPH=C_012_DPH.CH012_DPH) AND ((CIS_SKUP=4) OR (CIS_SKUP=6))