SMARTY 二次循环的请教

php中文网
发布: 2016-06-23 13:52:20
原创
1050人浏览过

//所有版块@$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这卖二次循环问题已困扰很久,但好像不能再逃避,虚心请教,希望彻底了解这类问题

求指教!

宣小二
宣小二

宣小二:媒体发稿平台,自媒体发稿平台,短视频矩阵发布平台,基于AI驱动的企业自助式投放平台。

宣小二 21
查看详情 宣小二

回复讨论(解决方案)

另外也补充问个问题

我用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);
登录后复制


大哥,谢谢你
就这意思
太感谢了,学到了

果然是逻辑问题
以后看来能解决大部分的二次循环问题了

谢谢
最佳 Windows 性能的顶级免费优化软件
最佳 Windows 性能的顶级免费优化软件

每个人都需要一台速度更快、更稳定的 PC。随着时间的推移,垃圾文件、旧注册表数据和不必要的后台进程会占用资源并降低性能。幸运的是,许多工具可以让 Windows 保持平稳运行。

下载
来源:php中文网
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
最新问题
开源免费商场系统广告
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号