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_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);
大哥,谢谢你
就这意思
太感谢了,学到了
果然是逻辑问题
以后看来能解决大部分的二次循环问题了
谢谢

热AI工具

Undresser.AI Undress
人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover
用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool
免费脱衣服图片

Clothoff.io
AI脱衣机

AI Hentai Generator
免费生成ai无尽的。

热门文章

热工具

记事本++7.3.1
好用且免费的代码编辑器

SublimeText3汉化版
中文版,非常好用

禅工作室 13.0.1
功能强大的PHP集成开发环境

Dreamweaver CS6
视觉化网页开发工具

SublimeText3 Mac版
神级代码编辑软件(SublimeText3)

热门话题

作为AI人工智能领域的龙头币种,FET币因其可观的投资回报率而备受关注,FET币是不仅是Fetch.ai平台使用定量的可分割代币,也是该平台智能合约和预言机的重要组成部分。随着牛市市场的的到来,FET币的价格持续攀升,但对于这样市场趋势投资者依旧不满足,想了解FET币多久会迎来二次暴涨?更想知道币圈分析师对FET币预测最多上涨到多少?根据圈内分析师预测来看,第二次暴涨在2025年,最高涨到8.15美元。接下来小编为大家详细说说。FET币多久会迎来二次暴涨?根据圈内分析师预测来看,FET币第二次暴

lambda表达式跳出循环,需要具体代码示例在编程中,循环结构是经常使用的一种重要语法。然而,在特定的情况下,我们可能希望在循环体内满足某个条件时,跳出整个循环,而不是仅仅终止当前的循环迭代。在这个时候,lambda表达式的特性可以帮助我们实现跳出循环的目标。lambda表达式是一种匿名函数的声明方式,它可以在内部定义简单的函数逻辑。它与普通的函数声明不同,

注:本文以Go语言的角度来比较研究循环和递归。在编写程序时,经常会遇到需要对一系列数据或操作进行重复处理的情况。为了实现这一点,我们需要使用循环或递归。循环和递归都是常用的处理方式,但在实际应用中,它们各有优缺点,因此在选择使用哪种方法时需要考虑实际情况。本文将对Go语言中的循环和递归进行比较研究。一、循环循环是一种重复执行某段代码的机制。Go语言中主要有三

这篇文章将为大家详细讲解有关PHP返回数组所有值,组成一个数组,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。使用array_values()函数array_values()函数返回一个数组中所有值的数组。它不会保留原始数组的键。$array=["foo"=>"bar","baz"=>"qux"];$values=array_values($array);//$values将是["bar","qux"]使用循环可以使用循环手动获取数组的所有值并将其添加到一个新

用迭代替代Java函数中的递归调用在Java中,递归是一个强大的工具,用于解决各种问题。但是,在某些情况下,使用迭代可能是一个更好的选择,因为它更有效且不易出现堆栈溢出。以下是迭代的优点:效率更高,因为它不需要为每个递归调用创建新的栈帧。不容易发生堆栈溢出,因为堆栈空间使用受限制。替代递归调用的迭代方法:Java中有几种方法可以将递归函数转换为迭代函数。1.使用栈使用栈是将递归函数转换为迭代函数最简单的方法。栈是一种后入先出(LIFO)数据结构,类似于函数调用栈。publicintfa

Iterator接口Iterator接口是一个用于遍历集合的接口。它提供了几个方法,包括hasNext()、next()和remove()。hasNext()方法返回一个布尔值,指示集合中是否还有下一个元素。next()方法返回集合中的下一个元素,并将其从集合中删除。remove()方法从集合中删除当前元素。以下代码示例演示了如何使用Iterator接口来遍历集合:Listnames=Arrays.asList("John","Mary","Bob");Iterator

所有编程语言都离不开循环。因此,默认情况下,只要有重复操作,我们就会开始执行循环。但是当我们处理大量迭代(数百万/十亿行)时,使用循环是一种犯罪。您可能会被困几个小时,后来才意识到它行不通。这就是在python中实现矢量化变得非常关键的地方。什么是矢量化?矢量化是在数据集上实现(NumPy)数组操作的技术。在后台,它将操作一次性应用于数组或系列的所有元素(不同于一次操作一行的“for”循环)。接下来我们使用一些用例来演示什么是矢量化。求数字之和##使用循环importtimestart

如何处理PHP循环嵌套错误并生成相应的报错信息在开发中,我们经常会用到循环语句来处理重复的任务,比如遍历数组、处理数据库查询结果等。然而,在使用循环嵌套的过程中,有时候会遇到错误,如无限循环或者嵌套层数过多,这种问题会导致服务器性能下降甚至崩溃。为了更好地处理这类错误,并生成相应的报错信息,本文将介绍一些常见的处理方式,并给出相应的代码示例。一、使用计数器来
