ecshop留言扳和商品评论显示分析和bug处理
2011-11-23 23:25 来源:www.chinab4c.com 作者:ecshop专家
ecshop留言扳和商品评论显示分析和bug处理,主要是通过分析 ecshop message.php这个页面显示的ecshop商品评论和ecshop用户留言。这个页面的程序其实包括两方面的内容。一方面是ecshop数据库表comment的内容,一方面是表feedback的内容。在这个页面就是将ecshop的两个数据库表中的内容集中显示。
首先我们看。如果是大于mysql.3.2的版本的数据库。可以直接支持 $sql .= " UNION ";的查询。这样很方便的将两个表中的数据集中在一个查询的数组结果中了。如果是很老的版本的mysql就考虑到整合到临时表中去查询了。
$cre_con = "CREATE TEMPORARY TABLE tmp_table ".$con_sql;
$GLOBALS['db']->query($cre_con);
ecshop的评论和留言,虽然分别存储在不同的表,但是他们的回复,却是和主内容在同一个表里面。比如ecshop商品评论,comment表中的comment_id,那么他的parent_id字段是空的,也就是为0。那么很显然,当ecshop comment表中,某条评论有回复的时候。那么直接向ecshop comment表中插入一条数据。就成为了该条主评论的回复了。ecshop评论的回复的parent_id为主评论的comment_id ,如果是ecshop主评论。那么status的值有几种不同的情况,那么如果是ecshop的回复。那么就只有status=0唯一的一种情况了。
这就是ecshop的message.php页面显示的数据和以及他们在数据库中的一些关系的基本原理。下面我们谈ecshop商品评论和回复程序里面的一些bug;
首先,我们看ecshop的程序。
通过检索, $res = $GLOBALS['db']->SelectLimit($sql, $num, $start);
然后循环出$msg[$rows['msg_time']]['tablename'] = $rows['tablename'];一些数据,这个时候我们认真看。也是通过循环取得商品评论的回复的。
$sql = 'SELECT user_name AS re_name, email AS re_email, add_time AS re_time, content AS re_content ,parent_id
FROM ' . $GLOBALS['ecs']->table('comment') .
" WHERE parent_id = $id ";
$msg[$rows['msg_time']]['re_name'] = $reply['re_name'];
通过这点我们分析,这个写法是十分危险的。如果有一条评论,和另外一条评论是同时写入数据库的。那么很简单。将会造成ecshop留言板造成非常大的混乱,会造成所有的评论的第一条和最后一条的回复整合在一起显示。将所有中间的结果都合并了。所以避免这个问题的最简单的办法就是通过$msg[$rows['comment_id']]['tablename'] =$rows['tablename'];类似这样的方式来解决这个问题。
最近更新
常用插件
- ecshop购物车功能改进[插件
ecshop购物车功能改进[插件套餐]主要是我们最近开发工作和开发项目中。...
- ecshop降价通知登记插件
ecshop降价通知登记插件,主要是为了方便某些客户,对商品价格要求比...
- ecshop分类树中统计商品数
最近忙于开发其他项目,在不少朋友不断要求和催促的情况下,做出了该小...
- ecshop通用红包编码
很多时候,为了结合促销,必须扩展一下ecshop的红包功能。ecshop的红包...
- ecshop红包修改成满多少减
我们在长期使用ecshop的时候,我们可以发现。ecshop的红包是一个非常强...