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] Probléme dans boucle {section}


Sujet :

Bibliothèques et frameworks PHP

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Novembre 2009
    Messages
    25
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2009
    Messages : 25
    Points : 15
    Points
    15
    Par défaut [Smarty] Probléme dans boucle {section}
    Salut,

    je galère depuis plusieurs heures avec smarty.Je me suis donc décidé à demander de l'aide ...

    J'ai un tableau qui ressemble à ça :

    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
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
     
    Array
    (
        [0] => Array
            (
                [0] => 30
                [grp_id] => 30
                [1] => eleve
                [grp_title] => eleve
                [2] => 13
                [ContactNum] => 13
                [type] => noparent
                [chidArray] => Array
                    (
                    )
     
            )
     
        [1] => Array
            (
                [0] => 1
                [grp_id] => 1
                [1] => generale
                [grp_title] => generale
                [2] => 33
                [ContactNum] => 33
                [type] => parent
                [chidArray] => Array
                    (
                        [0] => Array
                            (
                                [0] => 10
                                [grp_id] => 10
                                [1] => commerciale
                                [grp_title] => commerciale
                                [2] => 28
                                [ContactNum] => 28
                            )
     
                        [1] => Array
                            (
                                [0] => 20
                                [grp_id] => 20
                                [1] => fournisseur
                                [grp_title] => fournisseur
                                [2] => 13
                                [ContactNum] => 13
                            )
     
                    )
     
            )
     
        [2] => Array
            (
                [0] => 40
                [grp_id] => 40
                [1] => prof
                [grp_title] => prof
                [2] => 8
                [ContactNum] => 8
                [type] => noparent
                [chidArray] => Array
                    (
                    )
     
            )
     
    )
    J'ai appelé le tableau globale $manlist, dans php je l'assign et jusqu'ici pas de probléme. Le probléme c'est pour l'affichage.

    Je voudrais afficher la liste des groupes (ici il y en a 3) et lorsque c'est un groupe parent, je veux afficher la liste des sous-groupe. ici en l'occurence seul le groupe 1 est un groupe parent et il a donc une liste de sous-groupe dans la variable childArray.

    Voici mon code html+smarty :

    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
    20
    21
    22
    23
    24
     
    <table width="300" class="Tab1" >
                <tr>
                    <th width="5">#</th>
                    <th width="80">Nom du groupe</th>
                    <th width="80">Nombre de contact</th>    
                </tr>
                {section name=mainGroup loop=$mainList}
                    <tr height="23">
                        <td width="5"><span>{$smarty.section.mainGroup.index}</span></td>
                        <td width="80" align=center><span>{$mainList[mainGroup].grp_title}</span></td>
                        <td width="80" align=center><span>{$mainList[mainGroup].ContactNum}</span></td>
                    </tr>
                    {if $mainList[mainGroup].type eq parent}
                    {section name=childGroup loop=$mainList}
                    <tr height="23" bgcolor="red">
                        <td width="5"><span>{$smarty.section.childGroup.index}</span></td>
                        <td width="80" align=center><span>{$mainList[mainGroup][childGroup].grp_title}</span></td>
                        <td width="80" align=center><span>{$mainList[mainGroup][childGroup].ContactNum}</span></td>
                    </tr>
                    {/section}
                    {/if}
                {/section}
            </table>
    Cela affiche bien la liste de groupe, mais cela ne donne pas le bon resultat pour la liste des sous-groupe...

    voila ce que cela ma donne comme résultat:


    Voila je vous remercie d'avance pour votre aide.

    A+

  2. #2
    Modératrice
    Avatar de Celira
    Femme Profil pro
    Développeuse PHP/Java
    Inscrit en
    Avril 2007
    Messages
    8 633
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 39
    Localisation : France

    Informations professionnelles :
    Activité : Développeuse PHP/Java
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2007
    Messages : 8 633
    Points : 16 372
    Points
    16 372
    Par défaut
    Ta seconde boucle fonctionne aussi sur $mainliste, je ne pense pas que ce soit normal :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    {if $mainList[mainGroup].type eq parent}
                    {section name=childGroup loop=$mainList}

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Novembre 2009
    Messages
    25
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2009
    Messages : 25
    Points : 15
    Points
    15
    Par défaut
    Salut,

    Merci pour ta réponse.
    Oui, le problème viens de là, mais je ne sais pas le résoudre, c'est pour cela que je demande de l'aide.
    Dans cet exemple je voudrais que la seconde boucle {section} boucle sur le tableau ChildArray du groupe qui est parent ...
    En principe au niveau de l'affichage (Dans le cadre rouge) on devrait obtenir ça:
    0 commerciale 28
    1 fournisseur 13

    Mais malheureusement comme j'ai montré sur l'image dans mon premier post, ce n'est pas ce que j'obtiens, y'a un bince au niveau de la seconde boucle ...

    Help please !

    A+

  4. #4
    Modératrice
    Avatar de Celira
    Femme Profil pro
    Développeuse PHP/Java
    Inscrit en
    Avril 2007
    Messages
    8 633
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 39
    Localisation : France

    Informations professionnelles :
    Activité : Développeuse PHP/Java
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2007
    Messages : 8 633
    Points : 16 372
    Points
    16 372
    Par défaut
    Bon, je maitrise pas trop les sections, mais peut-être quelque chose comme ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    {section name=childGroup loop=$mainList[mainGroup]}
                    <tr height="23" bgcolor="red">
                        <td width="5"><span>{$smarty.section.childGroup.index}</span></td>
                        <td width="80" align=center><span>{$mainList[mainGroup][childGroup].grp_title}</span></td>
                        <td width="80" align=center><span>{$mainList[mainGroup][childGroup].ContactNum}</span></td>
                    </tr>
                    {/section}

  5. #5
    Membre à l'essai
    Profil pro
    Inscrit en
    Novembre 2009
    Messages
    25
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2009
    Messages : 25
    Points : 15
    Points
    15
    Par défaut
    Non malheureusement cela ne marche pas, cela n'affiche pas les bonnes entrés: voila le résultat avec ta proposition :



    Je suis ouvert à d'autre proposition, eventuellement avec un foreach, pas de problème du moment que ça fonctionne nickel chrome !

    A+

  6. #6
    Modératrice
    Avatar de Celira
    Femme Profil pro
    Développeuse PHP/Java
    Inscrit en
    Avril 2007
    Messages
    8 633
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 39
    Localisation : France

    Informations professionnelles :
    Activité : Développeuse PHP/Java
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2007
    Messages : 8 633
    Points : 16 372
    Points
    16 372
    Par défaut
    On peut tenter avec des foreach :

    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
     
    {foreach name='mainGroup' from=$mainList item='group'}
    	<tr height="23">
    		<td width="5"><span>{$smarty.foreach.mainGroup.index}</span></td>
    		<td width="80" align=center><span>{$group.grp_title}</span></td>
    		<td width="80" align=center><span>{$group.ContactNum}</span></td>
    	</tr>
    	{if $group.type eq 'parent'}
    		{foreach name='childGroup' from=$group item='child'}
    		<tr height="23" bgcolor="red">
    			<td width="5"><span>{$smarty.foreach.childGroup.index}</span></td>
    			<td width="80" align=center><span>{$child.grp_title}</span></td>
    			<td width="80" align=center><span>{$child.ContactNum}</span></td>
    		</tr>
    		{/foreach}
    	{/if}
    {/foreach}

  7. #7
    Membre à l'essai
    Profil pro
    Inscrit en
    Novembre 2009
    Messages
    25
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2009
    Messages : 25
    Points : 15
    Points
    15
    Par défaut
    Non, cela ne marche toujours pas, c'est toujours le deuxiéme boucle qui déconne. Là ca donne a peu prés le même résultat que la solution précédente ..

  8. #8
    Modératrice
    Avatar de Celira
    Femme Profil pro
    Développeuse PHP/Java
    Inscrit en
    Avril 2007
    Messages
    8 633
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 39
    Localisation : France

    Informations professionnelles :
    Activité : Développeuse PHP/Java
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2007
    Messages : 8 633
    Points : 16 372
    Points
    16 372
    Par défaut
    euh oui, c'est normal j'ai écrit une bêtise Essaye comme ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    {foreach name='childGroup' from=$group.chidArray item='child'}
    ou éventuellement
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    {assign var='childs' value=$group.chidArray}
    {foreach name='childGroup' from=$childs item='child'}

  9. #9
    Membre à l'essai
    Profil pro
    Inscrit en
    Novembre 2009
    Messages
    25
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2009
    Messages : 25
    Points : 15
    Points
    15
    Par défaut
    non ne marche plus, dans les 2 cas, plus rien dans le cadre rouge snif !!
    je désespére !
    Mise à part Celira qui se casse la tête avec moi sur ce probléme, personne n'est interessé ! ou personne n'a la réponse ? je suis sur que c'est un truc bidon car tout y est ..mais manque le petit truc qui fait qu'on se dis...ha oui oups !

    Allez du nerf les zamis !

  10. #10
    Membre confirmé
    Profil pro
    Inscrit en
    Février 2004
    Messages
    496
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Février 2004
    Messages : 496
    Points : 585
    Points
    585
    Par défaut
    Salut,

    ptêt quelque chose comme ça (dans ton code de départ):
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    {section name=childGroup loop=$childList[mainGroup]}
    puis:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     <td width="80" align=center><span>{$childList[mainGroup][childGroup].grp_title}</span></td>

  11. #11
    Membre à l'essai
    Profil pro
    Inscrit en
    Novembre 2009
    Messages
    25
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2009
    Messages : 25
    Points : 15
    Points
    15
    Par défaut
    Citation Envoyé par Celira Voir le message
    euh oui, c'est normal j'ai écrit une bêtise Essaye comme ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    {foreach name='childGroup' from=$group.chidArray item='child'}
    ou éventuellement
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    {assign var='childs' value=$group.chidArray}
    {foreach name='childGroup' from=$childs item='child'}
    Oups !! j'ai fait une erreur en copiant collant ..chui pas doué lol
    En fait tes deux codes marchent comme sur des roulettes ! j'obtiens le bon affichage !
    MERCI beaucoup Celira !!! tu m'as bien aidé ! et toi aussi biloum merci même si ton code ne marche pas ...

    A+

  12. #12
    Modératrice
    Avatar de Celira
    Femme Profil pro
    Développeuse PHP/Java
    Inscrit en
    Avril 2007
    Messages
    8 633
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 39
    Localisation : France

    Informations professionnelles :
    Activité : Développeuse PHP/Java
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2007
    Messages : 8 633
    Points : 16 372
    Points
    16 372
    Par défaut
    Pour explication, le 2e code fait la même chose que le premier en passant par une variable intermédiaire. Je n'étais pas sure qu'on puisse boucler directement dessus...
    Mais si le 1er fonctionne, c'est mieux de l'utiliser.

    Au passage, tu peux cliquer sur maintenant.

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

Discussions similaires

  1. [ débutant ] problème dans boucle
    Par waved dans le forum Langage
    Réponses: 4
    Dernier message: 16/01/2008, 10h49
  2. Problème dans boucle avec matrice et vecteur
    Par lilyla dans le forum MATLAB
    Réponses: 9
    Dernier message: 26/11/2007, 20h45
  3. problème dans la section declare
    Par Anubis dans le forum SQL
    Réponses: 7
    Dernier message: 07/08/2007, 10h21
  4. [Smarty] Problème de boucle MySQL sous Smarty
    Par slaxsystem dans le forum Bibliothèques et frameworks
    Réponses: 1
    Dernier message: 29/04/2007, 18h28
  5. problème dans boucle for de lecture de fichier ini
    Par chourmo dans le forum Delphi
    Réponses: 3
    Dernier message: 06/07/2006, 10h31

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