类别表category -------------------------------- id title fid 1 A -1 2 a1 1 3 a2 1 4 a3 1 5 a4 1 6 B -1 7 b1 6 ...... 主题表topics --------------------------- id title fid 1 记录一 3 2 记录 7 3 记录三 5 .............. 要求:只显示topics表下的1,3(即topics表下fid=3,=5是属于A类的)条记录, 且要求只显示A类前10条后将不再输出多于的记录。
我的做法是: function show_new_topic(){ global $topics,$catalog,$conn,$linkerror; $query=mysql_query("select * from $topics order by id desc",$conn)or die($linkerror); $col=0; while($row=mysql_fetch_object($query)){ $query1=mysql_query("select fid from $catalog where id='$row->fid'",$conn)or die($lilnkerror); $row1=mysql_fetch_object($query1); if($row1->fid==1){ $col=$col+1; echo "$row->title"; } if($col>=10){ return; } } } 当运行程序时,会只显示上现topics表中id=1,3两条记录。以后的程序会显示正常 但当A类的数据大于10条时。也会显示10条记录,但以后的程序不会显示正常。好像前面有程序将什么中断了一样。是不是上面的根本写错了。
$id = 1; // A 的id $rs = mysql_query("select * from category where fid = $id"); // 取出$id的子节点 while($r = mysql_fetch_row($rs)) // 取出子节点的id到数组$ar $ar[] = $r[id]; $query = mysql_query("select * from topics where fid in(",join(",",$ar).") limit 10"); // 取出各子节点的内容 while($row = mysql_fetch_object($query)) { // 其他语句 }
--------------------------------
id title fid
1 A -1
2 a1 1
3 a2 1
4 a3 1
5 a4 1
6 B -1
7 b1 6
......
主题表topics
---------------------------
id title fid
1 记录一 3
2 记录 7
3 记录三 5
..............
要求:只显示topics表下的1,3(即topics表下fid=3,=5是属于A类的)条记录,
且要求只显示A类前10条后将不再输出多于的记录。
function show_new_topic(){
global $topics,$catalog,$conn,$linkerror;
$query=mysql_query("select * from $topics order by id desc",$conn)or die($linkerror);
$col=0;
while($row=mysql_fetch_object($query)){
$query1=mysql_query("select fid from $catalog where id='$row->fid'",$conn)or die($lilnkerror);
$row1=mysql_fetch_object($query1);
if($row1->fid==1){
$col=$col+1;
echo "$row->title";
}
if($col>=10){
return;
}
}
}
当运行程序时,会只显示上现topics表中id=1,3两条记录。以后的程序会显示正常
但当A类的数据大于10条时。也会显示10条记录,但以后的程序不会显示正常。好像前面有程序将什么中断了一样。是不是上面的根本写错了。
$rs = mysql_query("select * from category where fid = $id"); // 取出$id的子节点
while($r = mysql_fetch_row($rs)) // 取出子节点的id到数组$ar
$ar[] = $r[id];
$query = mysql_query("select * from topics where fid in(",join(",",$ar).") limit 10"); // 取出各子节点的内容
while($row = mysql_fetch_object($query)) {
// 其他语句
}