建立动态的WML站点(三)

接着用户必须在下一个文件中输入。我们要求用户输入科目的名字或者教授的姓。你要留意一下变量在页面之间是怎样传送的。语法看来有点复杂,不过可以让你了解整个过程是怎样通过几个文件来完成的。
?phpHeader(Content-type: text/vnd.wap.wml);header(Cache-Control:
no-cache, must-revalidate);header(Pragma: no-cache);echo (<?xml
version=’1.0’?>;);>; <!DOCTYPE wml PUBLIC -//WAPFORUM//DTD WML
1.1//EN _1.1.xml >; <WML> <CARD id=card3 title=Name> <?phpecho
(<p>Insert );if (${$choice} == surname) {echo (professor’s surname (or
part of it).n);} else if (${$choice} == subject) {echo (the subject (or
part of it).n); } else {echo (Maybe there is some problem.n);} echo
(<INPUT name=’${$choice}’ type=’text’>);?<DO type=text label=Go>
<GO href=query.wml method=get> ?phpecho (<POSTFIELD
value=’$.$choice./’ name=’$choice’>);echo (<POSTFIELD
value=’$.${$choice}./’ name=’${$choice}’>);?</GO> </DO>
<P></P> </CARD> </WML> <DO type=text label=Go> <GO
href=index3.wml#card3 method=get> ?phpecho (<POSTFIELD
value=’$.$choice./’ name=’$choice’>);echo (<POSTFIELD value=’$choice/’
name=’choice’>);?</CARD> </WML> 写查询代码
以下的文件负责处理查询。它的名字是query.wml,我们将更详细地分析它。
?phpHeader(Content-type: text/vnd.wap.wml);printf(?xml
version=1.0?n);printf(n);printf(n);//
以下各行是用来为查询授课时间构造SQL语句的$consulting_tables
=(professors left join teach on (professors.Id = teach.Id),
subjects);$consulting_columns =professors.Surname, professors.Name,
subjects.Subject , ;$consulting_columns .=subjects.Cod_number,
professors.Consulting_hour,
professors.Consulting_place;$consulting_query=subjects.Cod_Subject =
teach.Cod_subject ;//
以下各行是用来为查询测验时间构造SQL语句的$exams_tables= (exams left
join professors ON (exams.Id = professors.Id),
subjects);$exams_columns= subjects.Subject , subjects.Cod_number,
professors.Surname, ;$exams_columns.= professors.Name, exams.Date,
exams.Time, exams.Room, exams.Test;$exams_query= exams.Cod_Subject =
subjects.Cod_Subject ;//
以下各行是用来为查询测验时间表的sql语句增加查询限制 if ($exams_data)
{switch($exams_data) {case subject:$exams_query.= and subjects.Subject
like ‘%$subject%’;break;case surname:$exams_query.= and
professors.Surname like ‘%$surname%’;break;}}//
以下各行是用来为查询授课时间的sql语句增加查询限制 if ($consulting_data)
{switch($consulting_data) {case subject:$consulting_query.= and
subjects.Subject like ‘%$subject%’;break;case
surname:$consulting_query.= and professors.Surname like
‘%$surname%’;break;}}// 处理与数据库的连接function connect($tables,
$data, $condition_passed) {//// put your password and username in next
line//$db = mysql_pconnect(localhost,***,***);// put your
database name in next linemysql_select_db(lanfranchi_co_uk,$db);$sql
= SELECT $data FROM $tables WHERE $condition_passed order by
professors.Surname;$result = mysql_query($sql,$db);return $result;}//
这个函数产生授课时间的wml代码 function
consulting_print($consulting_result) {global $file;printf(n);printf(
<P>Receiving hoursn);while ($myrow =
mysql_fetch_row($consulting_result)) {printf( <P>$myrow[0],
$myrow[1]</P>n);printf( <P>$myrow[2]</P>n);printf(
<P>$myrow[3]</P>n);printf( <P>$myrow[4]</P>n);printf(
<P>$myrow[5]</P>n);}printf(</CARD>n);}//
这个函数产生测验时间表的wml代码 function print_exams($exams_result)
{global $file;printf(<CARD id=’card1′ title=’hours’>n);printf(
<P>Examinations hoursn);while ($myrow =
mysql_fetch_row($exams_result)) {printf( <P>$myrow[2],
$myrow[3]</P>n);printf( <P>$myrow[0]</P>n);printf(
<P>$myrow[1]]</P>n);printf( <P>$myrow[4],
$myrow[5]</P>n);printf( <P>$myrow[7]</P>n);printf(
<P>$myrow[6]</P>n);}printf(</CARD>n);}//
检查你时候选择授课时间或者测验时间,连接数据库并且调用产生wml代码的函数
if ($consulting_data) {$connection_result
=connect($consulting_tables, $consulting_columns,
$consulting_query);consulting_print($connection_result);}if
($exams_data) {$connection_澳门新葡亰3522平台游戏,result =connect($exams_tables, $
exams_columns, $
exams_query);print_exams($connection_result);}printf(</WML>n);?
好,完成了。你已经建立了首个基于MySQL数据库的PHP/WML页面了,自己继续实践一下吧。