une explication simpliste pour ecrire/comprendre une boucle

Démarche de conception d’une boucle - partie I

La syntaxe de boucle SPIP offre une approche syntaxiquement facile et progressive du SQL, mais cela peut rester abscons pour le débutant, alors qu’un raisonnement simpliste permet aux non-informaticiens de s’en tirer (assez) facilement..

Article publié le 30 décembre 2021, et actualisé en décembre 2021

 
 
 
 
 
 
Attention, cette page est encore en  

 Une boucle, c’est (pour)quoi ?

On parle de boucle en informatique pour répéter une opération de traitement quasiment à l’identique, parfois jusqu’à l’infini.

- 1. Donc la première question est de synthétiser le quoi , la cible informationnelle de notre boucle, ou son objectif [1]


- cela vous identifiera donc l’objet de la boucle, une bonne façon de la nommer :en effet, vous pouvez avoir plusieurs balises de boucles dans un squelette, et leur donner des noms facilite de s’y retrouver entre toutes les balises appairées, en couple pour un meme nom [2] qui sera unnique dans un squelette.
Plus spécifiquement, SPIP utilise la structure de boucle dans un squelette pour obtenir une liste d’informations, d’occurrences d’objets éditoriaux correspondant à une sélection. Un cas particulier —très utilisé— est d’obtenir une occurrence, un seul élément [3] pour pouvoir en afficher le détail dans un squelette...

- 2. Donc la question suivante porte sur le qui , celui qui détient les informations voulues, quel individu-type, ou table d’objet éditorial, représente le sujet principal demandé (on parle d’une occurrence de table_objet éditorial), et ’porte’ le type d’informations recherchées, en utilisant optionnellement d’autres tables liées.


- il convient donc de répondre à la question : quel est la table principale contenant les informations représentatives de ma cible ?
On verra ensuite comment utiliser si besoin, et donc relier d’autres tables par des jointures, ce que SPIP opère bien plus facilement que SQL.

 Pour lesquels (d’objets), la sélection !

Votre objectif n’est sans doute pas d’afficher toutes les lignes, mais plutôt d’introduire des conditions de sélection, qu’on appelle des critères de filtrage.
Il y a plusieurs cas envisageables, entre :

  • la sélection directe d’un individu unique
    _—> identifié par son nom, titre, numéro-clé ou autre,
  • la sélection comparative, opérée sur une ou des sélection conjuguées,
    chaque condition comparant le contenu d’un champ de l’individu cible de la boucle par rapport à des valeurs prédéfinies.

Nota : on ne considèrera d’abord que des conditions cumulées conjointement, qui doivent toutes ensemble être respectées pour retenir l’occurrence concernée ;
pour des conditions alternatives, enchainer deux boucles distinctes..

- 3. Reformuler successivement chaque condition exigée pour retenir l’individues quoi afficher, quelles sont les informations voulues, pour chaque individu traité dans la boucle.


- chaque condition s’exprime alors dans un critère , d’un contenu de nom de champ "comparé" à une valeur fixe.

 L’affichage des informations

Entre les deux balises de début et fin de boucle, c’est le bloc de traitement-informations, répétitif ; il s’agira essentiellement du source d’affichage HTML des informations voulues.

- 4. Décrire ensuite les quoi afficher, quelles sont les informations voulues, pour chaque individu traité dans la boucle.


- Lister toutes les informations voulues, puis pour chacune retrouver le nom de balise de champ associé dans la table objet ciblée [4] Pas la peine de s’encombrer l’écriture d’attributs de mise en forme à ce stade, une écriture brute suffira fort bien.


 Passer à la syntaxe de boucle

Nous avons donc les réponses suivantes :

  1. un but (le quoi)
  2. un nom de table ciblée (le qui)
    et donc aussi une liste de champs utilisables
  3. une liste de comparaisons sur ces champs (on peut s’en passer en début)
  4. une liste d’informations à afficher, également choisie parmi les champs,
    (et peut-être d’autres à afficher, mais pas encore disponibles =>nouvelles cibles)

Reprenons alors la syntaxe Architecture de boucle :
Nous devons donc remplir un canevas de boucle qui est sur le modèle suivant

#CHAMP1 #CHAMP2 #CHAMP3...

Remplacez chaque mot-symbolique du canevas ci-dessus par le fruit de vos réflexions correspondantes, et.... testez !

Quelques éléments de syntaxe :
tout s’écrit en ’minuscules’ sauf :

  • le nom de TABLE (toujours au pluriel),
  • les #BALISES de champs(débutant par un #),
    -* et les BALISES SPIP

Évidemment, il faudra avoir rempli au préalable quelques lignes dans la table cible, cf. [art816], ce qu’on appelle alimenter un jeu de tests ; vous commencerez souvent par boucler sur la table ARTICLES .


Merci de nous signaler les coquilles, imprécisions ou erreurs qui figureraient dans cette page.

[1Plus explicite que le simple ’objet’ traité, ce qui sera le second point.

[2Couple de début et fin de boucle, mais on pourra avoir aussi des balises annexes pour l’entete, la fin, voire le cas d’absence de résultat..

[3Penser à un individu particulier, une ligne dans la table ciblée..

[4Pour afficher d’autres informations, qui seraient à prendre dans d’autres tables, on se contentera dans un premier temps de se cibler un nouvel objectif, ou plutôt sous-objectif, en reprenant toute la démarche exposée ici, de façon récurrente.. Plus tard on verra peut-être comment intégrer ces étapes.


Liens A2A visibles seulement pour les inscrits.
Liens visibles seulement pour les inscrits.

Article publié le 30 décembre 2021, et actualisé en décembre 2021 introduction .

Répondre à cet article