你好,欢迎来到电脑编程技巧与维护杂志社! 杂志社简介广告服务读者反馈编程社区  
合订本订阅
 
 
您的位置:技术专栏 / Linux开发
使用Ajax实现打分评级和添加评论功能(3)
 
图 2. 评级页面

使用Ajax实现打分评级和添加评论功能

  单击页面的中星形图案时,投票将添加到数据库中;星形图案、投票和平均评级的 HTML 代码会发生改变,从而反映出投票已添加。

  理想情况下,我希望能够在主页上看到所有电影的评分情况。清单 5 中的新版索引页面实现了这一功能。

清单 5. index2.php<html>
<body>
<table>
<?php
require_once("DB.php");
$db =& DB::Connect( 'mysql://root@localhost/comments', array() );
if (PEAR::isError($db)) { die($db->getMessage()); }
$res = $db->query( 'SELECT * FROM movies' );
while( $res->fetchInto( $row ) )
{
$res2 = $db->query(
 'SELECT count( rating ), sum(rating ) FROM ratings WHERE movie_id=?', $row[0]
);
$rating = 0.0;
while( $res2->fetchInto( $row2 ) ) { $rating = $row2[1] / $row2[0]; }
?>
<tr><td align="center">
<?php echo( $rating > 0 ? $rating : 0 ) ?>
<td><td>
<a href="rate2.php?id=<?php echo($row[0]) ?>"><?php echo($row[1]) ?></a>
</td></tr>
<?php
}
?>
</table>
</body>
</html>

  从 图 3 中可以看出,各个电影的评级情况都在新版的索引页面中显示出来了。

图 3. 更新后的电影页面

使用Ajax实现打分评级和添加评论功能

  使用 Ajax、PHP、MySQL 和非常方便的 Prototype.js JavaScript 库实现投票模式就这么简单。

  在下一个示例中,我们将实现电影评论功能。

  评论

  Web 上的评论系统形式各异,从极其简单的博客评论系统(可以对博客条目发表一连串的评论)到异常复杂的主题评论系统(比如 Slashdot 上的评论系统),不一而足。

  本例所使用的评论系统比较简单。您可以根据需要对它进行适当的调整。

  首先,在已有数据库模式中添加一个表,如 清单 6 所示。

清单 6. comments.sqlDROP TABLE IF EXISTS comments;
CREATE TABLE comments (
 movie_id INTEGER NOT NULL,
 email VARCHAR(255) NOT NULL,
 name VARCHAR(255) NOT NULL,
 comment TEXT NOT NULL
);

  所添加的是 comments 表,这个表通过 movie_id 字段与电影关联在一起。表中定义了一个电子邮件地址、评论者名称和评论文本。这是一个相当基本的评论系统,类似于 WordPress 和 MoveableType 博客软件上的评论系统。

  如果想要创建一个主题评论系统,则需要在表中添加一个自动递增的 ID 字段,然后使用一个可为空的 parent_id 字段指向各个评论的父级评论。如果该 字段为空,则这个评论是顶层评论。

  要在评级页面中加入评论功能,我们需要在页面底部包含一些额外的脚本。清单 7 显示了这个新的 PHP 代码。

清单 7. rate2.php...
<h2>Comments</h2>
<div id="comments">
<?php
$res3 = $db->query(
 'SELECT * FROM comments WHERE movie_id=?',
 $id
);
while( $res3->fetchInto( $row3 ) )
{
?>
<div>
<a href="mailto:<?php echo($row3[1]) ?>"><?php echo($row3[2]) ?></a> says:
'<?php echo($row3[3]) ?>'
</div>
<?php
}
?>
</div>
<div style="margin-top:20px;">Add your own comment:</div>
<form id="cform">
<input type="hidden" name="id" value="<?php echo($id)?>">
<table>
<tr><td>Name:</td><td><input type="text" name="name"></td></tr>
<tr><td>Email:</td><td><input type="text" name="email"></td></tr>
<tr><td>Comment:</td><td><textarea name="comment" id="comment_text"></textarea></td></tr>
</table>
</form>
<button onclick="addcomment()">Add Comment</button>
<script>
function addcomment()
{
 new Ajax.Updater( 'comments', 'addcomment.php',
 {
  method: 'post',
  parameters: $('cform').serialize(),
  onSuccess: function() {
    $('comment_text').value = '';
  }
 } );
}
</script>
</body>
</html>

  脚本首先使用数据库中关于该电影的评论填充 “comments” <div> 标记。 然后,在标准 HTML <form> 标记中包含评论名称、评论者电子邮件和评论内容的字段。form 标记中还包含一个隐藏值(当前所查看电影的 ID),从而评论添加脚本知道应该将这个评论指派给哪部电影。

(编辑:aniston)

  推荐精品文章

·2024年12月目录 
·2024年11月目录 
·2024年10月目录 
·2024年9月目录 
·2024年8月目录 
·2024年7月目录 
·2024年6月目录 
·2024年5月目录 
·2024年4月目录 
·2024年3月目录 
·2024年2月目录 
·2024年1月目录
·2023年12月目录
·2023年11月目录

  联系方式
TEL:010-82561037
Fax: 010-82561614
QQ: 100164630
Mail:gaojian@comprg.com.cn

  友情链接
 
Copyright 2001-2010, www.comprg.com.cn, All Rights Reserved
京ICP备14022230号-1,电话/传真:010-82561037 82561614 ,Mail:gaojian@comprg.com.cn
地址:北京市海淀区远大路20号宝蓝大厦E座704,邮编:100089