这部分代码让用户来选择看什么时间的电影,所有的记录根据前一页所选的电影来决定。在这里来选择电影院和上映时间.
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,但是它的可移动性却是重要的,也为商家提供了不少的商机。
Java Asp PHP .Net XML C/C++ CGI VB Jsp J2ee J2se J2me EJB Servlet Tomcat Resin Struts Weblogic Eclipse ANT GUI JMS Web servise IDEA Webphere Hibernate Spring Jboss Applet Swing Socket Javamail Perl Ajax P2P 安全 模式 框架 测试 开源 游戏
Windows XP Windows 2000 Windows 2003 Windows Me Windows 9.x Linux UNIX 注册表 操作系统 服务器 应用服务器