WAP中的ASP技術(四)
作者:Eve Cole
更新時間:2009-05-30 19:54:43
選擇電影院、上映時間
這部分程式碼讓使用者來選擇看什麼時間的電影,所有的記錄都根據前一頁所選的電影來決定。在這裡來選擇電影院和上映時間.
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 %>
</select>
儲存票數
現在我們已經有了所有需要的資料了,我們得把它們保存起來:
tickets = Request("ticket")
:
free_seats = rsShow("free_seats")
:
free_seats = free_seats - tickets
:
SQLUpdate = "UPDATE Show " &_
"SET Show.free_seats=" & free_seats & " " &_
" WHERE Show_ID=" & show_id
conn.Execute(SQLupdate)
SQLquery = "SELECT max([Booking_ID]) as bookingnumber FROM booking"
Set rsBooking = conn.execute(SQLquery)
maxbookid = rsBooking("bookingnumber") + 1
SQLinsert = "INSERT INTO Booking ( show_id, booked_seats ) " & _
"VALUES ('" & show_id & "', '" & tickets & "')"
conn.Execute(SQLinsert) %>
You have booked <%=tickets%> ticket(s) for <%=movie_title%><br />
The show will take place at <%=theater_name%> (<%=time%>)
<br />
Your reference number is <%=maxbookid%>
下面是顯示:
Figure 4:完成交易.
交易已經完成了,電影院可以坐電影院門口收錢了.
結論
WAP現在才剛走出它的第一步,然而它是近年來最具革命性的IT發展之一。在這篇文章中我介紹了怎樣用asp寫WAP應用程式,
並對你們提出了一些警告,希望對你們以後的發展有用。多媒體技術依然不能太多的用於WAP,但是它的可移動性卻是重要的,也為商家提供了不少的商機。