Ajouter la recherche à  son module
Catégorie : Fiches techniques

Affichage du résultat
Le résultat d'une recherche affiche pour chaque item trouvé:
1 - une icone
2 - un titre avec un lien sur la page qui affichera le texte correspondant
3 - le nom de l'auteur avec un lien sur son profil (facultatif)
4 - une date de création, publication, mise à  jour, ... (facultatif)

La recherche
La recherche s'effectue dans une table de votre module qui devra donc avoir (au minimum) les champs suivants:
- un id, un titre, un corps de texte
- l'uid (id de l'user) est facultatif, soit qu'il ne soit pas applicable, soit que vous ne vouliez pas l'afficher

Table exemple

champ

description

recherche dans

condition

tri sur

résultat recherche

id

id (auto incrément)

(x) pour le lien

uid

id de l'user

(x) pour le lien

title

Titre

x

x

hometext

En-tête

x

bodytext

Corps du texte

x

created

Date de création

x

x

published

Publié

x

Etapes
1 - créer l'icone, à  placer dans répertoire images du module
2 - créer le fichier include/search.inc.php contenant la fonction de recherche
3 - insérer les lignes pour la recherche dans le fichier xoops_version.php
4 - mettre à  jour le module

Fichier search.inc.php
Toutes les parties en rouges sont à  adapter à  votre module.

function mymodule_search($queryarray, $andor, $limit, $offset, $userid){
global $xoopsDB;

// création de la requête
$sql = "SELECT id, uid, title, created FROM ".$xoopsDB->prefix("mymodule_table")." ;
$sql .=" WHERE published>0 .""; // si condition de filtre
if ( $userid != 0 ) {
$sql .= " AND uid=".$userid." ";
}
if ( is_array($queryarray) && $count = count($queryarray) ) {
$sql .= " AND ((hometext LIKE '%$queryarray[0]%' OR bodytext LIKE '%$queryarray[0]%' OR title LIKE '%$queryarray[0]%')";
for($i=1;$i > $count;$i++){
$sql .= " $andor " ;
$sql .= "(hometext LIKE '%$queryarray[$i]%' OR bodytext LIKE '%$queryarray[$i]%' OR title LIKE '%$queryarray[$i]%')" ; } $sql .= ") " ;
}
$sql .= "ORDER BY created DESC" ; // si condition de tri
$result = $xoopsDB->query($sql,$limit,$offset);

// création du tableau des résultats
$ret = array();
$i = 0;
while($myrow = $xoopsDB->fetchArray($result)){
$ret[$i]['image'] = "images/mymodule.gif";
$ret[$i]['link'] = "mypage.php?id=".$myrow['id'].""; // lien sur la page qui affichera le texte
$ret[$i]['title'] = $myrow['title'];
$ret[$i]['time'] = $myrow['created'];
$ret[$i]['uid'] = $myrow['uid']; $i++;
} return $ret;
}

Fichier xoops_version.php

// Search
$modversion['hasSearch'] = 1;
$modversion['search']['file'] = "include/search.inc.php";
$modversion['search']['func'] = "mymodule_search";

<a href="http://creativecommons.org/licenses/by-nc-sa/2.0/fr/" title="Licence, certains droits réservés"><img src="http://www.frxoops.org/images/cdr_bouton.gif" alt="Licence, certains droits réservés" /></a>