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] Tableau en escalier


Sujet :

Bibliothèques et frameworks PHP

  1. #1
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Avril 2009
    Messages
    3
    Détails du profil
    Informations personnelles :
    Âge : 47
    Localisation : Canada

    Informations forums :
    Inscription : Avril 2009
    Messages : 3
    Points : 1
    Points
    1
    Par défaut [Smarty] Tableau en escalier
    Bonjour,

    Sur base des informations suivantes extraites via requête mysql
    Mr A | 2009 | Activité 0901
    Mr A | 2009 | Activité 0902
    Mr A | 2008 | Activité 0804
    Mr B | 2008 | Activité 0805
    Mr C | 2009 | Activité 0901
    Mr C | 2008 | Activité 0804
    Mr C | 2008 | Activité 0803

    je souhaiterais afficher les données comme suit (dans un tableau)
    Mr A......2009......Activité 0901
    .........................Activité 0902
    ............2008......Activité 0804
    Mr B......2008......Activité 0805
    Mr C......2009......Activité 0901
    ............2008......Activité 0804
    .........................Activité 0803

    Est-ce possible d'obtenir ce genre de résultat avec Smarty ?
    Si oui, comment ?

    Merci d'avance,

    MB

  2. #2
    Membre éprouvé
    Avatar de amoiraud
    Homme Profil pro
    Développeur Web
    Inscrit en
    Octobre 2006
    Messages
    606
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Octobre 2006
    Messages : 606
    Points : 1 057
    Points
    1 057
    Par défaut
    Je sait pas si j'ai bien compris la question mais essaye un truc dans le genre :
    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
     
    {foreach from=$tab_noms key=variable item=valeur}
      {if isset($valeur) && $valeur != ''}
        {$valeur}
      {else}
        ......
      {/if}
      ......
      {if isset($tab_annees.$variable) && $tab_annees.$variable != ''}
        {$tab_annees.$variable}
      {else}
        ......
      {/if}
      ......
      {if isset($tab_activites.$variable) && $tab_activites.$variable != ''}
        {$tab_activites.$variable}
      {else}
        ......
      {/if}
    {/foreach}
    PHP :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    $smarty->assign('tab_noms', $tab_noms); //Tableau contenant les noms (ex : Mr A)
    $smarty->assign('tab_annees', $tab_annees); //Tableau contenant les années
    $smarty->assign('tab_activites', $tab_activites); //Tableau contenant les activitées (ex : Activité 0901)

  3. #3
    Invité
    Invité(e)
    Par défaut
    oui c'est possible mais ce n'est pas lié à Smarty..

    dans ta page de gabarit, j'imagine que tu as une boucles pour afficher tes éléments?

    supposons que tu as trois données A,B,C

    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
     
    $oldA=$oldB=$oldC='';
     
     
    while ( <lire données de la base de données>)
    {
         if ($A != $oldA)
         {
              echo $A;
              $oldA=$A;
         }
         else
              echo '.......';
     
         if ($B != $oldB)
         {
              echo $B;
              $oldB=$B;
         }
         else
              echo '.......';
     
         echo $C;
     
    }
    il ne reste plus qu'à l'adapter à la syntaxe de Smarty. Si les données sont sous forme d'un tableau, remplacer le while par une boucle For..

  4. #4
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Avril 2009
    Messages
    3
    Détails du profil
    Informations personnelles :
    Âge : 47
    Localisation : Canada

    Informations forums :
    Inscription : Avril 2009
    Messages : 3
    Points : 1
    Points
    1
    Par défaut
    Citation Envoyé par Luc Raymond Voir le message
    oui c'est possible mais ce n'est pas lié à Smarty..

    dans ta page de gabarit, j'imagine que tu as une boucles pour afficher tes éléments?

    supposons que tu as trois données A,B,C

    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
     
    $oldA=$oldB=$oldC='';
     
     
    while ( <lire données de la base de données>)
    {
         if ($A != $oldA)
         {
              echo $A;
              $oldA=$A;
         }
         else
              echo '.......';
     
         if ($B != $oldB)
         {
              echo $B;
              $oldB=$B;
         }
         else
              echo '.......';
     
         echo $C;
     
    }
    il ne reste plus qu'à l'adapter à la syntaxe de Smarty. Si les données sont sous forme d'un tableau, remplacer le while par une boucle For..
    Merci
    J'avais bien pensé à ce genre de solution, mais je voudrais éviter autant que possible d'avoir des instructions ECHO dans mon PHP

  5. #5
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par mikabouv Voir le message
    Merci
    J'avais bien pensé à ce genre de solution, mais je voudrais éviter autant que possible d'avoir des instructions ECHO dans mon PHP
    tu peux quand même adapter un dériver. Ta page .php apelle un fichier .TPL (smarty), si tu déplaces le traitement dans ton php et que tu stock le résultat dans un tableau, il ne te reste plus qu'a gérer l'affichage dans 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
    25
    26
     
    //code dans fichier .php
     
    $oldA=$oldB=$oldC='';
     
    $result=array(); 
    while ( <lire données de la base de données>)
    {
         if ($A != $oldA)
         {
              $result['A']=$A;
              $oldA=$A;
         }
         else
              $result['A']='.......';
     
         if ($B != $oldB)
         {
              $result['B']=$B;
              $oldB=$B;
         }
         else
              $result['B']='.......';
     
         $result['C']=$C;
    }


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    fichier .tpl
    //code qui affiche le tableau $result

  6. #6
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Avril 2009
    Messages
    3
    Détails du profil
    Informations personnelles :
    Âge : 47
    Localisation : Canada

    Informations forums :
    Inscription : Avril 2009
    Messages : 3
    Points : 1
    Points
    1
    Par défaut
    Citation Envoyé par Luc Raymond Voir le message
    tu peux quand même adapter un dériver. Ta page .php apelle un fichier .TPL (smarty), si tu déplaces le traitement dans ton php et que tu stock le résultat dans un tableau, il ne te reste plus qu'a gérer l'affichage dans 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
    25
    26
     
    //code dans fichier .php
     
    $oldA=$oldB=$oldC='';
     
    $result=array(); 
    while ( <lire données de la base de données>)
    {
         if ($A != $oldA)
         {
              $result['A']=$A;
              $oldA=$A;
         }
         else
              $result['A']='.......';
     
         if ($B != $oldB)
         {
              $result['B']=$B;
              $oldB=$B;
         }
         else
              $result['B']='.......';
     
         $result['C']=$C;
    }


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    fichier .tpl
    //code qui affiche le tableau $result
    Je n'ai pas encore la maîtrise absolue des tableaux mais ça devrait effectivement répondre à mon attente.
    Je vais essayer ça ce soir.
    Merci

Discussions similaires

  1. [Smarty] Tableau smarty $tableau[$x][$y]
    Par weed dans le forum Bibliothèques et frameworks
    Réponses: 3
    Dernier message: 15/12/2009, 17h12
  2. [Smarty] Tableau associatif
    Par julwarior dans le forum Bibliothèques et frameworks
    Réponses: 8
    Dernier message: 29/05/2007, 16h31
  3. [Smarty] Tableau dans fonction
    Par Mister Nono dans le forum Bibliothèques et frameworks
    Réponses: 3
    Dernier message: 23/01/2007, 14h45
  4. [smarty] formatage numérique tableau
    Par harlock59 dans le forum Langage
    Réponses: 3
    Dernier message: 11/07/2006, 11h28
  5. [MySQL] tableau de données via BDD et Smarty
    Par taly dans le forum PHP & Base de données
    Réponses: 3
    Dernier message: 12/01/2006, 17h00

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