当前位置:Gxlcms > PHP教程 > SMARTY二次循环的请问

SMARTY二次循环的请问

时间:2021-07-01 10:21:17 帮助过:3人阅读

SMARTY 二次循环的请教
本帖最后由 sky94132003 于 2014-08-06 03:20:32 编辑


//所有版块
@$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);

人气教程排行