您好,欢迎来到三六零分类信息网!老站,搜索引擎当天收录,欢迎发信息

SMARTY 二次循环的请教

2024/3/28 4:07:41发布13次查看
//所有版块@$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这卖二次循环问题已困扰很久,但好像不能再逃避,虚心请教,希望彻底了解这类问题
求指教!
回复讨论(解决方案) 另外也补充问个问题
我用smarty自己做 modifier.xxx.php 这类插件时,平时是常想顺利的
但为什么一用到数据库就完全不行?
我是用pdo的
因为没把$pdo这类句柄传入? 但是这种插件是由 模板直接调用,我根本就不能加入$pdo
我也试过加插件的function 内引入数据库文件,但也是表示数据库操作有误
请问有什么解决方案吗? 还是插件这部分根本不能操作数据库?
哪一步没成功?$row_type没值吗?
1.通过模板处理:类表 关联 子类表 得出结果集,在进行smarty的assign,模板循环2次 。
2.通过程序查询结果集处理:返回结果集,在程序组装成为字符串,直接assign传到模板。
//所有版块@$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);
大哥,谢谢你
就这意思
太感谢了,学到了
果然是逻辑问题
以后看来能解决大部分的二次循环问题了
谢谢
该用户其它信息

VIP推荐

免费发布信息,免费发布B2B信息网站平台 - 三六零分类信息网 沪ICP备09012988号-2
企业名录 Product