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

Pßr tip∙ pro zaΦßteΦnφky s ASP - problΘmy se syntaxφ a podobn∞?
Bohu₧el nynφ pro₧φvßm relativn∞ t∞₧kou dobu(zlomil jsem si nohu a vΦera m∞ sklßtila ch°ipka ), tak₧e jsem nem∞l onu intelektußlnφ sφlu, abych sepsal n∞kolik mφch °ßdk∙. P°edklßdßm Vßm Φlßnek, kter² se na mΘm disku tφsnφ ji₧ vφce jak p∙l roku a zaslal mi jej jeden Φtenß° tehdejÜφho ASPserveru, a¥ jej n∞kdy publikuji. V Φßnku se dozvφte jakΘ problΘmy Vßs nejspφÜe potkajφ p°i tvorb∞ prvnφch strßnek, spojenφ s databßzφ a podobn∞. Vφce Φlßnku...

To co mne ze zaΦßtku nejvφce trßpilo (a stßle jeÜt∞ obΦas trßpφ), nebylo ani tak, zda pou₧φt Session Φi Application.StaticObject v Global.asa, ale spφÜe jsem zßpasil se syntaxi zßpisu a p°edevÜφm kombinaci HTML a ASP k≤du. Zde je proto n∞kolik p°φklad∙, jak toto °eÜit.

<% response.write "Dnes je <b> " & date() & "</b> a je <b>" & time() & "</b> hodin<br>To je vÜe"%>

To stejnΘ v HTML:

Dnes je <b><%=date()%></b> a je <b><%=time()%></b> hodin<br>To je vÜe

VÜimn∞te si zßpisu <%=date()%>, kter² nahrazuje delÜφ <% response.write date()%>

V tΘto souvislosti  je ale pot°eba upozornit na  nesprßvnou aplikaci konstrukce <%=   %>, kdy je jejφ v²sledek pova₧ovßn za nßzev prom∞nnΘ.

<script language = "VBScript">
    <%UserName="Lojza"%>
    MsgBox "P°ihlßÜen je " & <%=UserName%>
</script>

Server tento zßpis p°elo₧φ na "P°ihlßÜen je " & Lojza a MsgBox pak zobrazφ pouze text "P°ihlßÜen je". Sprßvn² zßpis mß b²t tento:

<script language = "VBScript">
    <%UserName="Lojza"%>
    MsgBox "P°ihlßÜen je <%=UserName%>"
</script>

V²sledkem p°ekladu je text "P°ihlßÜen je Lojza" a ten bude takΘ sprßvn∞ zobrazen.

Pro nßzornost jeÜt∞ dalÜφ p°φklad:
(zde je primßrnφ ASP kod a n∞mu se "p°idßvß" text)
<%
Dim name
name="Loiza"

response.write("Jmenuji se: " & name) 
%>

je totΘ₧ co:

(zde je primßrnφ HTML a k n∞mu se "p°idßvß" ASP kod)
<html><head><title>example</title>
<%
Dim name
name="Loiza"
%>
</head><body>
Jmenuji se: <%=name %>
</body></html>

DalÜφ problΘmy se syntaxi zkusφm ukßzat na tomto p°φkladu:

uid=Cint(request.querystring("id"))
prom1=request.querystring("imput1")
prom2=request.querystring("imput2")
sql_update="UPDATE tabulka SET sloupec1='"& prom1 &"', sloupec2='"& prom2 &"' WHERE id=" & uid

Zde se nejΦast∞ji chybuje v nesprßvnΘm ohraniΦenφ prom∞nn²ch a to jednak nedodr₧enφ  syntaxe pro spojenφ textu a prom∞nnΘ "... sloupec1' " & prom1 & " ',sloupec2 ..." a op∞t chybnΘ kombinace textu a prom∞nnΘ na konci p°φkladu "... WHERE id=" & uid.

Poznßmka. 

Pokud pracujete s databßzi MS Access, je pot°eba datum  uvozovat do symbolu # mφsto apostrofu. Pak by mohlo ohraniΦenφ vypadat asi takto:

sql="SELECT * from tabulka where (((datum)>#"& where_datum &"#))"

ProΦ where_datum a ne nap°. p°φmo date()? Proto₧e MS Access pracuje v podmφnce s datem ve formßtu MM/DD/YYYY a date() vracφ DD.MM.RRRR. 

P°φklad jak se dß  where_datum o den ni₧Üφ ne₧ aktußlnφ takΘ nastavit:

Function conv_dat(In_date)
    conv_dat = (right("00"&month(In_date),2) &"/"& _
    right("00"&day(In_date),2) &"/"& right("0000"&year(In_date),4))
End Function

where_datum=conv_dat(DateAdd("w",-1,date()))

U uvedenΘho p°φkladu by stßlo jeÜt∞ za to upozornit na dv∞ v∞ci. Prvnφ je zßpis typu "Select * from tabulka", kter² nebude fungovat pokud tabulka obsahuje sloupce typu memo nebo blob. V tom p°φpad∞ nelze pou₧φt *, ale seznam sloupc∙ je nutnΘ vypsat.

Druhou v∞cφ je rozd∞lovßnφ °ßdk∙. Toto je problΘm, kter² nelze popsat jinak ne₧ tφm, ₧e to nelze provßd∞t mechanicky bez pou₧itφ myÜlenφ. Standardn∞ se °ßdek rozd∞luje bu∩ " _" (mezera a podtr₧φtko) nebo "sΦφtßnφm" textov²ch °et∞zc∙.

P°φklady:

conv_dat = (right("00"&month(In_date),2) &"/"& _
right("00"&day(In_date),2) &"/"& right("0000"&year(In_date),4)) 

resp.

sql="UPDATE tabulka SET sloupec1='"& prom1 &"',"
sql=sql+"sloupec2='"& prom2 &"'"
sql=sql+" WHERE id=" & uid

DalÜφ zßpis ale sprßvn² nenφ, a fungovat nebude:

sql="UPDATE tabulka SET sloupec1=' _
"& prom1 &"', sloupec2='"& prom2 &"' WHERE id=" & uid

ProΦ, je z°ejmΘ, pokud si ho zkusφte p°epsat do "sΦφtßnφ °et∞zc∙". Toto u₧ ale fungovat bude.

sql="UPDATE tabulka SET sloupec1='"& _
 prom1 &"', sloupec2='"& prom2 &"' WHERE id=" & uid

A kdy₧ u₧ jsem zabrousil do SQL, tak jeÜt∞ malß poznßmka na zßv∞r. Pokud je v nßzvu sloupce mezera, pak je pot°eba nßzev sloupce vlo₧it do hranat²ch zßvorek [nßzev sloupce]. A nebo jeÜt∞ lΘpe, nßzvy sloupc∙ s mezerami (pokud to lze) nepou₧φvat.

UvedenΘ poznßmky urΦit∞ nepopisujφ vÜechny problΘmy, se kter²mi se zaΦßteΦnφci v ASP pot²kajφ, ale snad n∞komu pomohou uÜet°it Φas, ztracen² hledßnφm podobn²ch chyb. Pokud mßte jeÜt∞ dalÜφ tipy na toto tΘma, tak nevßhejte a zkuste je p°idat jako komentß° k tomuto pokusu. Ka₧d² zaΦßteΦnφk (vΦetn∞ mne) Vßm za n∞ bude vd∞Φn².

Zßv∞rem se omlouvßm vÜem, kdo trvajφ na sΘmantickΘ Φistot∞ zde pou₧φvan²ch termφn∙. Myslφm si, ₧e v tomto p°φpad∞ by Ülo zamhou°it oko.

Zden∞k Cendra
ceskywap@ceskywap.cz



   Souvisejφcφ Φlßnky
TextLink.cz