Table des matières
回复讨论(解决方案)
Maison développement back-end tutoriel php SMARTY 二次循环的请教

SMARTY 二次循环的请教

Jun 23, 2016 pm 01:52 PM
smarty secondaire 循环

//所有版块@$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);
Copier après la connexion

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

学会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);
Copier après la connexion


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

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

谢谢
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn

Outils d'IA chauds

Undresser.AI Undress

Undresser.AI Undress

Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover

AI Clothes Remover

Outil d'IA en ligne pour supprimer les vêtements des photos.

Undress AI Tool

Undress AI Tool

Images de déshabillage gratuites

Clothoff.io

Clothoff.io

Dissolvant de vêtements AI

AI Hentai Generator

AI Hentai Generator

Générez AI Hentai gratuitement.

Outils chauds

Bloc-notes++7.3.1

Bloc-notes++7.3.1

Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise

SublimeText3 version chinoise

Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1

Envoyer Studio 13.0.1

Puissant environnement de développement intégré PHP

Dreamweaver CS6

Dreamweaver CS6

Outils de développement Web visuel

SublimeText3 version Mac

SublimeText3 version Mac

Logiciel d'édition de code au niveau de Dieu (SublimeText3)

Dans combien de temps les pièces FET connaîtront-elles une deuxième poussée ? Quel est le niveau prévu pour l'augmentation maximale ? Dans combien de temps les pièces FET connaîtront-elles une deuxième poussée ? Quel est le niveau prévu pour l'augmentation maximale ? Apr 14, 2024 am 09:16 AM

En tant que monnaie leader dans le domaine de l'intelligence artificielle de l'IA, la monnaie FET a attiré beaucoup d'attention en raison de son retour sur investissement considérable. La monnaie FET n'est pas seulement un jeton quantitatif divisible utilisé par la plateforme Fetch.ai, mais aussi les contrats intelligents de la plateforme. oracles. Une partie importante de. Avec l'arrivée du marché haussier, le prix des pièces FET continue d'augmenter, mais les investisseurs ne sont toujours pas satisfaits de cette tendance du marché. Ils veulent savoir dans combien de temps les pièces FET connaîtront-elles une deuxième hausse ? J'aimerais également savoir dans quelle mesure les analystes du cercle monétaire prédisent la hausse maximale des pièces FET ? Selon les prévisions des analystes du cercle, la deuxième poussée se produira en 2025, avec une hausse maximale de 8,15 dollars. Ensuite, l'éditeur vous le dira en détail. Dans combien de temps les pièces FET connaîtront-elles une deuxième poussée ? Selon les prévisions des analystes du cercle, la monnaie FET va exploser pour la deuxième fois.

L'expression lambda sort de la boucle L'expression lambda sort de la boucle Feb 20, 2024 am 08:47 AM

L'expression Lambda sort de la boucle, des exemples de code spécifiques sont nécessaires en programmation, la structure de boucle est une syntaxe importante qui est souvent utilisée. Cependant, dans certaines circonstances, nous pouvons vouloir sortir de la boucle entière lorsqu'une certaine condition est remplie dans le corps de la boucle, plutôt que de simplement terminer l'itération en cours de la boucle. À l'heure actuelle, les caractéristiques des expressions lambda peuvent nous aider à atteindre l'objectif de sortir de la boucle. L'expression Lambda est un moyen de déclarer une fonction anonyme, qui peut définir une logique de fonction simple en interne. C'est différent d'une déclaration de fonction ordinaire,

Une étude comparative des boucles et de la récursivité en langage Go Une étude comparative des boucles et de la récursivité en langage Go Jun 01, 2023 am 09:23 AM

Remarque : Cet article compare les boucles et la récursivité du point de vue du langage Go. Lors de l'écriture de programmes, vous rencontrez souvent des situations dans lesquelles une série de données ou d'opérations doivent être traitées de manière répétée. Pour y parvenir, nous devons utiliser des boucles ou de la récursivité. Les boucles et les récursions sont toutes deux des méthodes de traitement couramment utilisées, mais dans les applications pratiques, elles présentent chacune des avantages et des inconvénients, c'est pourquoi la situation réelle doit être prise en compte lors du choix de la méthode à utiliser. Cet article mènera une étude comparative des boucles et de la récursivité dans le langage Go. 1. Boucle Une boucle est un mécanisme qui exécute de manière répétée un certain morceau de code. Il existe trois principaux types de langage Go

PHP renvoie toutes les valeurs du tableau pour former un tableau PHP renvoie toutes les valeurs du tableau pour former un tableau Mar 21, 2024 am 09:06 AM

Cet article expliquera en détail comment PHP renvoie toutes les valeurs d'un tableau pour former un tableau. L'éditeur pense que c'est assez pratique, je le partage donc avec vous comme référence. J'espère que vous pourrez gagner quelque chose après avoir lu cet article. . Utilisation de la fonction array_values() La fonction array_values() renvoie un tableau de toutes les valeurs d'un tableau. Il ne conserve pas les clés du tableau d'origine. $array=["foo"=>"bar","baz"=>"qux"];$values=array_values($array);//$values ​​​​sera ["bar","qux"]Utilisation une boucle peut utiliser une boucle pour obtenir manuellement toutes les valeurs du tableau et les ajouter à un nouveau

Java Iterator vs Iterable : une étape vers l'écriture de code élégant Java Iterator vs Iterable : une étape vers l'écriture de code élégant Feb 19, 2024 pm 02:54 PM

Interface Iterator L'interface Iterator est une interface utilisée pour parcourir les collections. Il fournit plusieurs méthodes, notamment hasNext(), next() et remove(). La méthode hasNext() renvoie une valeur booléenne indiquant s'il existe un élément suivant dans la collection. La méthode next() renvoie l'élément suivant de la collection et le supprime de la collection. La méthode Remove() supprime l'élément actuel de la collection. L'exemple de code suivant montre comment utiliser l'interface Iterator pour parcourir une collection : Listnames=Arrays.asList("John","Mary","Bob");Iterator

Quelles sont les alternatives aux appels récursifs dans les fonctions Java ? Quelles sont les alternatives aux appels récursifs dans les fonctions Java ? May 05, 2024 am 10:42 AM

Remplacement des appels récursifs dans les fonctions Java par itération En Java, la récursivité est un outil puissant utilisé pour résoudre divers problèmes. Cependant, dans certains cas, l’utilisation de l’itération peut s’avérer une meilleure option car elle est plus efficace et moins sujette aux débordements de pile. Voici les avantages de l'itération : Plus efficace puisqu'elle ne nécessite pas la création d'un nouveau stack frame à chaque appel récursif. Les débordements de pile sont moins susceptibles de se produire car l'utilisation de l'espace de pile est limitée. Méthodes itératives comme alternative aux appels récursifs : Il existe plusieurs méthodes en Java pour convertir des fonctions récursives en fonctions itératives. 1. Utiliser la pile L'utilisation de la pile est le moyen le plus simple de convertir une fonction récursive en fonction itérative. La pile est une structure de données dernier entré, premier sorti (LIFO), similaire à une pile d'appels de fonction. publicintfa

Utiliser la vectorisation pour remplacer les boucles en python Utiliser la vectorisation pour remplacer les boucles en python Apr 14, 2023 pm 07:07 PM

Tous les langages de programmation sont indissociables des boucles. Ainsi, par défaut, nous commençons à exécuter une boucle chaque fois qu’il y a une opération répétitive. Mais lorsqu’il s’agit d’un grand nombre d’itérations (millions/milliards de lignes), utiliser des boucles est un crime. Vous pourriez rester bloqué pendant quelques heures, pour vous rendre compte plus tard que cela ne fonctionne pas. C'est là que l'implémentation de la vectorisation en python devient très critique. Qu’est-ce que la vectorisation ? La vectorisation est une technique permettant d'implémenter des opérations de tableau (NumPy) sur des ensembles de données. En coulisse, il applique l'opération à tous les éléments du tableau ou de la série à la fois (contrairement à une boucle "for" qui opère une ligne à la fois). Nous utilisons ensuite quelques cas d'utilisation pour démontrer ce qu'est la vectorisation. Trouver la somme des nombres##Utilisez la boucle importtimestart

Comment gérer les erreurs d'imbrication de boucles PHP et générer les messages d'erreur correspondants Comment gérer les erreurs d'imbrication de boucles PHP et générer les messages d'erreur correspondants Aug 07, 2023 pm 01:33 PM

Comment gérer les erreurs d'imbrication de boucles PHP et générer les messages d'erreur correspondants Pendant le développement, nous utilisons souvent des instructions de boucle pour gérer des tâches répétées, telles que le parcours de tableaux et le traitement des résultats des requêtes de base de données. Cependant, lors de l'utilisation de l'imbrication de boucles, vous rencontrez parfois des erreurs, telles que des boucles infinies ou un trop grand nombre de niveaux d'imbrication. Ce problème peut entraîner une dégradation des performances du serveur, voire un crash. Afin de mieux gérer ces erreurs et de générer les messages d'erreur correspondants, cet article présentera quelques méthodes de traitement courantes et donnera des exemples de code correspondants. 1. Utilisez des compteurs pour

See all articles