SPIP-Contrib

SPIP-Contrib

عربي | Deutsch | English | Español | français | italiano

274 Plugins, 192 contribs sur SPIP-Zone, 257 visiteurs en ce moment

Accueil > Documentation > Archives documentation > Bidouilles pour avant SPIP 1.9 > Dans une boucle articles faire un ET logique sur les critères de mot (...)

Dans une boucle articles faire un ET logique sur les critères de mot clés

16 novembre 2004 – par Philippe AVI – commentaires

Criteres avec un ET sur des mots clés

Autrement dit, rendre cela possible :

<BOUCLE_essai(ARTICLES){id_mot=11}{id_mot=14}>
#TITRE ;  
</BOUCLE_ essai >

Essai de solution :

Dans cette solution il s’agit de trouver les articles qui ont en commun des mots clés, sachant que ces mots clés se trouvent dans des groupes de mots clés différents. (Je sens déjà que certains grincent des dents mais cela correspond à l’utilisation que je souhaite en faire).
En clair, je veux récupérer la liste des articles qui ont les mêmes mots clés dans n groupe de mot clé mais il faut pour cela qu’il y est au moins un mot clé choisi pour chaque groupe de mot clés.

Dans la page en question il s’agit de recevoir les mot clés par url ou post.
Le premier mot clé sera rangé dans un id_mot (autant utiliser SPIP et ses boucles efficaces).
Les suivants seront sous la forme id_mot2 , id_mot3 ...
Le nombre ne semble pas être limité.
Pour ma part j’en fais 4.

Le script est le suivant (voir les remarques à l’interieur du script pour des explications) :

<?php
        <?$mots_cle1=array();
        // trouve tous les articles ayant id_mot mais ausii dans id_mot1 selectionné et mettre dans tableau $mots_cle1
        // le id_mot1 fait parti du grp de mot clé 9 pour l exemple
        <BOUCLE_art1(ARTICLES){id_mot}>
                $mots_cle1[#ID_ARTICLE] = array(<BOUCLE_mots1(MOTS){id_article}{id_groupe=9}{", "}>'[(#ID_MOT|texte_script)]'</BOUCLE_mots1>);
        </BOUCLE_art1>
        // range dans un tableau
        $list_art_cle1 = array();$j=0;
        // dans le tableau mots_cle1 contenant les articles avec id_mot ET tous les mots clés du grp 9
        // cherche l'article avec en particulier le mot clé id_mot1
                foreach ($mots_cle1 as $cle => $element)
                        {
                                $key = (array_search($id_mot1 , $element));
                                if ($key === false)
                                {
                                // permet une verif
                                //echo "il n'y pas d'id dans cette ligne = ".$key."<br>";
                                }
                                else
                                {
                                //permet une verif
                                //echo "id à la ligne = ".$key."<br>";
                                        if (array_key_exists('0', $element))
                                                {
                                                $list_art_cle1["$j"] = $cle;$j++;
                                                }
                                }
                        }               
                 // pour une vérif
                 //echo '<pre> annee<br>';
                 //print_r($list_art_cle1);
                 //echo '</pre>';

?>

On peut donc faire autant de fois que nécessaire ce script en changeant id_mot1 par id_mot2 ainsi que tous les indices 1 en 2 puis 1 en 3 autant de fois qu’il y a de ET.

On récupère ainsi les tableaux et on trouve ce qu’ils ont en commun : les articles tant cherchés.

<?php
                // la fonction suivante permet de recuperer les articles communs aux tableaux precedement créés
                // exemple sur 3 tableaux
                $intersec = array_intersect ($list_art_cle1 , $list_art_cle3 , $list_art_cle3);
                // affichage des articles concernés par le ET sur les mots clés
                foreach ($intersec as $element)
                {
                        $SQL ="SELECT * FROM spip_articles WHERE id_article='" . $element . "' ";
                        $res = mysql_query($SQL);
                        while($valeur=mysql_fetch_array($res))
                        {
?>
           <a href="article.php3?id_article=<? echo $valeur['id_article']; ?>"><? echo $valeur["titre"]; ?></a> <BR>
<?php
                        }

                }
?>

En esperant que cette contribution serve à certains.
Merci à l’équipe de SPIP.
Philippe Avi

Retour en haut de la page

Vos commentaires

Répondre à cet article

Qui êtes-vous ?

Pour afficher votre trombine avec votre message, enregistrez-la d'abord sur gravatar.com (gratuit et indolore) et n'oubliez pas d'indiquer votre adresse e-mail ici.

Ajoutez votre commentaire ici Les choses à faire avant de poser une question (Prolégomènes aux rapports de bugs. )
Ajouter un document

Retour en haut de la page

Ça discute par ici

  • SPIP 3.0

    19 mai – 15 commentaires

    Nous avons le plaisir de vous annoncer la sortie de SPIP 3.0 ! Cette nouvelle version vous permet toujours de publier du contenu pour internet et de créer des sites avec une grande facilité. De nombreuses évolutions facilitent son utilisation (...)

  • MediaBox

    10 mai 2010 – 192 commentaires

    Aperçu La MediaBox est une Boîte multimédia polyvalente et personnalisable. Le plugin est basé sur la librairie moderne ColorBox, qui a été enrichie et adaptée pour SPIP. Par défaut, mediabox propose 5 habillages. Il est assez facile d’en créer de (...)

  • Analyclick - un compteur de téléchargements

    26 février 2011 – 58 commentaires

    Ce plugin permet de compter les téléchargements de documents sur son site. Il introduit une balise #URL_DOC_COMPTEUR qui va compter chaque clic fait sur ce lien. Il affiche une page de statistique. Installation Le plugin s’installe comme tout (...)

  • Plugin SPIPAL

    10 janvier 2011 – 84 commentaires

    Pour intégrer un système de paiement immédiat via PayPal à certains de vos articles . Ce plugin est une mise à niveau pour la version SPIP 2.1.8 du Plugin GoPayPal qui était resté en SPIP 1.9.2 depuis 3 ans. Il change de nom pour ne pas faire trop (...)

  • Les Boîtes Privées

    3 janvier 2008 – 24 commentaires

    Les « Boîtes Privées » sont des cadres qui peuvent apparaître selon vos souhaits ici ou là dans la partie privée de votre site et vous donner des renseignements parfois fort utiles : Les articles au format SPIP, Les auteurs en stat, Les URLs propres, (...)