php怎么调用两个关联数据表里的数据

1355529020 2014-01-15 11:37:36
$query = $db->query("SELECT list_dir,list_id,list_name,list_status FROM ff_list WHERE list_status != 0 ORDER BY list_id ASC LIMIT 0, 30");
while($n = $db->fetch_array($query)) {


$query = $db->query("SELECT vod_name,vod_cid FROM ff_vod WHERE vod_cid in ($n['list_id']) ORDER BY rand() LIMIT 0, 10");
while($m = $db->fetch_array($query)) {

$z[]='<div class="linkbox"><h3><a href='."'/".$n['list_dir']."/'>".$n['list_name'].$m['vod_name'].'</a></h3></div>';
}
}


怎么双重while调用 ,或者用其它的调用方法调用达到我相要的效果
ff_list数据表是栏目列表
ff_vod是文章列表
两表的关联字段是:vod_cid=list_id
就是吧ff_list里的所有栏目名称调用出来,然后在栏目名称下面显示10条文章,怎么一次性调用出来,看好多论坛或CMS都可以


例如:
栏目名称:军事新闻
aaaaaaaaaaaaaaaaa
bbbbbbbbbbbbbbbbb
ccccccccccccccccc
ddddddddddddddddd
eeeeeeeeeeeeeeeee

栏目名称:娱乐新闻
ffffffffffffffffff
gggggggggggggggggg
hhhhhhhhhhhhhhhhhh
...........


小弟是菜鸟,麻烦知道的大哥直接给代码,谢谢了
...全文
388 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
码无边 2014-01-16
  • 打赏
  • 举报
回复
少了一个from

select list_name,vod_name from ff_list,ff_vod 
where vod_cid=list_id 
and list_status != 0
and vod_cid in ($n['list_id']) ORDER BY rand() LIMIT 0, 10
码无边 2014-01-16
  • 打赏
  • 举报
回复
为什么你不把栏目表和文章表关联呢? 两张表的关联都已经出来,vod_cid=list_id 整合你的sql

select list_name,vod_name,ff_list,ff_vod 
where vod_cid=list_id 
and list_status != 0
and vod_cid in ($n['list_id']) ORDER BY rand() LIMIT 0, 10
1355529020 2014-01-16
  • 打赏
  • 举报
回复
可以了谢谢~~~
xuzuning 2014-01-16
  • 打赏
  • 举报
回复
$query1 = $db->query("SELECT list_dir,list_id,list_name,list_status FROM ff_list WHERE list_status != 0 ORDER BY list_id ASC LIMIT 0, 30");
while($n = $db->fetch_array($query1)) {
 
 
$query2 = $db->query("SELECT vod_name,vod_cid FROM ff_vod WHERE vod_cid in ($n['list_id']) ORDER BY rand() LIMIT 0, 10");
while($m = $db->fetch_array($query2)) {
 
        $z[]='<div class="linkbox"><h3><a href='."'/".$n['list_dir']."/'>".$n['list_name'].$m['vod_name'].'</a></h3></div>';
}
}
一起混吧 2014-01-16
  • 打赏
  • 举报
回复
$z[]='</div>'; 这样不行么?
1355529020 2014-01-16
  • 打赏
  • 举报
回复
$query1 = $db->query("SELECT list_dir,list_id,list_name,list_status FROM ff_list WHERE list_status != 0 ORDER BY list_id ASC LIMIT 0, 30"); while($n = $db->fetch_array($query1)) { $z[]='<div class="linkbox"><h3><a href='."'/".$n['list_dir']."/'>".$n['list_name'].'</a></h3>'; $query2 = $db->query("SELECT vod_name,vod_cid FROM ff_vod WHERE vod_cid in ($n[list_id]) ORDER BY rand() LIMIT 0, 10"); while($m = $db->fetch_array($query2)) { $z[]='<h3>'.$m['vod_name'].'</h3>'; } $z = $z[].'</div>'; }
1355529020 2014-01-16
  • 打赏
  • 举报
回复
基本解决了最后一小步,版主大哥再帮忙下,试过各种都不行

$query1 = $db->query("SELECT list_dir,list_id,list_name,list_status FROM ff_list WHERE list_status != 0 ORDER BY list_id ASC LIMIT 0, 30");
while($n = $db->fetch_array($query1)) {
   $z[]='<div class="linkbox"><h3><a href='."'/".$n['list_dir']."/'>".$n['list_name'].'</a></h3>';
  
$query2 = $db->query("SELECT vod_name,vod_cid FROM ff_vod WHERE vod_cid in ($n[list_id]) ORDER BY rand() LIMIT 0, 10");
while($m = $db->fetch_array($query2)) {
        $z[]='<h3>'.$m['vod_name'].'</h3>';
  
}
$z = $z[].'</div>';
}
就是要在外层循环结尾处加个</div>,也就是在栏目30个循环后面加个</div> 得到的效果是: '<div class="linkbox"><h3><a href='."'/".$n['list_dir']."/'>".$n['list_name'].'</a></h3>'.'<h3>'.$m['vod_name'].'</h3>'.'</div>'; '<div class="linkbox"><h3><a href='."'/".$n['list_dir']."/'>".$n['list_name'].'</a></h3>'.'<h3>'.$m['vod_name'].'</h3>'.'</div>'; 如果这样加外层就把内层的隔断了:$z[]='<div class="linkbox"><h3><a href='."'/".$n['list_dir']."/'>".$n['list_name'].'</a></h3>'.'</div>'; 如果这样加到内层又每条文章都有个</div>:$z[]='<h3>'.$m['vod_name'].'</h3>'.'</div>'; 像我红色部分这样又有错误 不知道问题说明白了吗?版主麻烦,谢谢了!
天涯过客009 2014-01-16
  • 打赏
  • 举报
回复
不会,帮你顶一下
一起混吧 2014-01-16
  • 打赏
  • 举报
回复
$query1 = $db->query("SELECT list_dir,list_id,list_name,list_status FROM ff_list WHERE list_status != 0 ORDER BY list_id ASC LIMIT 0, 30");
while($n = $db->fetch_array($query1)) {
   $z[]='<div class="linkbox"><h3>'.$n['list_name'].'</h3></div>';
  
$query2 = $db->query("SELECT vod_name,vod_cid FROM ff_vod WHERE vod_cid in ($n['list_id']) ORDER BY rand() LIMIT 0, 10");
while($m = $db->fetch_array($query2)) {
  
        $z[]='<div class="linkbox"><h3><a href='."'/".$n['list_dir']."/'>".$m['vod_name'].'</a></h3></div>';
}
}
1355529020 2014-01-16
  • 打赏
  • 举报
回复
2楼的版主大哥,报错啊 syntax error, unexpected T_ENCAPSED_AND_WHITESPACE, expecting T_STRING or T_VARIABLE or T_NUM_STRING in

21,887

社区成员

发帖
与我相关
我的任务
社区描述
从PHP安装配置,PHP入门,PHP基础到PHP应用
社区管理员
  • 基础编程社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧