Mes lecteurs assidus savent à quel point je porte dans mon coeur les aspects techniques du web. Certes, les livres que j’ai publiés traitent tous du webmarketing jusqu’à présent mais je reste attaché au code et à son intérêt pour les sites que nous créons à longueur de temps.
Mi-2013, j’avais créé un moteur de recherche PHP en programmation orientée objet (POO pour les intimes) que je fais évoluer régulièrement pour lui apporter sans cesse plus de possibilités. Désormais, ce moteur déjà puissant à l’origine s’est dotée de propriétés intéressantes telles que l’ajout d’une pagination personnalisable, une fonction d’autocomplétion (avec création automatique d’un index de mots ou non), la possibilité de faire des recherches d’expressions exactes comme sur Google (ex : “une super expression”) ou encore le surlignage des mots recherchés en gras…
Tous les explications de base propres au moteur sont accessibles à cette adresse : moteur de recherche PHP Objet (POO) complet (pagination, surlignage, fulltext…).
Je vais vous présenter deux scripts jQuery-Ajax que j’ai codés afin d’apporter des alternatives à la pagination de mon moteur de recherche PHP. Je précise que ces deux scripts peuvent être utilisés dans un autre contexte que mon moteur de recherche mais je l’ai fait essentiellement pour lui apporter un plus. Voici les deux alternatives adaptables au moteur :
Ces deux possibilités permettent d’obtenir de bons résultats visuels mais surtout d’éviter de cliquer sur les classiques liens “suivants” et “précédents”. L’autre avantage de ces scripts est de générer des appels Ajax pour le moteur de recherche PHP.
Sans plus attendre, vous pouvez les télécharger individuellement ou récupérer le pack contenant plusieurs versions d’exemple du moteur avec tous les fichiers utiles (scripts JS, CSS, images de chargement, class du moteur de recherche PHP…).
Télécharger “Pack complet – moteur de recherche PHP 5.5 – PHP 7”moteurPHP5.5.zip – Téléchargé 34883 fois – 171 Ko
Télécharger “AjaxTrigger”ajaxTrigger.zip – Téléchargé 1786 fois – 2 Ko
Télécharger “AjaxInfiniteScroll”ajaxInfiniteScroll.zip – Téléchargé 1795 fois – 2 Ko
N.B. : le pack comprend désormais uniquement les versions compatibles PHP 5.5 du moteur de recherche et de chaque démo en langage PHP 5.5 !
La version 2.2 du moteur de recherche PHP Ajax a vu quelques modifications, je précise cela à ceux qui téléchargerait cette nouvelle mouture après l’avoir déjà utilisée auparavant. Désormais, deux paramètres sont à changer dans les fichiers du moteur au niveau du troisième paramètre de la méthode “moteurAffichage()”.
Comparez avant et après au sein du fichier principal du moteur :

Dans le tableau du 3e paramètre, il faut désormais mettre la limite de départ à 0 plutôt que 1 et ajouter une 4e valeur (un booléen true/false, false étant la valeur pour les paginations infinies ou par trigger, true pour la pagination classique).
Ensuite, l’autre modification à apporter est dans le fichier “queryAjax” (selon la version utilisée le nom diffère) au niveau de la variable $page, voici les lignes à modifier de la sorte :
N.B. : les exemples présentés dans cet article sont adaptés à cette nouvelle version !
Voici la liste des étapes à respecter pour que les scripts jQuery fonctionnent parfaitement :
N.B. : ces scripts étant codés en jQuery, il faut bien entendu charger la bibliothèque avant de les charger !
Les codes suivants sont à placer dans le <body>…</body> de la page qui réceptionne les résultats. Seul le formulaire peut être placé ailleurs avec une “action” différenciée, mais pour l’exemple, tout se passe dans la même page…
Formulaire du moteur de recherche :
Usage de la class PHP 5 du moteur de recherche PHP objet :
Il faut impérativement ajouter une class HTML à chaque ligne de résultats (ici, c’est la class “results”) ainsi qu’un compteur de résultats qui ajoutent dynamiquement des ID (ici, c’est $nb, mais vous n’êtes pas obligés d’ajouter le nombre comme dans l’exemple en revanche, c’est juste utile dans id=”<?php echo $nb; ?>”).
Ce fichier reprend un peu le même principe que le code PHP situé juste au-dessus car il doit être en cohérence avec les résultats affichés précédemment. Seules quelques différences sont à noter :
Voici comment faire fonctionner le trigger Ajax avec “Afficher plus de résultats” (à placer dans le head ou en fin de body dans le code HTML) :
N.B. : pour le moteur de recherche PHP, il convient absolument de mettre “nbResult: $(‘.numR’).text() pour que le nombre de résultats total soit récupéré dynamiquement. L’autre alternative en PHP 5 serait de charger les scripts en bas de page (fin de body) et d’utiliser à la place “<?php echo $moteur::$nbResultsChiffre; ?>”…
Le scroll infini fonctionne globalement sur le même principe que le trigger Ajax, il convient donc de respecter la procédure expliquée précédemment avec le script suivant :
Comme tous les scripts, ces deux fichiers codés en jQuery sont imparfaits et peuvent demander quelques ajustements, c’est pourquoi je vous conseille de repasser de temps en temps sur cette page pour vérifier la version en cours d’usage. En général, dès que quelqu’un me signale un gros problème ou que j’en détecte un de mon côté, je fais une petite mise à jour de correction, c’est la règle du jeu… 😀
Actuellement, je n’ai décelé aucun problème particulier avec ajaxTrigger.js mais le scroll infini peut parfois être taquin quand nous allons trop vite avec le scroll et la souris (il charge deux fois les mêmes résultats puis se relance normalement). J’ai ajouté un système de “timer” pour limiter ce phénomène en ralentissant l’animation, ce qui ne m’a plus causé aucun problème après ça, mais je reste méfiant toutefois que les scroll infinis ne sont jamais parfaits
En réalité, vous pouvez “feinter” pour simuler une sorte de scroll infini mais en utilisant ajaxTrigger.js, voici comment procéder :
Ainsi, quand vous arrivez en base de page et que vous “survolez” la div transparente, le script se lance et fait l’effet d’un scroll infini. C’est moins pratique mais c’est une solution alternative… 😀
Super classe, moi qui chercher comment faire un moteur de recherche PERFORMANT, je suis comblé 😉 Le code est propre, clair et commenté. Il ne me reste plus qu’à l’améliorer.
Bonjour, super moteur de recherche, je souhaiterais modifier “ORDER BY”, du plus récent au plus ancien et là je n’arrive pas à trouver l’endroit à modifier….”moteur-php5.5.class-inc”.
Merci
Cordialement
Bonjour,
Pas la peine de modifier directement le code, il y a un paramètre exprès pour ça dans la méthode moteurAffichage (voir commentaires dans le code présenté dans l’article, c’est le 4e ou 5e selon la version de la class utilisée).
Bonjour, j’utilise votre moteur de recherche depuis quelques semaines (très bien), mais je viens de découvrir un petit problème.
La recherche ne veut pas se faire sur le mot Lot (département), sans doute trop court. Peut on remédier à cela ?
Merci
Cordialement
Bonjour,
Quel type de recherche utilisez-vous ? La cause de l’exclusion du mot “lot” peut être multiple. Je vous donne toutes les cartes en main, vous devriez être dans un de ces cas :
– vous utilisez le recherche FULLTEXT qui par défaut exclut les mots de moins de 4 lettres (c’est très fâcheux mais on ne peut pas y faire grand chose si nous avons un hébergement mutualisé).
– vous avez mis une limite minimale de longueur de mots dans les options du moteur (je doute que ce soit ça mais vérifiez au cas où…)
– le mot “lot” fait partie des stopwords français, il faut donc le supprimer (j’ai vérifié dans mon fichier et il n’y est pas…)
Je pense que c’est le “fulltext” qui est le plus probable, mais je peux me tromper.
Cordialement.
Merci pour votre réponse.
J’ai un hébergement sur un VPS, il y a t’il un remède ?
Cordialement
Sur un VPS ça doit être jouable je pense… Si vous êtes sur un serveur Apache, il faut paramétrer l’option ft_min_word_len de MySQL (dans le fichier my.ini). Vous trouverez des informations à ce sujet sur le web normalement.
Bonjour, votre moteur de recherche fonctionne parfaitement (merci), mais j’aimerais apporter une précision dans la recherche avec une sélection entre deux prix, peut être avec “BETWEEN”. Ma base de données MySQL à une colonne prix.
Est ce possible de l’intégrer à votre moteur ?
Cordialement
Bonjour,
Cela me semble “compliqué. Je vous explique pourquoi… Les requêtes sont construites ici dynamiquement en fonction du nombre de mots tapés, ce qui explique qu’une boucle récurrente s’effectue à chaque fois que l’on recherche un mot de plus. Par conséquent, une même partie de code est répétée, encore et toujours, selon ce nombre de mots. Dans le cas d’une requête avec BETWEEN, cela ne s’effectue pas ainsi donc me semble impossible sans réécriture de la requête, et donc du coeur du moteur.
Toutefois, comme BETWEEN est utilisé dans une clause WHERE, j’ai prévu un paramètre additionnel pour personnaliser la requête ($orderLimitPerso) qui pourrait satisfaire ce besoin.
Quoi qu’il en soit, il faudra tout de même mettre un peu les mains dans le cambouis, malheureusement… 🙁
Bonjour
merci beaucoup pour votre aide. Je désire effectuer une recherche sur deux champs de recherche comme sur le site http://www.pagesjaunes.fr/ et je ne sais comment procéder merci d’avance pour votre aide.
Bonjour,
Mon moteur ne permet pas encore de faire ça sans problème malheureusement, ou sinon il faut trouver la technique en codant par soi-même.
Je vais certainement réécrire tout le moteur de recherche si l’année 2016 me le permet afin de faciliter tout ça mais actuellement je manque de temps pour m’y coller. 🙁


Auteur : Alexandra Martin / Mathieu Chartier
Editeur : Eyrolles
Prix : 32,00 € (345 pages)
Auteur : Alexandra Martin / Mathieu Chartier
Editeur : Eyrolles
Prix : 32,00 € (570 pages)
Auteur : Alexandra Martin / Mathieu Chartier
Editeur : Eyrolles
Prix : 29,90 € (522 pages)
Auteur : Mathieu Chartier
Editeur : First Interactive
Prix : 19,90 € (411 pages)
Auteur : Mathieu Chartier
Editeur : First Interactive
Prix : 29,90 € (622 pages)
Télécharger “SwipeMenu.zip”SwipeMenu.zip – Téléchargé 18065 fois – 52 Ko
Télécharger “Spider Simulator PHP”spider-simulator.zip – Téléchargé 17479 fois – 2 Ko
Télécharger “ReadingIndicator 1.0”readingIndicator-1.0.zip – Téléchargé 15917 fois – 7 Ko
Télécharger “Parseur Facebook”parser-facebook.zip – Téléchargé 17316 fois – 3 Ko
Télécharger “Pack complet – moteur de recherche PHP 5.5 – PHP 7”moteurPHP5.5.zip – Téléchargé 34883 fois – 171 Ko
Ce blog est le résultat de plusieurs années de travail mais il ne fait pas manger son homme. Découvrez l’agence web et l’organisme de formation géré par Mathieu Chartier et n’hésitez pas à prendre contact pour suivre des formations personnalisées.
Tous droits réservés © Blog Internet-Formation 2009 – 2022

source

Catégorisé: