Précédent   Forum des professionnels en informatique > PHP > Bibliothèques et frameworks > Templates > Smarty
Smarty Forum d'entraide sur le moteur de templates Smarty. Avant de poster -> FAQ Smarty et Cours Smarty
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 01/07/2011, 08h46   #1
Invité de passage
 
Inscription : juillet 2011
Messages : 7
Détails du profil
Informations forums :
Inscription : juillet 2011
Messages : 7
Points : 1
Points : 1
Par défaut Problème d'affichage Foreach dans un template sous Smarty

Bonjour tout le monde,
Je vous pose mon problème, je suis actuellement en stage et je dois remodeler un site en php avec Smarty et j'ai un problème avec l'affichage de mon foreach dans le fichier .tpl!

Voici mon code Php :
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
 /*Test de connection a la base de données*/
$db = mysql_connect('localhost','root','');
//on selectionne la base
mysql_select_db('boutiqueXY', $db);
//on crée la requête sql
$sql = 'SELECT distinct name from ps_manufacturer order by name asc';
//on envoie la requete
$req = mysql_query($sql) or die('Erreur SQL !<br>'.$sql.'<br>'.mysql_error());
//on fait une boucle qui va faire un tour pour chaque enregistrement
// while($data = mysql_fetch_assoc($req))
	// {
		// // on affiche les informations de l'enregistrement en cours
		// echo '<br>'.$data['name'];
	// }
//on ferme la connexion à mysql
mysql_close();
//test pour le foreach
$data = mysql_fetch_assoc($req);
$smarty->assign('montableau', $data);
et Voici ce que j'ai mis sur le fichier .tpl :
Code :
1
2
3
4
5
6
7
8
<tr>
		<ul>
		<option value="0">Choisissez une marque</option>
			{foreach from=$montableau item=bla}
				{$montableau.name}
			{/foreach}
		</ul>
</tr>
et ce que j'obtiens à l'affichage ce n'est que le premier résultat de la requête et même pas dans une liste déroulante alors que je voudrais afficher le tout, dans une liste déroulante.

Merci de m'aider
NicoWeb01 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 13/08/2011, 18h10   #2
Membre habitué
 
Homme Lucas GAUTHERON
Lycéen
Inscription : décembre 2008
Messages : 106
Détails du profil
Informations personnelles :
Nom : Homme Lucas GAUTHERON

Informations professionnelles :
Activité : Lycéen

Informations forums :
Inscription : décembre 2008
Messages : 106
Points : 145
Points : 145
oulah déjà utilise cette syntaxe plutôt :
Code :
1
2
3
4
{foreach $montableau as $item}
<!-- mon item : {$item} -->
[...]
{/foreach}
Ensuite fait une petite recherche sur les listes déroulantes en HTML...
lucas74 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 14/08/2011, 01h55   #3
Expert Confirmé
 
Avatar de krachik
 
Inscription : décembre 2004
Messages : 1 957
Détails du profil
Informations forums :
Inscription : décembre 2004
Messages : 1 957
Points : 2 646
Points : 2 646
@lucas74
Suivant ce qu'il demande et suivant la syntaxe que tu proposes il y aurait un petit correctif (il utilise un tableau associatif, et ce que tu proposais afficherait juste des 'array', si le tableau contient ce qu'il faut)
Code :
1
2
3
4
{foreach $montableau as $item}
<!-- mon item : {$item['name']} -->
[...]
{/foreach}
Et si NicoWeb01 n'obtient pas de liste déroulante c'est parce que non seulement son code php est faux ou incomplet mais aussi son code smarty l'est aussi. Il faudrait boucler dessus comme ce qu'il a mis en commentaire mais juste mettre tout ça dans un tableau
Code :
$data = mysql_fetch_assoc($req);
Et le code smarty aurait dû être
Code :
1
2
3
{foreach from=$montableau item=bla}
	{$bla.name}
{/foreach}
__________________
Je suis ce que je suis grâce à ce que nous sommes tous Humanité aux Humains!! !

Entre ce que je pense, ce que je veux dire, ce que je crois dire, ce que je dis ce que vous avez envie d'entendre, ce que vous croyez entendre, ce que vous entendez, ce que vous avez envie de comprendre, ce que vous comprenez ... Il y a dix possibilités que nous ayons des difficultés à communiquer. Mais essayons quand meme ....... E. Wells
krachik est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 14/08/2011, 01h58   #4
Membre habitué
 
Homme Lucas GAUTHERON
Lycéen
Inscription : décembre 2008
Messages : 106
Détails du profil
Informations personnelles :
Nom : Homme Lucas GAUTHERON

Informations professionnelles :
Activité : Lycéen

Informations forums :
Inscription : décembre 2008
Messages : 106
Points : 145
Points : 145
Citation:
Envoyé par krachik Voir le message
Et le code smarty aurait dû être
Code :
1
2
3
{foreach from=$montableau item=bla}
	{$bla.name}
{/foreach}
Précisément, pourquoi pas :
{foreach $montableau as $bla}
{$bla.name}
{/foreach}
lucas74 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 14/08/2011, 02h24   #5
Expert Confirmé
 
Avatar de krachik
 
Inscription : décembre 2004
Messages : 1 957
Détails du profil
Informations forums :
Inscription : décembre 2004
Messages : 1 957
Points : 2 646
Points : 2 646
ça marche aussi, j'étais en train de corriger ce qu'il avait écrit(et je ne pense pas avoir lu sur le site de smarty que ça soit une syntaxe dépréciée). Les nouvelles versions de smarty offrent plus de flexibilité !
__________________
Je suis ce que je suis grâce à ce que nous sommes tous Humanité aux Humains!! !

Entre ce que je pense, ce que je veux dire, ce que je crois dire, ce que je dis ce que vous avez envie d'entendre, ce que vous croyez entendre, ce que vous entendez, ce que vous avez envie de comprendre, ce que vous comprenez ... Il y a dix possibilités que nous ayons des difficultés à communiquer. Mais essayons quand meme ....... E. Wells
krachik est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 14/08/2011, 02h41   #6
Membre habitué
 
Homme Lucas GAUTHERON
Lycéen
Inscription : décembre 2008
Messages : 106
Détails du profil
Informations personnelles :
Nom : Homme Lucas GAUTHERON

Informations professionnelles :
Activité : Lycéen

Informations forums :
Inscription : décembre 2008
Messages : 106
Points : 145
Points : 145
non c'est juste qu'à mes yeux c'est plus clair
lucas74 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 18/10/2011, 17h13   #7
Invité de passage
 
Inscription : juillet 2011
Messages : 7
Détails du profil
Informations forums :
Inscription : juillet 2011
Messages : 7
Points : 1
Points : 1
Bonjour et désolé d'avoir été aussi tardif à répondre, j'ai essayé de passer un peu de temps sur ce code mais rien n'y fait, je n'arrive pas à afficher les données d'une requête dans le fichier .tpl!! Si quelqu'un pourrait m'aider, je lui en serait reconnaissant. Merci

fichier.php
<code>
//requete de selection des pays
$pays = Db::getInstance()->getRow('
SELECT name FROM '._DB_PREFIX_.'country_lang ORDER BY name ASC');
self::$smarty->assign('name', $pays);
</code>

fichier.tpl
<code>
<p class="text">
<label for="pays">{l s='Pays'}</label>
<select name="pays" id="pays">
<option value="0">{l s='-- Choisir --'}</option>
{foreach $pays as $bla}
<option value="{$bla.name}">{$bla.name|escape:'htmlall':'UTF-8'}</option>
{/foreach}
</select>
</p>
</code>
NicoWeb01 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 19/10/2011, 00h01   #8
Expert Confirmé
 
Avatar de krachik
 
Inscription : décembre 2004
Messages : 1 957
Détails du profil
Informations forums :
Inscription : décembre 2004
Messages : 1 957
Points : 2 646
Points : 2 646
Bonjour,

Je me demande pourquoi tu boucles ton foreach sur la variable $pays alors que c'est $name que tu as déclaré?
__________________
Je suis ce que je suis grâce à ce que nous sommes tous Humanité aux Humains!! !

Entre ce que je pense, ce que je veux dire, ce que je crois dire, ce que je dis ce que vous avez envie d'entendre, ce que vous croyez entendre, ce que vous entendez, ce que vous avez envie de comprendre, ce que vous comprenez ... Il y a dix possibilités que nous ayons des difficultés à communiquer. Mais essayons quand meme ....... E. Wells
krachik est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 19/10/2011, 08h46   #9
Invité de passage
 
Inscription : juillet 2011
Messages : 7
Détails du profil
Informations forums :
Inscription : juillet 2011
Messages : 7
Points : 1
Points : 1
je boucle sur $pays parce que j'ai vu cela dans un exemple, et j'ai quand même essayé avec $name, cela ne fonctionne pas. i'm a desperate :/
NicoWeb01 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 19/10/2011, 11h07   #10
Expert Confirmé
 
Avatar de krachik
 
Inscription : décembre 2004
Messages : 1 957
Détails du profil
Informations forums :
Inscription : décembre 2004
Messages : 1 957
Points : 2 646
Points : 2 646
Citation:
Envoyé par NicoWeb01 Voir le message
je boucle sur $pays parce que j'ai vu cela dans un exemple,
C'est super marrant que tu dises ça, on copie les exemples sans tenir compte de ce dans quoi on les colle?

Citation:
Envoyé par NicoWeb01 Voir le message
et j'ai quand même essayé avec $name, cela ne fonctionne pas. i'm a desperate :/
La question serait alors de voir ce que renvoie ta variable $pays dans le code php, ça m'a tout l'air d'être du prestashop, tu confirmes?
Donc voir ce que fait getRow et ce que donne un print_r($pays); par exemple
__________________
Je suis ce que je suis grâce à ce que nous sommes tous Humanité aux Humains!! !

Entre ce que je pense, ce que je veux dire, ce que je crois dire, ce que je dis ce que vous avez envie d'entendre, ce que vous croyez entendre, ce que vous entendez, ce que vous avez envie de comprendre, ce que vous comprenez ... Il y a dix possibilités que nous ayons des difficultés à communiquer. Mais essayons quand meme ....... E. Wells
krachik est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 19/10/2011, 11h53   #11
Invité de passage
 
Inscription : juillet 2011
Messages : 7
Détails du profil
Informations forums :
Inscription : juillet 2011
Messages : 7
Points : 1
Points : 1
Citation:
Envoyé par krachik Voir le message
C'est super marrant que tu dises ça, on copie les exemples sans tenir compte de ce dans quoi on les colle?


La question serait alors de voir ce que renvoie ta variable $pays dans le code php, ça m'a tout l'air d'être du prestashop, tu confirmes?
Donc voir ce que fait getRow et ce que donne un print_r($pays); par exemple
Merci de ta réponse, c'est bien du Prestashop, et sinon je viens de trouver mon erreur, étant donné que je suis feignant et que j'ai beaucoup, mais alors beaucoup recopier le code des autres, j'ai pas pensé s'il y 'avait un if quelque part qui me bloquait. En regardant de plus près, j'ai vu une condition qui m'a inhibé dans l'envoie de mes variables.
Donc, j'ai changé le $pays par un $name et j'ai réussi à passer mes variables sur le template.

Merci pour vos réponses et votre temps précieux.

Cordialement.
NicoWeb01 est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 03h55.


 
 
 
 
Partenaires

Hébergement Web