repeat (WBIK)

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))