+ -
当前位置:首页 → 问答吧 → 快速入门四、制作留言本

快速入门四、制作留言本

时间:2009-12-07

来源:互联网

本章让我们使用sp框架来制作一个简单的留言本程序,在实例中学习程序开发是非常有效的。同时,我们也可以体会一下实际网络项目的开发流程。
留言本例子下载
首先我们来看看,留言本的需求,也就是我们的程序将要实现什么功能:
引用
1.访问者可以查看留言首页(也就是留言列表)。
2.访问者可以查看单一条留言的详细内容。
3.访问者可以进行留言。

请注意,我们的“需求”都是以访问者为中心的。但同时我们还可以以访问者和管理员为中心,只是本章介绍的留言本还暂时没有加入管理功能。
为了简单起见,我们并没有加入管理功能的需求。我们再来想想,在上面三个过程中所涉及的数据有哪些?对,仅是留言信息。那么我们大致考虑,留言信息会包括:留言标题,留言内容,留言者名字。另外,我们留言的信息还需要包括一个唯一的标志,以区分每一条留言。好了,那么我们就可以得出,留言本程序的数据表仅有一个“留言表”(起个英文名叫guestbook),它的大致结构是:
引用
* 留言标题,字符串(也就是中英文)形式,大概不会多于50字。用title做数据表的字段名称。
* 留言内容,字符串,也不会多于200字吧,用contents做字段名。
* 留言者名字,字符串,大概在20个字以内,用name做字段名。
* 唯一标志,一般用数字形式的ID。用id做字段名。

按以上的说明,我们可以得出以下的数据表结构。

CREATE TABLE `guestbook` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `title` varchar(50) ,
  `contents` varchar(200) ,
  `name` varchar(20) ,
  PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8;

引用
对于数据库知识,我们提倡的是按需学习,也就是用到哪些就学哪些,毕竟“书上讲得深奥,实际没有用到”,那就是费力不讨好。并且,在实际工作中,PHP程序员所需要的,也仅仅是一小部分的数据库知识,万一遇到更复杂的数据库需求我们也有非常多的解决途径,比如同事之间讨论,PHP论坛求助,找GOOGLE大神等等。所以除非是很有必要(比如工作是程序员兼数据库管理员DBA的人员),不然数据库知识方面,我们也是浅尝辄止即可。

引用
初学PHP,我们建议可以了解一下以下的数据库知识就足够,不需要给自己太多的学习压力。
1.在类似PhpMyAdmin的数据库管理工具中,如何建表。
2.CREATE,UPDATE,DELETE,SELECT四个语言的简单用法。
3.懂得思考和想方法解决遇到的问题。
引用
使用数据库管理工具而不用纯粹SQL语句和命令行并没有什么荒废知识的问题,毕竟那会更简单快捷并且避免许多问题,这是提高开发效率的必然选择。


在PhpMyAdmin中建好了guestbook表
=700) window.open('http://www.speedphp.com/wp/wp-content/uploads/guestbooktable.jpg');" onload="if(this.offsetWidth>'700')this.width='700';if(this.offsetHeight>'700')this.height='700';" >
然后后,我们可以在index.php中对程序进行数据库的配置:
复制代码
  1. <?php
  2. // sp框架的目录,SpeedPHP.php文件所在的目录
  3. define("SP_PATH",dirname(__FILE__)."/SpeedPHP");
  4. // 应用程序目录,controller和model等文件夹所在的目录,这里设置的是根目录
  5. define("APP_PATH",dirname(__FILE__));
  6. // 这里开始是应用程序的配置
  7. $spConfig = array(
  8. &#160;&#160;&#160;&#160;"db" => array( // 数据库设置
  9. &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;'host' => 'localhost',&#160;&#160;// 数据库地址,一般都可以是localhost
  10. &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;'login' => 'root', // 数据库用户名
  11. &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;'password' => '123456', // 数据库密码
  12. &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;'database' => 'test', // 数据库的库名称
  13. &#160;&#160;&#160;&#160;),
  14. );
  15. require(SP_PATH."/SpeedPHP.php");

引用
请注意index.php的目录位置,这是我们应用程序的入口文件,同时也是配置文件。
上面提到访问者进行的三个动作:看留言本首页,看留言内容,留言。好的,那么我们的main.php,就可以是下面的样子了:
复制代码
  1. <?php
  2. class main extends spController
  3. {
  4. function index(){ // 这里是首页
  5. }
  6. function show(){ // 这里是查看留言内容
  7. }
  8. function write(){ // 这里是留言
  9. }
  10. }

将main.php放到controller目录里面后,我们建立一个guestbook.php放到model目录里面,那是链接数据库所要做的。guestbook.php的代码很简单:
复制代码
  1. <?php
  2. class guestbook extends spModel
  3. {
  4. &#160;&#160;var $pk = "id"; // 每个留言唯一的标志,可以称为主键
  5. &#160;&#160;var $table = "guestbook"; // 数据表的名称
  6. }

引用
请注意,全部PHP文件都需要是UTF8编码,用留言本另存为就可以做到。

上面准备的程序,就可以说系统架构。
准备好了这些程序后,我们可以写代码了,main.php的代码如下:
复制代码
  1. <?php
  2. class main extends spController
  3. {
  4. &#160;&#160;&#160;&#160;function index(){ // 这里是首页
  5. &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;$posturl = spUrl("main", "write"); // 用spUrl制造写留言的地址
  6. &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;echo "<p align=center><h2>我的留言本</h2></p>";
  7. &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;// 下面做一个表单来提交留言,请注意这些输入框的name属性,它们都对应了数据表guestbook的字段名!
  8. &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;echo "<p>请写下您的留言:</p><form action={$posturl} method=POST><p>您的名字:<input type=text name=name></p><p>留言标题:<input type=text name=title></p><p>留言内容:<textarea name=contents></textarea></p><p><input type=submit value=提交></p></form>";
  9. &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;$guestbook = spClass("guestbook"); // 用spClass来初始化留言本数据表对象(模型类对象)&#160;&#160;&#160;&#160;
  10. &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;if( $result = $guestbook->findAll() ){ // 用findAll将全部的留言查出来
  11. &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;foreach($result as $value){ // 循环输出留言信息
  12. &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;$contentsurl = spUrl("main", "show", array('id'=>$value['id'])); // 用spUrl制造查看留言内容页面地址,请注意array('id'=>$value['id'])将传递ID到查看页面,由spArgs来接收。
  13. &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;echo "<p>这里是第{$value['id']}条留言:<a href={$contentsurl} target=_blank>{$value['title']}</a>&#160;&#160;{$value['name']}</p>";
  14. &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;}
  15. &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;}
  16. &#160;&#160;&#160;&#160;}
  17. &#160;&#160;&#160;&#160;function show(){ // 这里是查看留言内容
  18. &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;$id = $this->spArgs("id"); // 用spArgs接收spUrl传过来的ID
  19. &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;$guestbook = spClass("guestbook");&#160;&#160;// 还是用spClass
  20. &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;$condition = array('id'=>$id); // 制造查找条件,这里是使用ID来查找属于ID的那条留言记录
  21. &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;$result = $guestbook->find($condition);&#160;&#160;// 这次是用find来查找,我们把$condition(条件)放了进去
  22. &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;// 下面输出了该条留言内容
  23. &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;echo "<p>留言标题:{$result['title']}</p>";
  24. &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;echo "<p>留言者:{$result['name']}</p>";
  25. &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;echo "<p>留言内容:{$result['contents']}</p>";
  26. &#160;&#160;&#160;&#160;}
  27. &#160;&#160;&#160;&#160;function write(){ // 这里是留言
  28. &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;$guestbook = spClass("guestbook");
  29. &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;$guestbook->create($this->spArgs()); // 这里用$this->spArgs()取得了表单的全部内容,然后增加了一条留言记录
  30. &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;echo "留言成功,<a href=/index.php>返回</a>";
  31. &#160;&#160;&#160;&#160;}
  32. }

好了,我们可以先将上面代码复制到我们的main.php里面,运行一下试试吧。
=700) window.open('http://speedphp.com/wp/wp-content/uploads/guestbookinst.jpg');" onload="if(this.offsetWidth>'700')this.width='700';if(this.offsetHeight>'700')this.height='700';" >
上面的main.php我们在注释内也能基本了解程序的写法,在接下来的第五章里面,我们着重以留言本程序来介绍sp框架的数据库操作。同时,都是用echo来输出页面,看起来有些乱,所以第六章我们将改写这个留言本程序,把它变成用Smarty来输出的程序。

本文地址:http://speedphp.com/post/build-guestbook.html
[ 此帖被jake在2009-12-07 07:03重新编辑 ]

作者: jake   发布时间: 2009-12-07

相关阅读 更多

热门下载

更多