建立动态的WML站点(三)


Posted in PHP onOctober 09, 2006

接着用户必须在下一个文件(index3.wml)中输入。我们要求用户输入科目的名字或者教授的姓。你要留意一下变量在页面之间是怎样传送的。语法看来有点复杂,不过可以让你了解整个过程是怎样通过几个文件来完成的。
<?php  
Header("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"
"http://www.wapforum.org/DTD/wml_1.1.xml" >; <WML>
<CARD id=card3 title=Name>
<?php  
echo ("<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">
<?php  

echo ("<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">
<?php  
echo ("<POSTFIELD value='"$"."$choice".""/' name='"$choice"'>");  
echo ("<POSTFIELD value='"$choice"/' name='"choice"'>");  
?>  

</CARD>
</WML>
写查询代码

以下的文件负责处理查询。它的名字是query.wml,我们将更详细地分析它。

<?php  

Header("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 line  

mysql_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 hours  

n");  
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 hours  

n");  
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_result =  
connect($exams_tables, $ exams_columns, $ exams_query);  
print_exams($connection_result);  
}  
printf("</WML>n");  

?>  

好,完成了。你已经建立了首个基于MySQL数据库的PHP/WML页面了,自己继续实践一下吧。 

PHP 相关文章推荐
Php部分常见问题总结
Oct 09 PHP
风格模板初级不完全修改教程
Oct 09 PHP
PHP4.04简明安装
Oct 09 PHP
PHP链接MySQL的常用扩展函数
Oct 23 PHP
PHP使用mysqldump命令导出数据库
Apr 14 PHP
PHP封装的Twitter访问类实例
Jul 18 PHP
PHP中Session和Cookie是如何操作的
Oct 10 PHP
php结合redis高并发下发帖、发微博的实现方法
Dec 15 PHP
PHP常用正则表达式精选(推荐)
May 28 PHP
Yii2框架中一些折磨人的坑
Dec 15 PHP
PHP延迟静态绑定使用方法实例解析
Sep 05 PHP
php array_map()函数实例用法
Mar 03 PHP
Session的工作方式
Oct 09 #PHP
用Flash图形化数据(一)
Oct 09 #PHP
PHP中Session的概念
Oct 09 #PHP
虚拟主机中对PHP的特殊设置
Oct 09 #PHP
用Flash图形化数据(二)
Oct 09 #PHP
用php来检测proxy
Oct 09 #PHP
如何将一个表单同时提交到两个地方处理
Oct 09 #PHP
You might like
PHP syntax error, unexpected $end 错误的一种原因及解决
2008/10/25 PHP
php ob_flush,flush在ie中缓冲无效的解决方法
2010/05/09 PHP
PHP统一页面编码避免乱码问题
2015/04/09 PHP
PHP配置把错误日志以邮件方式发送方法(Windows系统)
2015/06/23 PHP
PHP文字转图片功能原理与实现方法分析
2017/08/31 PHP
JS继承 笔记
2011/07/13 Javascript
检测input每次的输入是否合法遇到汉字输入就有问题
2012/05/23 Javascript
一样的table?不一样的table(可编辑状态table)
2012/09/19 Javascript
js控制表单奇偶行样式的简单方法
2013/07/31 Javascript
一个JS函数搞定网页标题(title)闪动效果
2014/05/13 Javascript
nodejs 子进程正确的打开方式
2017/07/03 NodeJs
重置Redux的状态数据的方法实现
2019/11/18 Javascript
JS常见内存泄漏及解决方案解析
2020/05/30 Javascript
javascript读取本地文件和目录方法详解
2020/08/06 Javascript
nuxt 自定义 auth 中间件实现令牌的持久化操作
2020/11/05 Javascript
[55:26]DOTA2-DPC中国联赛 正赛 Aster vs LBZS BO3 第一场 2月23日
2021/03/11 DOTA
python3.3实现乘法表示例
2014/02/07 Python
python实现读取并显示图片的两种方法
2017/01/13 Python
go和python变量赋值遇到的一个问题
2017/08/31 Python
python ansible服务及剧本编写
2017/12/29 Python
Python实现多线程的两种方式分析
2018/08/29 Python
python之线程通过信号pyqtSignal刷新ui的方法
2019/01/11 Python
Python-Tkinter Text输入内容在界面显示的实例
2019/07/12 Python
python 实现波浪滤镜特效
2020/12/02 Python
Python使用pyenv实现多环境管理
2021/02/05 Python
利用HTML5的新特点实现图片文件异步上传
2014/05/29 HTML / CSS
Timberland美国官网:全球领先的户外品牌
2016/08/15 全球购物
俄罗斯品牌服装和鞋子在线商店:BRIONITY
2020/03/26 全球购物
Java程序员综合测试题
2014/04/25 面试题
计算机开发个人求职信范文
2013/09/26 职场文书
毕业自荐信
2013/12/16 职场文书
体育个人工作总结
2015/02/09 职场文书
详解盒子端CSS动画性能提升
2021/05/24 HTML / CSS
Nginx实现高可用集群构建(Keepalived+Haproxy+Nginx)
2021/05/27 Servers
Python使用OpenCV和K-Means聚类对毕业照进行图像分割
2021/06/11 Python
详解Python自动化之文件自动化处理
2021/06/21 Python