IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Bibliothèques et frameworks PHP Discussion :

[Smarty] Forcer le nombre de passage dans une boucle


Sujet :

Bibliothèques et frameworks PHP

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    178
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Juillet 2007
    Messages : 178
    Points : 122
    Points
    122
    Par défaut [Smarty] Forcer le nombre de passage dans une boucle
    Bonjour à tous,

    J'ai un problème qui peut être simple s'il a été implémenté sous Smarty

    En fait, pour résumer, on va dire que je souhaite avoir une liste de 5 fichiers (le nombre est défini statiquement).
    S'ils existent, alors je les affiche
    S'ils n'existent pas, alors j'affiche un lien permettant de les ajouter

    En gros, cela me donnerait, avec les fichiers 2 et 4 existant :
    Fichier 1 : Ajouter un fichier
    Fichier 2 : Voici le fichier 2
    Fichier 3 : Ajouter un fichier
    Fichier 4 : Voici le fichier 4
    Fichier 5 : Ajouter un fichier
    Le problème est que je n'arrive pas à forcer Smarty à faire 5 passage, ou, si j'y arrive, je n'arrive pas à récuperer mes bonnes valeurs car je n'arrive pas à itérer le curseur dans mon template : j'ai ces deux codes qui ne fonctionne que partiellement :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    {section name=test2 loop=5}
    	{if $fichier2.nom != ""}
    		Fichier {$fichier.id} : {$fichier.nom} <br/>
    	{else}
    		Pas de fichier {$fichier.id}  : enregistrer un fichier <br/>
    	{/if}
    	Incr : {$smarty.section.test2.iteration}<br/>
    	Test du nom : $fichier{$smarty.section.test2.iteration}.nom<br />
    {/section}
     
    <p>*****</p>
     
    {foreach item=fichier2 from=$fichier2}
    	{if $fichier2.nom != ""}
    		Fichier {$fichier2.id} : {$fichier2.nom} <br/>
    	{else}
    		Pas de fichier {$fichier2.id}  : enregistrer un fichier <br/>
    	{/if}
    {/foreach}
    Qui vont me donner à l ecran
    Pas de fichier 5 : enregistrer un fichier
    Test du nom : $fichier1.nom
    Pas de fichier 5 : enregistrer un fichier
    Test du nom : $fichier2.nom
    Pas de fichier 5 : enregistrer un fichier
    Test du nom : $fichier3.nom
    Pas de fichier 5 : enregistrer un fichier
    Test du nom : $fichier4.nom
    Pas de fichier 5 : enregistrer un fichier
    Test du nom : $fichier5.nom

    *****
    Fichier 2 : nom2
    Fichier 4 : nom4
    Pour info, mon $fichier2 correspond à un tableau associatif traité dans le modèle
    Le problème de mon premier exemple est donc que mon curseur n'est jamais réinitialisé, et donc je ne récupère que la valeur du dernier enregistrement
    Le problème de mon deuxième exemple est que je ne passe que 2 fois dans ma boucle, vu que je n'ai que deux valeurs dans ma base...

    Comment joindre les deux?

  2. #2
    Membre régulier
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    178
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Juillet 2007
    Messages : 178
    Points : 122
    Points
    122
    Par défaut
    Pfiou, ça y est, ça marche, ça fait du bien

    Voici la soluce, pour ceux que cela intéresse, ce n'était pas si compliqué, il suffisait simplement d'ajouter un compteur et de se ballader manuellement dans mon tableau

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    <!-- Initialisation du compteur -->
    {counter start=0 assign=compteur}
    <!-- on boucle "loop" fois -->
    {section name=test2 loop=5}
    	<!-- si on a un fichier dans la base, on l affiche puis on incremente le compteur-->
    	{if $fichier2[$compteur].id  == $smarty.section.test2.iteration}
    		Fichier {$fichier2[$compteur].id} : {$fichier2[$compteur].nom} <br/>
    		{counter}
    	<!-- sinon, on propose d enregistrer un fichier --> 
    	{else}
    		Pas de fichier {$smarty.section.test2.iteration}  : enregistrer un fichier <br/>
    	{/if}
    {/section}

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Exécution d'une instruction à chaque passage dans une boucle
    Par monichou86 dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 30/11/2009, 20h47
  2. Passage dans une boucle incoherent
    Par titou_777 dans le forum Langage
    Réponses: 2
    Dernier message: 02/03/2009, 16h02
  3. [VBA]Problème de passage dans une boucle
    Par Halima91 dans le forum VBA Access
    Réponses: 4
    Dernier message: 30/03/2007, 04h09
  4. 256 passages dans une boucle 8 bit
    Par petitours dans le forum C
    Réponses: 5
    Dernier message: 09/02/2006, 13h25
  5. probleme de passage dans une boucle
    Par EssaiEncore dans le forum ASP
    Réponses: 16
    Dernier message: 15/02/2005, 17h39

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo