Accueil du site > SPIP, système de publication pour l’internet > Guide du webmestre et du bidouilleur SPIP > Mise en page : manuel de référence > Les boucles récursives

Les boucles récursives

mercredi 2 mai 2001,

Les boucles récursives sont une fonction très puissante pour gérer la mise en forme de l’interface. Leur programmation est particulièrement simple, mais leur utilisation demande une bonne maîtrise logique de l’enchaînement des boucles.

L’appel d’une boucle récursive est très simple : il suffit d’indiquer dans le TYPE de la boucle le nom d’une autre boucle :

<BOUCLEn(bouclex)></BOUCLEn>

Il n’y a ici aucun critère : en réalité, la boucle n correspond à une copie pure et simple de la boucle x. L’ensemble de la boucle fonctionne comme si l’on avait recopié l’intégralité de la boucle x (toutes les balises et le code HTML, ainsi que les textes conditionnels avant, après et alternatif) à l’endroit où l’on insère la boucle n. (Il faut bien entendu que la boucle x précède la boucle n.)

L’utilisation la plus simple consiste à « dupliquer » une boucle sans avoir à la recopier. Ainsi, toute modification de la boucle d’origine x sera automatiquement dupliquée dans la boucle n.

Tout l’intérêt, en réalité, consiste à placer la boucle n à l’intérieur de la boucle x : on obtient ainsi un comportement récursif : la boucle x contient une boucle n, qui elle-même reproduit la boucle x qui contient la boucle n, et ainsi de suite, jusqu’à ce que la boucle x ne donne plus aucun résultat.

Cette technique permet de créer notamment l’affichage des thread des forums. Cela devient très simple : une première boucle « fabrique » l’entrée des threads (les messages qui répondent directement à un article), une seconde boucle affiche les réponses à ces messages, et une boucle récursive provoque la récursivité sur cette seconde boucle :

<BOUCLE_forum(FORUMS){id_article}>
<P>#TITRE
    <B_reponses>
    <UL>
    <BOUCLE_reponses(FORUMS){id_parent}>
    <LI>#TITRE
      <BOUCLE_recursive(boucle_reponses)>
      </BOUCLE_recursive>
    </BOUCLE_reponses>
    </UL>
    </B_reponses>
</BOUCLE_forum>

On peut ainsi, en très peu de lignes, provoquer l’affichage de l’intégralité de la structure (rubriques, sous-rubriques...) du site.

Vos commentaires

  • Le 10 septembre 2001 à 00:36, par chris

    Bonjour les amis !
    SPIP c’est Génial !!!!

    voila ma question :
    je veux faire un menu deroulant en java (categorie/sous categorie/sous sous categorie...).
    voila en pseudocode ce que je dois faire pour l’arborescence suivante :

    CAT1

    _S-CAT1
    _S-CAT2

    |_S-S-CAT1
    |
    |_S-S-CAT2

    1)créer objet CAT1
    2)ajouter élément S-CAT1
    3)ranger url S-CAT1
    4)ajouter élement S-CAT2
    5)ranger objet S-CAT2

    6)créer objet S-CAT2
    7)ajouter element S-S-CAT1
    8)ajouter element S-S-CAT2

    la difficulté reside ds le fait que si la rubrique concernée a des sous-rubriques je dois creer un nouvel objet, sinon je dois sortir l’url...or quand je parcours la boucle rubrique je ne sais pas encore ce qu’il y a dans sous rubrique.

    Qui peut m’aider à écrire le script ???
    Est ce que ca se fait avec la récursivité ?

    merci à l’avance

    p.s : je suis very new avec SPIP :)

    • Le 10 septembre 2001 à 00:40, par chris

      arffffff spip n’ a pas gardé ma mise en page... je suppose que mon post est incomprehensible !!
      Effacez le !

SPIP | | Plan du site | Suivre la vie du site RSS 2.0
Habillage visuel © Marcimat (CSS sous Licence GNU/GPL) / Jek a go go (Pictures sous Licence cc-nc-nd)