Inhaltsverzeichnis
回复讨论(解决方案)
Heim Backend-Entwicklung PHP-Tutorial SMARTY 二次循环的请教

SMARTY 二次循环的请教

Jun 23, 2016 pm 01:52 PM
smarty sekundär 循环

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

代码是给各位看现在的逻辑 但没成功

学会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);
Nach dem Login kopieren


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

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

谢谢
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn

Heiße KI -Werkzeuge

Undresser.AI Undress

Undresser.AI Undress

KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover

AI Clothes Remover

Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool

Undress AI Tool

Ausziehbilder kostenlos

Clothoff.io

Clothoff.io

KI-Kleiderentferner

AI Hentai Generator

AI Hentai Generator

Erstellen Sie kostenlos Ai Hentai.

Heißer Artikel

R.E.P.O. Energiekristalle erklärten und was sie tun (gelber Kristall)
3 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Beste grafische Einstellungen
3 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. So reparieren Sie Audio, wenn Sie niemanden hören können
3 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌
WWE 2K25: Wie man alles in Myrise freischaltet
3 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌

Heiße Werkzeuge

Notepad++7.3.1

Notepad++7.3.1

Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version

SublimeText3 chinesische Version

Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1

Senden Sie Studio 13.0.1

Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6

Dreamweaver CS6

Visuelle Webentwicklungstools

SublimeText3 Mac-Version

SublimeText3 Mac-Version

Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Wie schnell werden FET-Münzen einen zweiten Anstieg erleben? Wie hoch ist die Prognose für den maximalen Anstieg? Wie schnell werden FET-Münzen einen zweiten Anstieg erleben? Wie hoch ist die Prognose für den maximalen Anstieg? Apr 14, 2024 am 09:16 AM

Als führende Währung im Bereich der künstlichen KI hat die FET-Währung aufgrund ihrer beträchtlichen Kapitalrendite viel Aufmerksamkeit erregt. Die FET-Währung ist nicht nur ein quantitativ teilbarer Token, der von der Fetch.ai-Plattform verwendet wird, sondern auch die intelligenten Verträge der Plattform Orakel. Ein wichtiger Teil von. Mit dem Einsetzen des Bullenmarktes steigt der Preis der FET-Münzen weiter, aber die Anleger sind mit diesem Markttrend immer noch nicht zufrieden. Sie möchten wissen, wie bald die FET-Münzen einen zweiten Anstieg erleben werden. Ich würde auch gerne wissen, wie stark die Analysten des Währungskreises den maximalen Anstieg der FET-Münzen vorhersagen. Den Prognosen der Analysten im Kreis zufolge wird der zweite Anstieg im Jahr 2025 erfolgen, mit einem maximalen Anstieg von 8,15 $. Als nächstes wird Ihnen der Herausgeber im Detail berichten. Wie schnell werden FET-Münzen einen zweiten Anstieg erleben? Den Prognosen der Analysten im Kreis zufolge wird die FET-Währung zum zweiten Mal explodieren.

Der Lambda-Ausdruck bricht aus der Schleife aus Der Lambda-Ausdruck bricht aus der Schleife aus Feb 20, 2024 am 08:47 AM

Wenn der Lambda-Ausdruck aus der Schleife ausbricht, sind spezifische Codebeispiele erforderlich. Bei der Programmierung ist die Schleifenstruktur eine wichtige Syntax, die häufig verwendet wird. Unter bestimmten Umständen möchten wir jedoch möglicherweise aus der gesamten Schleife ausbrechen, wenn eine bestimmte Bedingung im Schleifenkörper erfüllt ist, anstatt nur die aktuelle Schleifeniteration zu beenden. Zu diesem Zeitpunkt können uns die Eigenschaften von Lambda-Ausdrücken dabei helfen, das Ziel zu erreichen, aus der Schleife zu springen. Der Lambda-Ausdruck ist eine Möglichkeit, eine anonyme Funktion zu deklarieren, die intern einfache Funktionslogik definieren kann. Es unterscheidet sich von einer gewöhnlichen Funktionsdeklaration:

Eine vergleichende Studie über Schleifen und Rekursion in der Go-Sprache Eine vergleichende Studie über Schleifen und Rekursion in der Go-Sprache Jun 01, 2023 am 09:23 AM

Hinweis: In diesem Artikel werden Schleifen und Rekursion aus der Perspektive der Go-Sprache verglichen. Beim Schreiben von Programmen kommt es häufig vor, dass eine Reihe von Daten oder Vorgängen wiederholt verarbeitet werden müssen. Um dies zu erreichen, müssen wir Schleifen oder Rekursion verwenden. Schleifen und Rekursionen sind häufig verwendete Verarbeitungsmethoden, aber in praktischen Anwendungen haben sie jeweils Vor- und Nachteile, sodass bei der Auswahl der zu verwendenden Methode die tatsächliche Situation berücksichtigt werden muss. In diesem Artikel wird eine vergleichende Studie zu Schleifen und Rekursion in der Go-Sprache durchgeführt. 1. Schleifen Eine Schleife ist ein Mechanismus, der einen bestimmten Codeabschnitt wiederholt ausführt. Es gibt drei Haupttypen der Go-Sprache

Welche Alternativen gibt es zu rekursiven Aufrufen in Java-Funktionen? Welche Alternativen gibt es zu rekursiven Aufrufen in Java-Funktionen? May 05, 2024 am 10:42 AM

Ersetzen rekursiver Aufrufe in Java-Funktionen durch Iteration. In Java ist die Rekursion ein leistungsstarkes Werkzeug zur Lösung verschiedener Probleme. In einigen Fällen kann die Verwendung von Iteration jedoch eine bessere Option sein, da sie effizienter und weniger anfällig für Stapelüberläufe ist. Hier sind die Vorteile der Iteration: Effizienter, da nicht für jeden rekursiven Aufruf ein neuer Stapelrahmen erstellt werden muss. Es ist weniger wahrscheinlich, dass Stapelüberläufe auftreten, da die Stapelplatznutzung begrenzt ist. Iterative Methoden als Alternative zu rekursiven Aufrufen: In Java gibt es mehrere Methoden, um rekursive Funktionen in iterative Funktionen umzuwandeln. 1. Verwenden Sie den Stapel. Die Verwendung des Stapels ist die einfachste Möglichkeit, eine rekursive Funktion in eine iterative Funktion umzuwandeln. Der Stapel ist eine Last-In-First-Out-Datenstruktur (LIFO), ähnlich einem Funktionsaufrufstapel. publicintfa

Java Iterator vs. Iterable: Ein Schritt zum Schreiben eleganten Codes Java Iterator vs. Iterable: Ein Schritt zum Schreiben eleganten Codes Feb 19, 2024 pm 02:54 PM

Iterator-Schnittstelle Die Iterator-Schnittstelle ist eine Schnittstelle zum Durchlaufen von Sammlungen. Es bietet mehrere Methoden, darunter hasNext(), next() und remove(). Die Methode hasNext() gibt einen booleschen Wert zurück, der angibt, ob es ein nächstes Element in der Sammlung gibt. Die Methode next() gibt das nächste Element in der Sammlung zurück und entfernt es aus der Sammlung. Die Methode „remove()“ entfernt das aktuelle Element aus der Sammlung. Das folgende Codebeispiel zeigt, wie die Iterator-Schnittstelle zum Durchlaufen einer Sammlung verwendet wird: Listnames=Arrays.asList("John","Mary","Bob");Iterator

PHP gibt alle Werte im Array zurück, um ein Array zu bilden PHP gibt alle Werte im Array zurück, um ein Array zu bilden Mar 21, 2024 am 09:06 AM

In diesem Artikel wird ausführlich erläutert, wie PHP alle Werte eines Arrays zurückgibt, um ein Array zu bilden. Der Herausgeber hält dies für recht praktisch, daher teile ich es Ihnen als Referenz mit und hoffe, dass Sie nach dem Lesen dieses Artikels etwas gewinnen können . Verwenden der Funktion array_values() Die Funktion array_values() gibt ein Array aller Werte in einem Array zurück. Die Schlüssel des ursprünglichen Arrays bleiben nicht erhalten. $array=["foo"=>"bar","baz"=>"qux"];$values=array_values($array);//$values ​​​​werden ["bar","qux"]Verwendet Eine Schleife kann eine Schleife verwenden, um alle Werte des Arrays manuell abzurufen und zu einem neuen hinzuzufügen

Verwenden der Vektorisierung zum Ersetzen von Schleifen in Python Verwenden der Vektorisierung zum Ersetzen von Schleifen in Python Apr 14, 2023 pm 07:07 PM

Alle Programmiersprachen sind untrennbar mit Schleifen verbunden. Daher beginnen wir standardmäßig mit der Ausführung einer Schleife, wann immer es einen sich wiederholenden Vorgang gibt. Aber wenn wir es mit einer großen Anzahl von Iterationen (Millionen/Milliarden Zeilen) zu tun haben, ist die Verwendung von Schleifen ein Verbrechen. Möglicherweise stecken Sie ein paar Stunden lang fest, nur um später festzustellen, dass es nicht funktioniert. An dieser Stelle wird die Implementierung der Vektorisierung in Python sehr wichtig. Was ist Vektorisierung? Die Vektorisierung ist eine Technik zur Implementierung von (NumPy)-Array-Operationen für Datensätze. Im Hintergrund wird die Operation auf alle Elemente des Arrays oder der Reihe gleichzeitig angewendet (im Gegensatz zu einer „for“-Schleife, die jeweils eine Zeile bearbeitet). Als Nächstes zeigen wir anhand einiger Anwendungsfälle, was Vektorisierung ist. Finden Sie die Summe der Zahlen##Verwenden Sie die Schleife importtimestart

Abenteuer in Schleifen und Iteration: Ein Abenteuer im Python-Code Abenteuer in Schleifen und Iteration: Ein Abenteuer im Python-Code Feb 19, 2024 pm 08:48 PM

Schleifen und Iterationen: Kernkonzepte in der Programmierung Schleifen und Iterationen sind wesentliche Konzepte in der Programmierung, die es einem Programm ermöglichen, eine Reihe von Anweisungen wiederholt auszuführen. Schleifen werden verwendet, um die Anzahl der Wiederholungen explizit anzugeben, während Iterationen verwendet werden, um über die Elemente in einer Sammlung oder Datenstruktur zu iterieren. Arten von Schleifen Es gibt drei Haupttypen von Schleifen: 1. for-Schleife Eine for-Schleife wird verwendet, um einen Codeblock auszuführen, wenn Sie die Anzahl der Wiederholungen kennen. Seine Syntax lautet wie folgt: for (Initialisierung; Bedingung; Inkrementieren/Dekrementieren) {//Codeblock, der wiederholt ausgeführt werden soll} Die folgende for-Schleife gibt beispielsweise die Zahlen 1 bis 10 aus: for(inti=1;i

See all articles