Accueil > Programmation > javascript > Le composant autocomplete de jQuery UI
Le composant autocomplete de jQuery UI
mardi 19 juillet 2011, par
De quoi avons nous besoin ?
D’une librairie jquery, de jquery-ui et d’une base de données avec une liste (par exemple, les articles de ce blog).
Voici le code javascript
$("#article").autocomplete({
source: "chercheArticle.php",
minLength: 2,
select: function( event, ui ) {
alert( ui.item ?
"Selected: " + ui.item.value + " aka " + ui.item.id :
"Nothing selected, input was " + this.value );
}
});
Explications :
$("#article").autocomplete
initialise l’auto-complétion pour l’input d’id article.
source: "chercheArticle.php"
Script qui renvoie la liste des données trouvées
minLength: 2
Permet d’attendre d’avoir deux caractères avant de lancer la recherche.
select: function( event, ui ) {
traitement
}
Le traitement à effectuer quand la sélection a été faite.
Voici le code source de notre chercheArticle.php :
$requete = "select id_article, titre as value from spip3_articles where titre like '%{$_GET["term"]}%'";
/* Ensuite le code qui permet d'exécuter la requête et de créer un tableau de résultat $result */
echo json_encode($result);
Le passage de la valeur cherchée se fait par la variable $_GET[’term’].
On exécute le traitement à partir de la donnée passée (par exemple, une lecture de la base) et on renvoie un tableau json dont au moins une donnée a pour nom ’value’.
Voici le code complet de cet exemple.
D’abord, les inclusions et l’initialisation dans le header du html :
- <script type="text/javascript">
- /*Initialisation du code à la fin du chargement de la page */
- $(document).ready(function(){
- /* L'id de l'input est "article" */
- $("#article").autocomplete({
- /* Script PHP de la"source de donnée" */
- source: "../ajax/chercheArticle.php",
- /* On veut attendre d'avoir 2 caractères avant de lancer le traitement */
- minLength: 2,
- /* Traitement lancé à la sélection d'un item */
- select: function( event, ui ) {
- alert( ui.item ?
- "Vous avez sélectionné: " + ui.item.value + ". C'est l'article numéro " + ui.item.id_article :
- "Vous n'avez rien sélectionné, vous aviez tapé " + this.value );
- }
- });
- });
- </script>
Et voici le code de l’appel ajax à la recherche php :
- <?php
- /* Une classe on ne peut plus simple de requêtage mySQL */
- include_once 'base_mysql.class.php';
- /* Mes paramètres de connexion */
- include_once 'config.php';
- /* Librairie d'encodage en json (car chez free, le json n'est pas activé) */
- include_once '../include/jsonwrapper/jsonwrapper.php';
- /* Connexion à la base */
- $oBase_l = new base_mysql(SERVEUR, BASE, LOGIN, PASSWD);
- /* Requête de recherche. $_GET['term'] contient l'expression à rechercher. */
- $sReq_l = "select a.titre as value, a.* from spip3_articles a
- where a.titre like '%{$_GET['term']}%'";
- $sReq_l.="\n order by a.titre";
- /* On lance la requête */
- $oBase_l->query($sReq_l);
- /* On en fait un tableau */
- $tArticles_l = $oBase_l->tableauPHP();
- /* On balance le résultat en json */
La classe mysql :
- <?php
- class base_mysql{
- var $serveur;
- var $base;
- var $login;
- var $passwd;
- var $requete;
- var $ressource;
- function __construct($serveur = null, $base = null, $login = null, $passwd = null){
- if($serveur != null && $base != null && $login != null && $passwd != null){
- $this->setConnexion($serveur, $base, $login, $passwd);
- $this->connect();
- }
- }
- function connect(){
- }
- function setConnexion($serveur, $base, $login, $passwd){
- $this->serveur = $serveur;
- $this->base = $base;
- $this->login = $login;
- $this->passwd = $passwd;
- }
- function query($sReq_p){
- $this->requete = $sReq_p;
- }
- function tableauPHP(){
- if($this->oRes_i){
- $this->tResult_i = null;
- $this->tResult_i[] = $row;
- }
- return $this->tResult_i;
- }else{
- }
- }
- }
Messages
1. Le composant autocomplete de jQuery UI, 5 décembre 2011, 13:39, par dogmongo
super article mais très incomplet dommage de ne pas le completer par un exemple fonctionnel.
2. Le composant autocomplete de jQuery UI, 12 décembre 2011, 13:02, par eric
Ooop’s je vais tester cela de suite
je chercher justement à pouvoir obtenir ce genre de chose en listant les article d’une unique rubrique.
Peut on imaginer la chose suivante :
recherche sur un pays
puis sur le pays ad hoc recherche d’une ville ?
la structure serait
une rubrique "XXX"
une sous rubrique par pays
dans chaque sous rubrique autant d’articles que de villes ?
Merci pour ce boulot
Cordialement
Eric
3. Le composant autocomplete de jQuery UI, 29 février 2012, 17:48, par MOLIVE
Très interessant merci, mais que doivent contenir "jsonwrapper.php" et "config.php" ??
MERCI
1. Le composant autocomplete de jQuery UI, 29 février 2012, 20:58, par Super Pangolin
jsonwrapper est une librairie php que l’on trouve un peu partout.
Dans le fichier config.php, j’ai mis mes paramètres de connexion à la base mysql.
4. Le composant autocomplete de jQuery UI, 17 avril 2012, 18:01
la demo ne fonctionne pas ....
1. Le composant autocomplete de jQuery UI, 17 avril 2012, 20:16, par Super Pangolin
Avec quel navigateur ?
Par doute je viens de tester avec ff, chrome et ie, pas de problème.
5. Le composant autocomplete de jQuery UI, 18 septembre 2012, 22:35, par sigis
Bonjour,
Merci pour le tuto,
Je voudrai savoir, vous présentez 3 blocs de code, et je sais comment les nommer en tant que fichier.
1- je dirai index.php
2- je sais pas
3- config.php
(j’ai la librairie json)
Pouvez vous me donner un coup de main ?
6. Le composant autocomplete de jQuery UI, 18 septembre 2012, 22:37, par sigis
Re ,
"je ne sais pas "pour les fichiers et leurs extention
A bientôt