//所有版块
@$row_fid = "SELECT * FROM `forum_forum` ORDER BY `displayorder` ASC";
$stmt = $pdo->prepare($row_fid);
$stmt->execute();
$row_forum = $stmt->fetchAll(PDO::FETCH_ASSOC);
//主题分类
foreach ($row_forum as $key => $value) {
$fid = $value["fid"];
@$sql = "SELECT `typeid`,`name` FROM `forum_topic_type` WHERE `fid` = $fid";
$stmt = $pdo->prepare($sql);
$stmt->execute();
$row_type = $stmt->fetchAll(PDO::FETCH_ASSOC);
}
print_r($row_type);
$smarty -> assign("all_forum",$row_forum);
代码是给各位看现在的逻辑 但没成功
学会SMARTY时间不长
有两张表
forum_forum 是讨论版块ID 主要是`name`,`fid`
forum_topic_type 是讨论版块的主题分类ID 主要是`typeid`, `name`,`fid`
本来
我是先把
forum_forum 列出所有版块,然后加到smarty的assign
成功在前台的所有版块列表中,显示出来
但想在版块名称的下方,把此讨论版块的旗下所有「主题分类」都循环出来,
但发现,这些东西(这张表forum_forum )已在前台循环了,我无法取得fid 来循环 相关的主题分类,因为循环结果的ID已经在模板中才能取得
所以想了想...在smarty的assign之前,试试foreach一下有什么结果,
然后试试看能不能合并成同一个组数再assign,发觉有点不行
所以想请教一下各位前辈
己想过的解决方法
1. 合并多表查询,但是主题分类也不只一个...所以就放弃这方法
2. 做个smarty 插件,已试了,但是也是卡住了不能前进
其实SMARTY这卖二次循环问题已困扰很久,但好像不能再逃避,虚心请教,希望彻底了解这类问题
求指教!

------解决方案--------------------
//所有版块
@$row_fid = "SELECT * FROM `forum_forum` ORDER BY `displayorder` ASC";
$stmt = $pdo->prepare($row_fid);
$stmt->execute();
$row_forum = $stmt->fetchAll(PDO::FETCH_ASSOC);
//主题分类
foreach ($row_forum as $key => $value) {
$fid = $value["fid"];
@$sql = "SELECT `typeid`,`name` FROM `forum_topic_type` WHERE `fid` = $fid";
$stmt = $pdo->prepare($sql);
$stmt->execute();
$row_forum[$key]['list'] = $stmt->fetchAll(PDO::FETCH_ASSOC);
}
print_r($row_forum);
$smarty -> assign("all_forum",$row_forum);