SpeedPHP/制作留言本
SpeedPHP | 快速入门 | 访问交互 | 数据操作 | 框架概述 | 模板引擎 | 优化加速 | 开发指南 | 数据模型 | API参考 |
我们使用sp框架来制作一个简单的留言本程序,在实例中学习程序开发是非常有效的。同时,我们也可以体会一下实际网络项目的开发流程。
程序功能[ ]
- 访问者可以查看留言首页(也就是留言列表)。
- 访问者可以查看单一条留言的详细内容。
- 访问者可以进行留言。
请注意,我们的“需求”都是以访问者为中心的。但同时我们还可以以访问者和管理员为中心,只是本条目介绍的留言本还暂时没有加入管理功能。
具体操作[ ]
为了简单起见,我们并没有加入管理功能的需求。我们再来想想,在上面三个过程中所涉及的数据有哪些?对,仅是留言信息。那么我们大致考虑,留言信息会包括:留言标题,留言内容,留言者名字。另外,我们留言的信息还需要包括一个唯一的标志,以区分每一条留言。好了,那么我们就可以得出,留言本程序的数据表仅有一个“留言表”(起个英文名叫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;
在PhpMyAdmin中建好了guestbook表
然后后,我们可以在index.php中对程序进行数据库的配置:
<?php // sp框架的目录,SpeedPHP.php文件所在的目录 define("SP_PATH",dirname(__FILE__)."/SpeedPHP"); // 应用程序目录,controller和model等文件夹所在的目录,这里设置的是根目录 define("APP_PATH",dirname(__FILE__)); // 这里开始是应用程序的配置 $spConfig = array( "db" => array( // 数据库设置 'host' => 'localhost', // 数据库地址,一般都可以是localhost 'login' => 'root', // 数据库用户名 'password' => '123456', // 数据库密码 'database' => 'test', // 数据库的库名称 ), ); require(SP_PATH."/SpeedPHP.php"); spRun(); // SpeedPHP 3新特性
上面提到访问者进行的三个动作:看留言本首页,看留言内容,留言。好的,那么我们的main.php,就可以是下面的样子了:
<?php class main extends spController { function index(){ // 这里是首页 } function show(){ // 这里是查看留言内容 } function write(){ // 这里是留言 } }
将main.php放到controller目录里面后,我们建立一个guestbook.php放到model目录里面,那是链接数据库所要做的。guestbook.php的代码很简单:
<?php class guestbook extends spModel { var $pk = "id"; // 每个留言唯一的标志,可以称为主键 var $table = "guestbook"; // 数据表的名称 }
上面准备的程序,就可以说系统架构。
代码呈现[ ]
准备好了这些程序后,我们可以写代码了,main.php的代码如下:
<?php class main extends spController { function index(){ // 这里是首页 $posturl = spUrl("main", "write"); // 用spUrl制造写留言的地址 echo "<p align=center><h2>我的留言本</h2></p>"; // 下面做一个表单来提交留言,请注意这些输入框的name属性,它们都对应了数据表guestbook的字段名! 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>"; $guestbook = spClass("guestbook"); // 用spClass来初始化留言本数据表对象(模型类对象) if( $result = $guestbook->findAll() ){ // 用findAll将全部的留言查出来 foreach($result as $value){ // 循环输出留言信息 $contentsurl = spUrl("main", "show", array('id'=>$value['id'])); // 用spUrl制造查看留言内容页面地址,请注意array('id'=>$value['id'])将传递ID到查看页面,由spArgs来接收。 echo "<p>这里是第{$value['id']}条留言:<a href={$contentsurl} target=_blank>{$value['title']}</a> & nbsp;{$value['name']}</p>"; } } } function show(){ // 这里是查看留言内容 $id = $this->spArgs("id"); // 用spArgs接收spUrl传过来的ID $guestbook = spClass("guestbook"); // 还是用spClass $condition = array('id'=>$id); // 制造查找条件,这里是使用ID来查找属于ID的那条留言记录 $result = $guestbook->find($condition); // 这次是用find来查找,我们把$condition(条件)放了进去 // 下面输出了该条留言内容 echo "<p>留言标题:{$result['title']}</p>"; echo "<p>留言者:{$result['name']}</p>"; echo "<p>留言内容:{$result['contents']}</p>"; } function write(){ // 这里是留言 $guestbook = spClass("guestbook"); $guestbook->create($this->spArgs()); // 这里用$this->spArgs()取得了表单的全部内容,然后增加了一条留言记录 echo "留言成功,<a href=/index.php>返回</a>"; } }
好了,我们可以先将上面代码复制到我们的main.php里面,运行一下试试吧。
参考来源[ ]
http://speedphp.com/manual.html
SpeedPHP使用手册导航 | ||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
|