我的客户想要在她网站的每个页面上都有一个评论框。问题是,该网站已被创建为静态html网站。我过去使用php和phpMyAdmin制作了评论框,显然我会将她的每个页面改为.php而不是.html所以它会支持我的评论框的php代码,但我只创建了评论之前单页的方框。我现在正在改变的网站至少有10页需要评论框,将来会增加更多。
我喜欢为网站上提交的所有评论使用单一数据库表的想法(不会有很高的数量)。我只是不确定如何告诉提交的评论它应该显示在哪个页面上。
我认为我需要做的是让提交的评论存储它在数据库中的页面,然后我可以在每个页面上找到一个函数,查找具有该特定页面名称或ID的所有评论。我只是不确定如何做第一部分,我发送的数据用标识页面的其余部分来识别页面,有人能指出我正确的方向吗?
很抱歉,如果这是一个愚蠢的问题,我还是非常擅长PHP,谢谢!!
答案 0 :(得分:1)
你的想法是正确的。有多种方法可以做到这一点,但一个简单的解决方案是在数据库表中有一个页面名称字段。收集数据库插入的信息时,通过在注释表单中放入一个隐藏字段来检索页面,可能是......
<input type="hidden" name="page_name" value="<?=$_SERVER['REQUEST_URI']?>" />
然后从数据库中获取注释时,执行像
这样的数据库查询"SELECT * FROM `comments` WHERE `page_name` = '".$_SERVER['REQUEST_URI']."'";
始终记得在插入数据库之前清理用户信息!
答案 1 :(得分:0)
您需要的是一个带有列的表格,用于标识您需要的页面。例如:
表:评论
---------------------------------
id | page | comment | createdAt |
---------------------------------
1 | 1 | Com1 | 2014-01-01 00:00:00|
2 | 2 | Com2 | 2014-01-01 00:00:22|
3 | 1 | Com3 | 2014-01-01 00:30:00|
4 | 1 | Com4 | 2014-01-01 00:35:00|
然后在特定页面使用where子句中的列页面,仅选择该页面中的注释。
例如:
SELECT comment, createdAt FROM comments WHERE page = '1' ORDER BY createdAt DESC
ORDER BY将重新排列最新的订单。
发布到数据库时,也插入页面标识符。
INSERT INTO comments (page, comment, createdAt) VALUES ('1','this is a comment', NOW())
得到它?