billets

Quelques articles qui décortiquent certains points techniques en administration de système GNU/Linux, de configuration d’hébergements et autres astuces de webdesign.

Il y a 31 articles
  • Avec la nouvelle version de spip3 il est possible de boucler sur des tableaux [1].

    Un bon exemple pour récuperer des tableaux multidimensionnels est la table spip_meta. Les plugins insèrent souvent des données sous forme de tableaux multidimensionnels sérialisés [2] pour sauvegarder leur configuration.

    La boucle ci-dessous va récupérer le tableau php stocké en bdd.
    Ce tableau va être affecté à la variable tabMetaAuteur, puis passé en "critère" de boucle.
    On effectue une boucle sur les valeurs puis une boucle récursive [3] a l’intérieur de celle-ci qui va descendre dans toute la profondeur du tableau.

    1. [(#REM)<!-- Récupération d'un tableau en bdd-->]
    2. <BOUCLE_recup_tableau(spip_meta){nom = champs_extras_spip_auteurs}>
    3.     #SET{tabMetaAuteur,#VALEUR}
    4. </BOUCLE_recup_tableau>
    5.  
    6. [(#REM)<!-- Boucle sur le tableau  -->]
    7. <ul>
    8.     <BOUCLE_data_tab(DATA){source table, #GET{tabMetaAuteur}}>      
    9.         <li>#CLEF
    10.             <B_data>
    11.                 <ul>
    12.                     [(#REM)<!-- Boucle sur le tableau et toute sa profondeur -->]
    13.                     <BOUCLE_data(DATA){source table, #VALEUR}{' '}>
    14.                         <li>\[#CLE\] => #VALEUR
    15.                             <BOUCLE_recursive_data(BOUCLE_data)>
    16.                              </BOUCLE_recursive_data>
    17.                         </li>      
    18.                     </BOUCLE_data>
    19.                 </ul>
    20.             </B_data>
    21.         </li>
    22.     </BOUCLE_data_tab>
    23. </ul>

    Télécharger

    Noter l’écriture raccourcie de la boucle de calcul :

    1. <BOUCLE_recursive_data(BOUCLE_data)/>

    Il est possible d’éviter une boucle et d’arriver au même résultat avec le code ci-dessous.

    1. <BOUCLE_recup_tableau(spip_meta){nom = champs_extras_spip_auteurs}>
    2.     <BOUCLE_data(DATA){source table, #VALEUR}{' '}>
    3.         \[#CLE\] => #VALEUR
    4.     <BOUCLE_recursive_data(BOUCLE_data)/>
    5.     </BOUCLE_data>
    6. </BOUCLE_recup_tableau>

    Télécharger

    Une solution encore plus rapide et d’utiliser print_r($array) de php en guise de filtre :’).

    [(#GET{tabMetaAuteur}|unserialize|print_r{1})]

    À noter que le tableau doit être désérialisé contrairement au critère de boucle DATA qui accepte les 2 formats.