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] objet foreach: accès tableau associatif imbriqué


Sujet :

Bibliothèques et frameworks PHP

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    76
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2007
    Messages : 76
    Points : 64
    Points
    64
    Par défaut [Smarty] objet foreach: accès tableau associatif imbriqué
    salut à tous

    J'apprends l'utilisation de Smarty et me retrouve confronté à un problème que je n'arrive pas à résoudre, depuis quelques jours.
    Pour faire bref je recupere, via une requete, des informations qui sont stockées dans tableau associatif "tableau1" et ce tableau1 est, au fur et à mesure d'une boucle, contenu dans un autre tableau associatif "tableau2".

    Ce qui donne schematiquement quelque chose comme ca(d'après un print_r) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    Array ( [0] => Array ( [title] => "blabla" 
                           [author]=> "machin")
          [1] = > Array( [title] => "blablabla"
                        [author] => "truc") 
            ...
            )[/B]

    books.php
    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
    class affich_books {
     
    private $dataQuery = array();
    protected $tableau1 = array();
    public $title = array();
    public $author = array();
    public $tableau2 = array();
     
     
    function __construct()
    {
      //requete SQL qui recupère les données
     $this->dataQuery = mysql(...);
    }
     
    public function affichage()
    {
     while($row = mysql_fetch_assoc($this->dataQuery))
     {
       $tableau1['title'] = $row['title'];
       $tableau1['author']  = $row['author'];
       $tableau2[] = $tableau1;
     }
    }
    }//fin class affich_books
     
    $affichBooks = new affich_books();
    $affichBooks->affichage();
    $smarty = new Smarty();
    $smarty->assign("affiche", $affichBooks);
    $smarty->display('books.tpl');
    books.tpl
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    <table>
    		{foreach key=K item=ind from=$affiche->tableau2}
    			{foreach key=title item=$affiche->tableau2 from=$ind name=ind}
    				<tr>
    					<td>{$smarty.foreach.ind.iteration}</</td>					
    					<td>{$affiche->bigTabb.title}</td>
     
    				</tr>
    			{/foreach}
    		{/foreach}
    </table>
    Je sais bien qu'il y a plus simple coté PHP mais je me suis appercu par hasard que je n'arrivais pas à afficher les informations dans le fichier tpl, en procédant de cette manière. Je n'arrive pas à utiliser correctement les foreach malgré les cours que je peux lire sur le net.
    Est ce que quelqu'un voit comment utiliser l'objet dans les foreach?

  2. #2
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Points : 44 155
    Points
    44 155
    Par défaut
    Qu'est ce que tu essaies de faire ?
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    76
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2007
    Messages : 76
    Points : 64
    Points
    64
    Par défaut
    Ah mince c'est pas clair?
    En fait j'essaie juste d'afficher les données contenus dans le tableau $tableau2. C'est une variable déclarée en publique, dans la classe, donc elle est accessible. Mais l'utilisation du foreach pour afficher les données de cette variable me pose vraiment problème.


    Edit: oops je crois voir mon erreur. Si c'est bien ca c'est un problème de compréhension énorme de ma part .


    Edit2: Ok j'ai donc trouvé la solution (encore une erreur stupide de ma part^^).
    Coté PHP j'aurais dû faire ceci:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    $affichBooks = new affich_books();
    $affichBooks->affichage();
    $Data = $affichBooks->tableau2;
    $smarty = new Smarty();
    $smarty->assign("Data", $Data);
    $smarty->display('books.tpl');
    Et donc pour l'affichage le foreach devient du coup beaucoup plus simple:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    		{foreach key=K item=ind from=$Data}
     
    				<tr>
    					<td>{$ind.title}</td>
    					<td>{$ind.author}</td>
    				</tr>
     
    		{/foreach}

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

Discussions similaires

  1. Objet littéral et tableau associatif
    Par haykel_bh dans le forum Général JavaScript
    Réponses: 3
    Dernier message: 23/11/2015, 16h11
  2. Accès tableau associatif dans une fonction.
    Par §Gama§ dans le forum Langage
    Réponses: 15
    Dernier message: 30/08/2015, 21h49
  3. [Smarty] Tableau associatif
    Par julwarior dans le forum Bibliothèques et frameworks
    Réponses: 8
    Dernier message: 29/05/2007, 16h31
  4. [Tableaux] Tableau associatif et foreach()...
    Par Julien.alkaza dans le forum Langage
    Réponses: 2
    Dernier message: 13/05/2006, 16h14
  5. pb d'accès à un tableau associatif
    Par nixonne dans le forum Langage
    Réponses: 15
    Dernier message: 11/05/2006, 02h40

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