Fork me on GitHub

Documentations > Développeurs > Fiches techniques > Ajouter la recherche à  son module

Ajouter la recherche à  son module


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";

Licence, certains droits réservés
Partager Twitter Partagez cette article sur GG+
  Voir cet article en format PDF Imprimer cet article Envoyer cet article

Naviguer à travers les articles
Article précédent Ajouter des commentaires à  votre module Formulaire (2) Article suivant
Propulsé avec XOOPS | Graphisme adapté par Tatane, Grosdunord, Montuy337513

81 Personne(s) en ligne (1 Personne(s) connectée(s) sur Documentations) | Utilisateur(s): 0 | Invité(s): 81 | Plus ...