[(#REM)*********************** Début de la zone d 'affichage des articles trouves dans la recherche multicritères.*********************]
[(#REM) On rappelle les mots clés sélectionnés par l'utilisateur. ]
[(#REM) Ca ne s'affiche pas au chargement de la page. Ca ne s'affiche que si la boucle motcleM est appelée, càd si on a cliqué sur le submit du formulaire.]
[(#REM) Si on n'a rien choisi dans les selects et qu'on clique submit, l'affichage renvoie "vous avez choisi d'utiliser 0 mot clé" et "0 article trouvé".]
#SET{ajouteun,1}
#SET{addition,0}
<:resultats_recherche:>
Dans votre recherche, vous avez choisi d'utiliser [(#GET{addition})] [(#GET{addition}|=={0}|?{'mot clé.',[(#GET{addition}|>{1}|?{'mots clés :','mot clé :'})]})]
- [(#TYPE|supprimer_numero)] : [(#TITRE|supprimer_numero)][(#LOGO_MOT|image_reduire{20,20})]
#SET{addition, #GET{addition}|plus{#GET{ajouteun}}}
[(#REM) Puis on construit le tableau qui contient tous les articles qui correspondent à au moins 1 mot clé sélectionné]
#SET{art_select,#ARRAY}
#SET{art_select, #GET{art_select}|push{ #ID_ARTICLE }}
/B_select>
[(#REM) Pour afficher le résultat du tableau, ajouter ici [(#GET{art_select}|foreach)] ]
[(#REM) On finit par lister les articles qui apparaissent au moins une fois dans le tableau art_select (voir boucle BOUCLE_rangement) et le nombre de mots-clefs correspondant (voir boucle BOUCLE_ingr) ]
#SET{un, 1}
#SET{compteur_1, #ARRAY}
#SET{compteur_2, #ARRAY}
#SET{compteur_3, #ARRAY}
#SET{compteur_4, #ARRAY}
[(#REM) Chaque article nouveau qui passe dans la boucle BOUCLE_rangement vient du tableau art_select (càd que c'est un article relié à AU MOINS un mot clé parmi les mots clé sélectionnés).]
[(#REM) Le compteur de mots clés sélectionnés reliés à l'article est une variable dont la valeur démarre à zéro pour chaque article nouveau qui passe dans la boucle BOUCLE_rangement.]
#SET{compteur_sup,0}
[(#REM) Pour chaque article qui passe, on récupère l'id de l'article dans la variable article ci-dessous.]
#SET{article,#ID_ARTICLE}
[(#REM) on regarde dans le tableau art_select si le même article apparaît plusieurs fois.]
[(#REM) Explication : un même article peut appraître plusieurs fois, parce que art_select liste les articles qui on AU MOINS un mot clé parmi les mots clé sélectionnés ;]
[(#REM) donc si un article a 4 mots clés (A, B, C et D), il apparaît 1 fois pour A, 1 fois pour A+B, 1 fois pour A+B+C, 1 fois pour A+B+C+D ; donc ça fait 4 fois.]
[(#REM) #VALEUR correspond à un #ID_ARTICLE dans le tableau art_select (on peut l'afficher avec #CLE=>#VALEUR) .]
[(#REM) On récupère l'id de l'article dans la variable valeur.]
#SET{valeur,#VALEUR}
[(#REM) Chaque fois que la soustraction des 2 id d'articles est égale à zéro, ça veut dire que les id étaient identiques.]
[(#REM) On fait la soustraction.]
#SET{dif, #GET{valeur}|moins{#GET{article}}}
[(#REM) Si le résiultat = 0, alors on incrémente la variable compteur_sup de 1 grâce à son addition avec la variable un. ]
[(#GET{dif}|=={0}|oui) #SET{compteur_sup, #GET{compteur_sup}|plus{#GET{un}}}]
[(#REM) A la fin (au sortir de BOUCLE_ingr), compteur_sup a une valeur maximale, qui correspond au nombre maximum de mots clés sélectionnés auxquels l'article qui passe dans BOUCLE_rangement est relié.]
[(#REM) On peut aussi afficher ici #GET{compteur_sup} pour vérifier combien il vaut.]
[(#REM) Ci-dessous, j'ai une ligne par compteur numéroté.]
[(#REM) Ca va me permettre de classer l'article en fonction du nombre maximum de mots clés sélectionnés auxquels il est relié.]
[(#REM) Chaque compteur numéroté est un tableau ARRAY vide au départ.]
[(#REM) La boucle BOUCLE_ingr m'a donné le nombre maximal de mots clé reliés à l'article en train de passer dans la boucle BOUCLE_rangement.]
[(#REM) Ce nombre, c'est la valeur de compteur_sup. ]
[(#REM) Si la valeur de compteur_sup = 4, je colle le id de l'article dans le tableau compteur_4. Si sa valeur = 3, je colle le id de l'article dans le tableau compteur_3. Etc. ]
[(#GET{compteur_sup}|=={4}|oui) #SET{compteur_4, #GET{compteur_4}|push{#ID_ARTICLE}}]
[(#GET{compteur_sup}|=={3}|oui) #SET{compteur_3, #GET{compteur_3}|push{#ID_ARTICLE}}]
[(#GET{compteur_sup}|=={2}|oui) #SET{compteur_2, #GET{compteur_2}|push{#ID_ARTICLE}}]
[(#GET{compteur_sup}|=={1}|oui) #SET{compteur_1, #GET{compteur_1}|push{#ID_ARTICLE}}]
[(#REM) Mon formulaire contient 4 select, chacun pour un groupe de mots, les options des select c'est pour les mots du groupe).]
[(#REM) Mes select ne sont pas multiples, donc un seul mot de chaque groupe sera sélectionné. Cela me fait 4 mots clés sélectionnables au max.]
[(#REM) C'est pour ça qu'ici j'ai fait 4 compteurs numérotés.]
[(#REM) Si les selects étaient multiples (plusieurs mots sélectionnables dans un select-groupe), ou si on avait des cases à cocher, on pourrait s'amuser à proposer des centaines de mots clés sélectionnables.]
[(#REM) Donc il faudrait remplacer 4 par le nombre maxi de mots clés sélectionnables (ex: 150), puis créer des compteurs numérotés dégressifs (149,148, etc.).]
[(#REM) Mais intellectuelmlement, l'utilisateur ne peut suivre que si on lui propose que peu de critères-groupes de choix. ]
[(#REM) Avec des selects multiples, ou des cases à cocher, il faudrait donc, si les mots clés sont nombreux, ranger ces mots clés dans des critères-groupes de choix au sein desquels un seul choix n'est possible.]
[(#REM) L'important, c'est de s'organiser pour ne pas avoir trop de mots clés à gérer ici.]
[(#REM) Si je modifie mon formulaire, je dois ajouter (ou enlever des compteurs numérotés ci-dessous. ]
[(#REM) Pour voir le tableau des compteurs numérotés écrire ici : [(#GET{compteur_4}|foreach)]
[(#GET{compteur_1}|foreach)]
[(#GET{compteur_2}|foreach)]
[(#GET{compteur_3}|foreach)]
]
/B_rangement>
[(#REM) Code optionnel "après" de la boucle B_motcleM (ne s'affiche que si la boucle B_motcleM contient au moins une réponse).]
[(#REM) Ca ne s'affiche pas au chargement de la page. ]
[(#REM) Ca ne s'affiche que si la boucle motcleM est appelée (càd si on a cliqué sur le submuit du formulaire).]
[(#REM) On affiche le nombre d'articles trouvés dans la boucle rangement.]
[(#_rangement:GRAND_TOTAL)] [(#_rangement:GRAND_TOTAL|>{1}|?{'articles trouvés :','article trouvé.'})]
[(#REM) On affiche les articles trouvés en fonction des mots clés correspondants à ceux sélectionnés par l'utilisateur.]
[(#REM) Pour le faire, on va chercher les résultats dans les tableaux compteurs numérotés. On a donc ci-dessous 4 boucles affichage groupe numérotées.]
[(#REM) rappel #GET{addition}, c'est le Total des mots clés cochés dans la recherche.]
[(#REM) --------------- Affichage groupe 4: articles reliés à 4 mots clés. ---------------------]
[(#REM) --------------------------------------------------------------------------------------- ]
[(#ANCRE_PAGINATION|vide)]
[(#_affichage_groupe4:TOTAL_BOUCLE)] [(#_affichage_groupe4:TOTAL_BOUCLE|>{1}|?{'articles ont','article a'})] une correspondance de 4 mots clés sur [(#GET{addition})] :
-
[(#LOGO_ARTICLE{#URL_ARTICLE}|image_reduire{50,50})]
[(#TITRE|supprimer_numero)]
[(#DATE|affdate_jourcourt)][, <:par_auteur:> (#LESAUTEURS)]
[(#REM) Ci-dessous, les mots clé sélectionnés qui sont associés à l'article.]
[(#REM) Pour que l'utilisateur sache sur la base de quel(s) mot(s) clé(s) cet article peut être intéressant à aller voir.]
Mots correspondants :
[(#REM) On reliste les mots clés sélectionnés par l'utilisateur, mais on ne les affiche pas de suite.]
[(#REM) Pour les lister, on reprend la même boucle mots qu'au début, mais on lui ajoute le critère {id_article=#ID_ARTICLE} .]
[(#TITRE|supprimer_numero)] -
[]
~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~
[(#REM) Pas d'articles reliés. ]
/B_affichage_groupe4>
[(#REM) --------------- Affichage groupe 3: articles reliés à 3 mots clés. ---------------------]
[(#REM) --------------------------------------------------------------------------------------- ]
[(#ANCRE_PAGINATION|vide)]
[(#_affichage_groupe3:TOTAL_BOUCLE)] [(#_affichage_groupe3:TOTAL_BOUCLE|>{1}|?{'articles ont','article a'})] une correspondance de 3 mots clés sur [(#GET{addition})] :
-
[(#LOGO_ARTICLE{#URL_ARTICLE}|image_reduire{50,50})]
[(#TITRE|supprimer_numero)]
[(#DATE|affdate_jourcourt)][, <:par_auteur:> (#LESAUTEURS)]
[(#REM) Ci-dessous, les mots clé sélectionnés qui sont associés à l'article.]
[(#REM) Pour que l'utilisateur sache sur la base de quel(s) mot(s) clé(s) cet article peut être intéressant à aller voir.]
Mots correspondants :
[(#REM) On reliste les mots clés sélectionnés par l'utilisateur, mais on ne les affiche pas de suite.]
[(#REM) Pour les lister, on reprend la même boucle mots qu'au début, mais on lui ajoute le critère {id_article=#ID_ARTICLE} .]
[(#TITRE|supprimer_numero)] -
[]
~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~
[(#REM) Pas d'articles reliés. ]
/B_affichage_groupe3>
[(#REM) --------------- Affichage groupe 2: articles reliés à 2 mots clés. ---------------------]
[(#REM) --------------------------------------------------------------------------------------- ]
[(#ANCRE_PAGINATION|vide)]
[(#_affichage_groupe2:TOTAL_BOUCLE)] [(#_affichage_groupe2:TOTAL_BOUCLE|>{1}|?{'articles ont','article a'})] une correspondance de 2 mots clés sur [(#GET{addition})] :
-
[(#LOGO_ARTICLE{#URL_ARTICLE}|image_reduire{50,50})]
[(#TITRE|supprimer_numero)]
[(#DATE|affdate_jourcourt)][, <:par_auteur:> (#LESAUTEURS)]
[(#REM) Ci-dessous, les mots clé sélectionnés qui sont associés à l'article.]
[(#REM) Pour que l'utilisateur sache sur la base de quel(s) mot(s) clé(s) cet article peut être intéressant à aller voir.]
Mots correspondants :
[(#REM) On reliste les mots clés sélectionnés par l'utilisateur, mais on ne les affiche pas de suite.]
[(#REM) Pour les lister, on reprend la même boucle mots qu'au début, mais on lui ajoute le critère {id_article=#ID_ARTICLE} .]
[(#TITRE|supprimer_numero)] -
[]
~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~
[(#REM) Pas d'articles reliés. ]
/B_affichage_groupe2>
[(#REM) --------------- Affichage groupe 1: articles reliés à 1 mot clé. ---------------------]
[(#REM) --------------------------------------------------------------------------------------- ]
[(#ANCRE_PAGINATION|vide)]
[(#_affichage_groupe1:TOTAL_BOUCLE)] [(#_affichage_groupe1:TOTAL_BOUCLE|>{1}|?{'articles ont','article a'})] une correspondance de 1 mot clé sur [(#GET{addition})] :
-
[(#LOGO_ARTICLE{#URL_ARTICLE}|image_reduire{50,50})]
[(#TITRE|supprimer_numero)]
[(#DATE|affdate_jourcourt)][, <:par_auteur:> (#LESAUTEURS)]
[(#REM) Ci-dessous, les mots clé sélectionnés qui sont associés à l'article.]
[(#REM) Pour que l'utilisateur sache sur la base de quel(s) mot(s) clé(s) cet article peut être intéressant à aller voir.]
Mots correspondants :
[(#REM) On reliste les mots clés sélectionnés par l'utilisateur, mais on ne les affiche pas de suite.]
[(#REM) Pour les lister, on reprend la même boucle mots qu'au début, mais on lui ajoute le critère {id_article=#ID_ARTICLE} .]
[(#TITRE|supprimer_numero)] -
[]
~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~
[(#REM) Pas d'articles reliés. ]
/B_affichage_groupe1>
[(#REM) Balises de fin de la boucle B_motcleM. ]
/B_motcleM>
[(#REM)*********************** Fin de la zone d 'affichage des articles trouves dans la recherche multicritères.*********************]