選擇電影院和上映時間
這部分代碼讓用戶來選擇看什麼時間的電影,所有的記錄根據前一頁所選的電影來決定。在這裡來選擇電影院和上映時間.
movie_id = Request(/"movie/")
sqlQuery = /"SELECT title FROM movie WHERE Movie_id = /" & movie_id
set rsMovie = conn.Execute(sqlQuery)
movie_title = rsMovie(/"title/")
:
sqlQuery = /"SELECT [name], [time], [show_id] FROM Show, Theater /" &_
/"WHERE show.movie_id = /" & movie_id &_
/" AND theater.theater_id = show.theater_id/"
set rsShows = conn.Execute(SQLquery)
如果你仔細研究了這個代碼,你就會想用Session來保存電影信息,再在這頁進行查詢更簡單。同樣很不幸,Session是需要cookies的支持,雖說在WAP規范中也是被支持的,但是在Nokia 7110中也是不被支持,這就是說現在我們還不能把session用在WAP服務中。
下面有一些有趣的事情:
< select name='show' >
< %
Do while not rsShows.eof
response.write(/"< option value='/" & rsShows(/"show_id/") & /"' >/" & Left(rsShows(/"name/"),cutter) & /" (/" & rsShows(/"time/") & /")/" & /"< /option >/" &vbcrlf)
rsShows.MoveNext
loop % >
< /select >
如果你對cutter變量感到疑惑,那麼就有一些事讓你哭笑不得
Dim cutter
if InStr(Request.ServerVariables(/"HTTP_USER_AGENT/"), /"Nokia7110/") then
cutter = 12
else
cutter = 7
end if
這段代碼根據不同的設備來顯示選項。我們有充足的理由的這樣做,Nokia Toolit 1.2仿真器喜歡把砍掉我的的選項到只有幾個字符,而我們要顯示電影名字和上映時間,所以我們就不得不減少電影名字的字符。在真的手機中不會出現這種問題,所以我們就必須先判斷設備的類型.
一旦我有機會(飛刀我很窮,沒有錢,這是僅僅是遙遠的夢想.......)在真的Nokia 7110上測試我的代碼,我們會立即感到我們有比我們想像更大的屏幕。實際上,有些電影院的名字很古怪,而且這些長名字會占用很大屏幕空間,我們沒有必要浪費這些顯示空間,盡量把這些名字簡化。
票
下一步就是讓用戶選擇需要的票數.這部分的代碼很像其它的部分。我將從數據庫中查詢相同的數據,因為Session不能在真正的WAP手機中使用,所以我必須對有些內容進行確認,看看是否還有座位出售.
SQLquery = /"SELECT * FROM show WHERE Show_id = /" & show_id
set rsShow = conn.Execute(SQLquery)
:
seats = rsShow(/"free_seats/")
:
if seats = 0 then
Response.write(/"Sorry, no more seats/")
rsShow.close
set rsShow = nothing
Response.write(/"< /p >< /card >< /wml >/")
Response.end
else
if seats > 6 then 'book up to 6 tickets or max available
max_seats=6
else
max_seats = seats
end if
end if
% >
< %=movie_title% > at < % =theater_name% >
< select name='ticket' >
< %
dim i
i = 1
Do while i < = max_seats
response.write(/"< option value='/" & i & /"' >/" & i & /" ticket(s)/" & /"< /option >/" &vbcrlf)
i = i + 1
loop % >
< /sele
12下一頁