mysql 2张表,一张表记录帖子,为父表,一张表记录所有帖子的回复,为子表现在 在子表里有父表的帖子ID,然后,请问该用什么语句查询出每个帖子的回复内容并显示在每个帖子里。之前问过这个问题,因为还是不了解,所以又问了。$str="select pinglun.mingzi,pinglun.neirong from pinglun ,tiezi where pinglun.id=tiezi.id" ; 是不是用以上的双表查询语句,但是不行,求教,求教
调试欢乐多
字段包括 id (帖子id) biaoti(帖子标题) time(发帖时间)帖子回复表
表明:pinglun
字段包括 id(记录父帖子的id) neirong(评论内容) time (评论时间)用了妞妞的查询语句,我改了下$str="select pinglun.*,tiezi.id from pinglun ,tiezi where pinglun.id=tiezi.id;" 这个语句查询出来的结果还是所有的评论内容,是不是要让每个帖子显示自己的帖子评论内容还有更进一步的操作?
$str="select pinglun.*,tiezi.id from pinglun ,tiezi where pinglun.id=tiezi.id;"
语句里里的2个tiezi.id是否都要指定呢,其实不太明白第一个tiezi.id的意思tiezi.id是不是表单传递过来的数据,还是自增的
$str="select pinglun.*,tiezi.id from pinglun ,tiezi where pinglun.id=tiezi.id and pinglun.id=$_POST['id'];"
用ajax...html ajax 传递不同的参数给php,php根据参数内容返回不同的内容给html...这个构架里经常用到的呀第二个是关于是否使用数据库的
这个用什么都可以 甚至是文本文件都可以,主要是要看你的访问量和数据量 以后维护/性能 来考虑的.当然用关系数据库的话是比较好的选择.因为这些东西以后有各种查询什么修改之类的.如果仅仅是练习一下的话那就可以先不去设计数据库这个内容.
语句调试成功,最后一个问题,也是很困扰我的问题
$str="select pinglun.*,tiezi.id from pinglun ,tiezi where pinglun.id=tiezi.id and pinglun.id=$_POST['id'];"每次在一个帖子回复之后,其他的帖子都会显示出这个帖子里的评论内容,
不能做到不同的贴子里显示不同的评论内容$_POST['id'] 因为是个变量,如果用ID为1的帖子评论,则所有其他帖子都显示了本应该只显示在ID为1的帖子里的内容,
如用ID为2的帖子评论,则其它帖子全显示ID为2的,
这个咋整,因为以前没涉及过这种
<?php
$id=$_SESSION['id'];$link_ID=mysql_connect("localhost","root","198600");
mysql_select_db("my_db"); $str="select pinglun.*,tiezi.id from pinglun ,tiezi where pinglun.id=tiezi.id and pinglun.id='$id';" ;
$result=mysql_query($str, $link_ID);
$rows=mysql_num_rows($result); @mysql_data_seek($result,$rows-15);
if ($rows<15) $l=$rows; else $l=15; for ($i=1;$i<=$l;$i++) {
list($mingzi,$dizhi,$time,$neirong,$id,$tieziid)=mysql_fetch_row($result);echo $mingzi; echo ":"; echo $neirong;echo $tiezidi;
echo "<BR>" ;
}mysql_close($link_ID);
?>这是输出的php文件
www.mywebsite.com/view_tiezi.php?id=tiezi2
www.mywebsite.com/view_tiezi.php?id=tiezi3这样用户一点击超链接, 不就调用view_tiezi.php了吗,$_GET['id']不就知道用户想看哪个帖子了吗。
CREATE TABLE IF NOT EXISTS `bbs` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`pid` int(11) DEFAULT NULL,
`author` varchar(20) CHARACTER SET utf8 DEFAULT NULL,
`headline` varchar(100) CHARACTER SET utf8 DEFAULT NULL,
`content` text CHARACTER SET utf8,
`dates` datetime DEFAULT NULL,
PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 ;
数据库函数function query($sql='') {
mysql_connect();
mysql_select_db('test');
mysql_query('set names gbk');//根据需要改更字符集 $ret = array();
if(empty($sql)) return $ret;
if(is_array($sql)) {
$tbl_name = key($sql);
$f = join(',', array_keys(current($sql)));
$v = join("','", array_values(current($sql)));
$sql = "insert into $tbl_name ($f) values ('$v')";
}
$rs = mysql_query($sql) or die(mysql_error());
if(preg_match('/^select\s/i', $sql))
while($r = mysql_fetch_assoc($rs)) $ret[] = $r;
return $ret;
}
主体include 'template.php';
include 'query.php';function lists() {
return query("select * from bbs where pid=0 order by id desc limit 10");
}function main() {
return query("select * from bbs where id=$_GET[id] or pid=$_GET[id] order by id=$_GET[id] desc");
}$tpl =<<< TPL
<table width=100% dsn="lists">
<tr><td width=60%><a href="?id={id}">{headline}</a></td><td>{author}</td><td>{dates}</td></tr>
</table>
<form method=post>
作者<input type=text name=author><br>
标题<input type=text name=headline size=76><br>
<textarea name=content rows=10 cols=80></textarea><br>
<input type=submit value=提交>
</form>
TPL;if(isset($_GET['id'])) $tpl1 =<<< TPL
<a href="?">返回列表</a>
<table width=100% dsn="main,1">
<tr><td width=60%>{headline}</td><th>{author}</th><td>{dates}</td><tr>
<tr><td colspan=2><xmp>{content}</xmp></td></tr>
</table>
<form method=post>
作者<input type=text name=author><br>
<textarea name=content rows=10 cols=80></textarea><br>
<input type=hidden name=pid value=$_GET[id]>
<input type=submit value=回复>
</form>
TPL;if($_SERVER['REQUEST_METHOD'] == "POST") {
$_POST['dates'] = date('Y-m-d H:i:s');
query(array('bbs' => $_POST));
}else if(isset($_GET['id'])) $tpl = $tpl1;new template($tpl);整个过程就是这么简单