La Communauté Webmaster  forum rss


  Forum-webmaster
  Technique - programmation
  PHP / MySQL
(Modérateurs: Shain, Jey, erwinol, Lilian, lauryv, ToToMaStEr)
  moteur de recherche dynamique LIVESEARCH
« Précédent Suivant »
Pages: [1] Descendre
Répondre    Aviser des réponses    Envoyer le sujet    Imprimer
  Auteur  Sujet: moteur de recherche dynamique LIVESEARCH  (Lu 3178 fois)
moteur de recherche dynamique LIVESEARCH
« sur: le 20-04-2009 a 16:57:45 »
catycat
Membre récent
*

Hors-Ligne

Messages: 4



Je suis un lama!

Voir le Profil
Répondre avec citation

Bonjour,
Je n'arrive pas à faire fonctionner le moteur de recherche livesearch.js (moteur de recherche dynamique comme sur google : affichage mot clé de ma base en tapant les premieres lettres).
Voila le script que j'ai copié sur http://www.journaldunet.com/developpeur/tutoriel/dht/050513-javascript-ajax-xmlhttprequest-recherche1.shtml :

Ma page HTML avec le formulaire:

<head>
<title>Mes posts</title>
<script src="livesearch.js"></script>
</head>

<body onload="liveSearchInit();">
<form name="searchform">
Recherche rapide :
<input type="text" id="livesearch", name="q" onkeypress="liveSearchStart();" />
</form>
<div id="LSResult" style="display: none;"><div id="LSShadow"></div></div>
</body>
</html>

Ma page PHP (je me demande si c pas là l'erreur pour l'appel de ma base):

<?php
$recherche = $_GET['q'];



$user="***";
$host="***";
$password="****";
$database="****";

$connexion=mysql_connect($host, $user, $password)
or die ("connexion au serveur impossible");
$db=mysql_select_db($database, $connexion)
or die ("selection de la base impossible");

mysql_select_db('wordpress');

$req = "SELECT nom FROM membre WHERE prenom LIKE '%$recherche%';";
$res = mysql_query($req);
if ($res) {
while ($row = mysql_fetch_row($res)) {
echo "<a href='/?p=$row

  • '>$row[1]</a><br />";
    }
    }
    ?> :

    et le programme livesearch.js

    /*
    // +----------------------------------------------------------------------+
    // | Copyright (c) 2004-2008 Liip AG |
    // +----------------------------------------------------------------------+
    // | Licensed under the Apache License, Version 2.0 (the "License"); |
    // | you may not use this file except in compliance with the License. |
    // | You may obtain a copy of the License at |
    // | http://www.apache.org/licenses/LICENSE-2.0 |
    // | Unless required by applicable law or agreed to in writing, software |
    // | distributed under the License is distributed on an "AS IS" BASIS, |
    // | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or |
    // | implied. See the License for the specific language governing |
    // | permissions and limitations under the License. |
    // +----------------------------------------------------------------------+
    // | Author: Liip AG |
    // +----------------------------------------------------------------------+

    */
    var liveSearchReq = false;
    var t = null;
    var liveSearchLast = "";

    var isIE = false;
    // on !IE we only have to initialize it once
    if (window.XMLHttpRequest) {
    liveSearchReq = new XMLHttpRequest();
    }

    function liveSearchInit() {

    if (navigator.userAgent.indexOf("Safari") > 0) {
    document.getElementById('livesearch').addEventListener("keydown",liveSearchKeyPress,false);
    // document.getElementById('livesearch').addEventListener("blur",liveSearchHide,false);
    } else if (navigator.product == "Gecko") {

    document.getElementById('livesearch').addEventListener("keypress",liveSearchKeyPress,false);
    document.getElementById('livesearch').addEventListener("blur",liveSearchHideDelayed,false);

    } else {
    document.getElementById('livesearch').attachEvent('onkeydown',liveSearchKeyPress);
    // document.getElementById('livesearch').attachEvent("onblur",liveSearchHide,false);
    isIE = true;
    }

    document.getElementById('livesearch').setAttribute("autocomplete","off");

    }

    function liveSearchHideDelayed() {
    window.setTimeout("liveSearchHide()",400);
    }

    function liveSearchHide() {
    document.getElementById("LSResult").style.display = "none";
    var highlight = document.getElementById("LSHighlight");
    if (highlight) {
    highlight.removeAttribute("id");
    }
    }

    function liveSearchKeyPress(event) {

    if (event.keyCode == 40 )
    //KEY DOWN
    {
    highlight = document.getElementById("LSHighlight");
    if (!highlight) {
    highlight = document.getElementById("LSShadow").firstChild.firstChild;
    } else {
    highlight.removeAttribute("id");
    highlight = highlight.nextSibling;
    }
    if (highlight) {
    highlight.setAttribute("id","LSHighlight");
    }
    if (!isIE) { event.preventDefault(); }
    }
    //KEY UP
    else if (event.keyCode == 38 ) {
    highlight = document.getElementById("LSHighlight");
    if (!highlight) {
    highlight = document.getElementById("LSResult").firstChild.firstChild.lastChild;
    }
    else {
    highlight.removeAttribute("id");
    highlight = highlight.previousSibling;
    }
    if (highlight) {
    highlight.setAttribute("id","LSHighlight");
    }
    if (!isIE) { event.preventDefault(); }
    }
    //ESC
    else if (event.keyCode == 27) {
    highlight = document.getElementById("LSHighlight");
    if (highlight) {
    highlight.removeAttribute("id");
    }
    document.getElementById("LSResult").style.display = "none";
    }
    //BACKSPACE - required for IE
    else if (event.keyCode == 8 && isIE) {
    liveSearchStart();
    }
    }
    function liveSearchStart() {
    if (t) {
    window.clearTimeout(t);
    }
    t = window.setTimeout("liveSearchDoSearch()",200);
    }

    function liveSearchDoSearch() {

    if (typeof liveSearchRoot == "undefined") {
    liveSearchRoot = "";
    }
    if (typeof liveSearchRootSubDir == "undefined") {
    liveSearchRootSubDir = "";
    }
    if (typeof liveSearchParams == "undefined") {
    liveSearchParams2 = "";
    } else {
    liveSearchParams2 = "&" + liveSearchParams;
    }
    if (liveSearchLast != document.forms.searchform.q.value) {
    if (liveSearchReq && liveSearchReq.readyState < 4) {
    liveSearchReq.abort();
    }
    if ( document.forms.searchform.q.value == "") {
    liveSearchHide();
    liveSearchLast = "";
    return false;
    }
    if (window.XMLHttpRequest) {
    // branch for IE/Windows ActiveX version
    } else if (window.ActiveXObject) {
    liveSearchReq = new ActiveXObject("Microsoft.XMLHTTP");
    }
    liveSearchReq.onreadystatechange= liveSearchProcessReqChange;
    liveSearchReq.open("GET", liveSearchRoot + "/livesearch.php?q=" + document.forms.searchform.q.value + liveSearchParams2);
    liveSearchLast = document.forms.searchform.q.value;
    liveSearchReq.send(null);
    }
    }

    function liveSearchProcessReqChange() {

    if (liveSearchReq.readyState == 4) {
    var res = document.getElementById("LSResult");
    res.style.display = "block";
    var sh = document.getElementById("LSShadow");

    sh.innerHTML = liveSearchReq.responseText;

    }
    }

    function liveSearchSubmit() {
    var highlight = document.getElementById("LSHighlight");
    if (highlight && highlight.firstChild) {
    window.location = liveSearchRoot + liveSearchRootSubDir + highlight.firstChild.nextSibling.getAttribute("href");
    return false;
    }
    else {
    return true;
    }
    }




    /* preview comment code */


    function preview(request){
    //
    var previewNode = $('previewComment');

    if (!previewNode) {
    var lastComment = $('bx_foo');
    var previewNode = document.createElement("div");
    previewNode.id = 'previewComment';
    previewNode.className = 'post_content';
    previewNode = lastComment.parentNode.insertBefore(previewNode,lastComment.nextSibling);

    }
    previewNode.innerHTML = request.responseText;
    }


    function previewSubmit(test) {
    var name = document.getElementById('name').value;
    var mail = document.getElementById('email').value;
    var uri = document.getElementById('openid_url').value;
    var text = document.forms['bx_foo']['comments'].value;

    var f = document.forms['commentForm'];
    if (typeof liveSearchRoot == "undefined") {
    var liveSearchRoot = "/";
    }

    body = "mail=" + encodeURIComponent(mail) + "&uri="+ encodeURIComponent(uri) + "&text="+ encodeURIComponent(text) + "&name="+ encodeURIComponent(name);
    new ajax (liveSearchRoot + 'inc/bx/php/preview.php', {
    postBody: body,
    method: 'post',
    onComplete: preview
    });


    return false;
    }

    function prepareCommentSubmit() {
    var sub = document.getElementById('bx_plugins_blog_all');
    var hid = document.getElementById('bx_plugins_hidden_submit_replacement');
    sub.name = "foo";
    sub.disabled = true;
    sub.value = "Sending ...";
    hid.name = "bx[plugins][blog][_all]";
    return true;
    }

  • Rapporter au modérateur  

    Re:moteur de recherche dynamique LIVESEARCH
    « Répondre #1 sur: le 21-04-2009 a 19:15:43 »
    Lilian
    Administrateur
    *****

    Hors-Ligne

    Sexe: Male
    Messages: 3209





    Voir le Profil    WWW
    Répondre avec citation

    Bonsoir,

    Que se passe t'il exactement ? afin de pouvoir correctement répondre.

    Merci par avance.

    Rapporter au modérateur  
    Re:moteur de recherche dynamique LIVESEARCH
    « Répondre #2 sur: le 21-04-2009 a 19:42:23 »
    catycat
    Membre récent
    *

    Hors-Ligne

    Messages: 4



    Je suis un lama!

    Voir le Profil
    Répondre avec citation

    Merci pour ton aide,

    J'ai donc creer une page html, php et js avec le code ci dessous. En le mettant en ligne aucune erreur ne s'affiche mais je n'ai pas de résultat qui s'affiche non plus, c'est à dire de mot clé qui correspond aux premlieres lettres que j'écris. pourtant ma base mysql est bien fournie...

    Rapporter au modérateur  
    Re:moteur de recherche dynamique LIVESEARCH
    « Répondre #3 sur: le 26-04-2009 a 14:30:36 »
    Lilian
    Administrateur
    *****

    Hors-Ligne

    Sexe: Male
    Messages: 3209





    Voir le Profil    WWW
    Répondre avec citation

    Bonjour,

    Désolé de n'avoir répondu avant ...

    Je ne vois nullement défini liveSearchStart(); dans le fichier javascript donc je pense que ce n'est pas la bonne méthode appelée.

    Il faudrait essayer sans le OnKeyPress de l'élément Input, car celui-ci est ajouté automatiquement dans le liveSearchInit().

    Merci de me tenir au courant

    Rapporter au modérateur  
    Répondre    Aviser des réponses    Envoyer le sujet    Imprimer
    Pages: [1] Monter
    « Précédent Suivant »
    Sauter à: 

    Votre statut : Invité
    Vous devez être membre pour participer.
     
     
    Let’s Encrypt : le certificat SSL gratuit
    Tester votre site internet sur différents navigateurs
    [WordPress] Des problèmes avec l’administration ?
    Rappel : Mettez à jour vos CMS et vos sites E-commerce
    Le .fr fête ses 25 années d’existence !
    Mesurer votre audience en temps réel avec BubbleStat
    Porter réclamation contre Google Panda ?
    Zlio n’est plus …
     
     
     
     
     

    Copyright (c) Devclic 2002 - 2026 - Tous droits réservés

    creation site internet strasbourg