Page 1 sur 1

Champs Autocomplete

Posté : 13 mars 2012, 12:18
par orell1
Bonjour à tous,
J'ai réussi en fouillant un peu à droite et à gauche à faire un champs de recherche autocomplete:
FORMULAIRE DE RECHERCHE:
 <link href="http://ajax.googleapis.com/ajax/libs/jqueryui/1.8/themes/base/jquery-ui.css" rel="stylesheet" type="text/css"/>
  <script src="http://ajax.googleapis.com/ajax/libs/jquery/1.5/jquery.min.js"></script>
  <script src="http://ajax.googleapis.com/ajax/libs/jqueryui/1.8/jquery-ui.min.js"></script>
 
   <script>
  $(document).ready(function() {
    $("input#autocompletedep").autocomplete({
    source: [<?php             
mysql_connect("localhost","root","");

/* selection de la base de donnée mysql */
mysql_select_db("societe");
                $sql = mysql_query("SELECT DISTINCT code_postal FROM  entreprises_coordonnees");
                while ($off = mysql_fetch_assoc($sql)) {
                echo '"'.$off['code_postal'].'",';
                }
                mysql_close(); ?>]
});
  });
  </script>

<div class="titre_b">
<b><u>Activit&eacute;</u></b>
<font style="font-size:9px; margin-left:10px;"><b><?php echo CHAMPS_OBLIGATOIRES; ?> (*)</b></font><br /><br />
  <form action="" class="tableau_search" method="get">
        <table align="center" border="0" cellspacing="1" cellpadding="1" width="100%">
        <tr>
                <td width="26%">Activit&eacute; (*) : </td>
                <td width="74%"><input id="autocomplete"  type="text" size="30" name="activite"  maxlength="50" class="inputText" /></td>
        </tr>
        <tr>
          <td>Mot cl&eacute;(s) : </td>
          <td><input type="text" size="30" name="mots_cles" maxlength="50" class="inputText"   /></td>
          </tr>
        <tr>
                <td>D&eacute;partement : </td>
                <td><input type="text" size="3" name="code_postal" maxlength="5" class="inputTextLittle" id="autocompletedep"  /></td> 
        </tr>
        <tr>
                <td>&nbsp;</td>
        </tr>
        <tr>
    <td>&nbsp;</td>
                <td colspan="2" align="left"><input type="submit" value="<?php echo RECHERCHER; ?>"></td>
        </tr>
        </table>
  </form>
  </div>
En fait ce que je souhaiterai faire c'est commencer la recherche par les première lettre taper, mais là ça bloque... lol

Si jamais vous avez une idée??

Merci

Re: Champs Autocomplete

Posté : 13 mars 2012, 12:27
par xTG
C'est pas clair ton problème..
C'est le but d'un autocomplete de rechercher dès les premières lettres tapées.
Or vu que c'est un script jQuery je pars du principe qu'il fonctionne...

Donc peux-tu détailler ton problème ?

Re: Champs Autocomplete

Posté : 13 mars 2012, 12:42
par orell1
Merci pour ta réponse rapide.
Effectivement le script fonctionne très bien, le problème c'est que la recherche se fait sur toutes les lettres.
Exemple: je cherche un département
Je commence à taper 75 et là ça m'affiche 075 etc alors que je voudrais que ça comment par affiche la la lettre ou le chiffre tapé.

Exemple:
Je tape 7 alors les résultats affichés commencent par 7 et ainsi de suite

le script lance la recherche grâce à:
<?php
        $conn = db_connect();
        $sql = "SELECT *
        FROM entreprises_coordonnees
        LEFT JOIN entreprises_dossiers ON entreprises_dossiers.num_client=entreprises_coordonnees.num_client
        WHERE activite like '%".$activite."%' AND code_postal like '%".$code_postal."%' AND mots_cles like '%".$mots_cles."%' AND mots_cles_option like '%".$mots_cles_option."%' ORDER BY nom_entreprise ASC";
        $resultat = mysql_query($sql, $conn) or die(mysql_error());
        $result = mysql_query($sql, $conn) or die(mysql_error());
merci

Re: Champs Autocomplete

Posté : 13 mars 2012, 15:08
par orell1
Personne ne sait ?

Re: Champs Autocomplete

Posté : 13 mars 2012, 17:07
par xTG
Si tu veux que le motif donné soit le début de chaîne supprimes les % en début de recherche. ;)

Code : Tout sélectionner

LIKE '%maVar%'
devient alors

Code : Tout sélectionner

LIKE 'maVar%'

Re: Champs Autocomplete

Posté : 13 mars 2012, 18:19
par orell1
Merci.
Malheureusement c'est toujours pareil. il recherche n'importe ou dans le champs et nom comme google par exemple ou l'on saisi la premiere lettre et automatiquement s'affichent les resultat correspondant à la première lettre tapée.

Exemple:
je cherche le mot CAMION

Je tape donc C PUIS A PUIS M etc et plus je tape de lettres plus ma recherche abouti.
Dans google lorsque l'on tape c on a cdiscount puis caf etc...

Une petite idée?

Merciiii

Re: Champs Autocomplete

Posté : 13 mars 2012, 18:49
par xTG
Il n'y a rien d'autre qui rentre en jeu que ta requête.
Donc si tu as bien modifié tous les champs de recherche comme je te l'ai indiqué il n'y a pas de raison.
Testes là en brut dans phpmyadmin et tu seras fixé quand à la provenance de l'erreur (sql ou php).

Re: Champs Autocomplete

Posté : 15 mars 2012, 15:39
par orell1
Ah c'est bizarre alors car en faisant ça:
$sql = "SELECT * 
	FROM coordonnees
	LEFT JOIN dossiers ON  dossiers.num_client= coordonnees.num_client
	WHERE activite like '".$activite."%' AND code_postal like '".$code_postal."%' AND mots_cles like '".$mots_cles."%' AND mots_cles_option like '".$mots_cles_option."%'"; 
  	$resultat = mysql_query($sql, $conn) or die(mysql_error());
ça ne fonctionne pas... :-(

Re: Champs Autocomplete

Posté : 15 mars 2012, 16:54
par xTG
le champ mot_clefs est une suite de mot dans un seul champ non ?
Auquel cas un mot se trouvant en milieu de champ ne pourra être trouvé vu que tu recherches à faire correspondre le début.

Re: Champs Autocomplete

Posté : 15 mars 2012, 17:04
par orell1
Ah ok! je comprends mieux...
Par contre le champsdepartement comporte 1 seul code postal et pourtant lorsque je commence à taper 75 il affiche 07500 par exemple... :shock:

Re: Champs Autocomplete

Posté : 15 mars 2012, 18:31
par xTG
En fait je vois pas tellement ce que tu proposes en autocomplete vu que tu as plusieurs variables dans ta requête...
Je vais donc t'exposer les bases pour un champ autocomplete fonctionnel, cela t'éclaircira peut être les idées, ou bien à toi de nous rebalancer dans la bonne direction avec plus de détails sur ton système.

Avec le plugin autocomplete tu peux référencer un array de termes (mais là tu ne contrôle pas très bien le fonctionnement) ou alors un url vers le script de traitement.
Cette seconde option est intéressante pour ton cas.
Tu définis ta fonction ainsi :

Code : Tout sélectionner

$('.selecteur').autocomplete({source:'monUrl/requeteSql.php'});
Le fichier sera appelé avec en paramètre la variable term qui contiendra les lettres rentrées dans le champ.
Le retour est de type JSON, ainsi voilà un exemple de fichier PHP :
<?php
// connexion BDD ....
$term = (isSet($_GET['term']) ? $_GET['term'] : '';
$sql = "SELECT codepostal FROM table WHERE codepostal LIKE '$term%'";
// Exécution requête et stockage résultat dans un array $data
echo json_encode($data); // renvoi du contenu sous format JSON
?>
Ainsi on utilise bien le pattern voulu.