LIBRAIRIE AUTOCOMPLETION (AJAX OU LOCAL, CHOIX D'EFFETS, ENTIEREMENT PERSONNALIS
toutphp
Messages postés107Date d'inscriptionlundi 24 mai 2004StatutMembreDernière intervention 5 mai 2010
-
19 nov. 2006 à 20:36
Utilisateur anonyme -
18 juin 2012 à 19:43
Cette discussion concerne un article du site. Pour la consulter dans son contexte d'origine, cliquez sur le lien ci-dessous.
Bonsoir, merci pour ce code ;) Apparemment rubiks10 l'initiateur de ce code a disparu ;-)
Mais qqu'un aurait-il réussi a récupérer l'ID dans un input ? Et aurait la solution... sesramdeux ou mussara peut-être ?
Voilà le code dans la partie html :
<form method="POST" action="article_list.php">
Recherche
rapide avec l'identifiant,
(Entrez au moins une lettre ou un
chiffre dans la zone de recherche ci-dessous, la recherche s'effectue
par la désignation, le prix H.T ou TTC),
,
----
,
<script type="text/javascript">
new AutoCompleteur('autocompletion', 'ajout_article_update', 'plugins/autoCompletion_module/traitement_php/ajout_article.php', {
Global: {
nbrMaxItem: 10,
nbrCharsStart: 1,
classToIgnore: ' '
},
Ajax: {
paramName: 'designation'
},
Extra: {
afterValidate: function(element,updateElement,elementValide,text){
if (elementValide) { // Si on a validé un choix
element.value = text; // Remplir le champs texte par le choix
var id_art = elementValide.id_art; // Recupérer l'id de la LI (on en fait ce que l'on veut...)// Recupérer l'id de la LI (on en fait ce que l'on veut...)
// Tu peux donc affecter une Input Hidden avec la variable id etc...
}
},
openEffect: 'blind',
hideEffect: 'slide'
}
});
</script>,
,
----
,
Art_Id
(Entrez l'Id de l'article et envoyer pour effectuer les modifications),
</form>
Mais sur la page cible ... Rien de je ne récupère pas l'ID ???
MERCI pour vos réponse ;-)
moigali
Messages postés1Date d'inscriptionvendredi 3 décembre 2004StatutMembreDernière intervention 7 février 2011 7 févr. 2011 à 20:26
Bonsoir,
Pour les problèmes en local, c'est au niveau de la fermeture de la base de donnée que ça bloque.
A la ligne 29 du fichier film_avec_image.php par exemple il faut lui dire quel connexion il doit fermer avec mysql_close().
Il n'y a qu'a commenter la ligne pour voir que c'est de là que vient le problème.
medio10
Messages postés1Date d'inscriptiondimanche 14 mars 2010StatutMembreDernière intervention24 décembre 2010 24 déc. 2010 à 11:48
Bjr,
avant tout merci pour ce boulot sur l'autocomplete,c le meilleur.
Neanmoins j'ais encore un soucis au niveau de la recuperation du paramètre de recherche ,il ne gere pas les espaces et les caractere accentués.
Pouvez vous m'aider SVP ,ca fait lontemps que je cherche
roccociccone
Messages postés1Date d'inscriptionlundi 19 novembre 2007StatutMembreDernière intervention10 décembre 2010 10 déc. 2010 à 15:19
Bonjour,
Bravo pour ta source elle est au top !!
J'ai un problème, j'ai un menu dynamique en jquery est si je desactive la librairie du menu ton code fonctionne , c'est a dire le div apparait.
Mais lorsque je remets la librairie jquery alors le div ou la liste devrait apparaitre ne s'affiche pas !
Aurais tu une solution ?
Merci
Taraanis
Messages postés1Date d'inscriptionlundi 23 mars 2009StatutMembreDernière intervention 5 mars 2010 5 mars 2010 à 11:44
bonjour,
j'ai le même problème que squatman en local ça ne marche pas, le problème vient probablement de la connexion à la bbd mais je comprend pas parce qu'elle est bien créée et les paramètres de connexion semblent bons. M'enfin si par hasard quelques années après quelqu'un repasse par ici avec une solution je suis preneur.
squatman972
Messages postés2Date d'inscriptiondimanche 26 novembre 2006StatutMembreDernière intervention 3 février 2010 3 févr. 2010 à 03:56
PS2: Ca marche avec les exemples en ligne mais pas en local :s
squatman972
Messages postés2Date d'inscriptiondimanche 26 novembre 2006StatutMembreDernière intervention 3 février 2010 3 févr. 2010 à 03:49
Salut!
J'ai un petit problème...
Pour ton script ainsi que pour tous les autres scripts ajax d'autocompletion que j'ai essayé de faire tourner sur mon serveur wamp local, rien ne se passe.
Ca marche très bien pour ton mode "local" mais ton mode "ajax" ne marche pas chez moi.
Qu'en pense tu?
SQ
PS: oui, javascript est bien activé dans les paramètres du navigateur.
zapolo
Messages postés1Date d'inscriptionmercredi 12 janvier 2005StatutMembreDernière intervention14 octobre 2009 14 oct. 2009 à 15:38
Bonjour RUBIKS10,
Je viens de découvrir ton script qui vient me sauver la vie. Encore merci.
cependant, j'ai un souci.
J'ai un peu modifié l'affichage des résultats et ça fonctionne parfaitement. je souhaiterais pouvoir atteindre directement une page en cliquant sur un des résultats retournés par la recherche.
Merci
doprev
Messages postés1Date d'inscriptionjeudi 27 septembre 2007StatutMembreDernière intervention13 décembre 2007 13 déc. 2007 à 18:04
Bonjour,
Très bon code
Cependant la validation par clic de souris ne fonctionne pas alors que la touche Entrée fonctionne (et ceci que ce soit sous IE ou FF). Pour l'instant j'utilise simplement la démo et j'ai bien installé la base de données.
Merci de me donner des pistes
zouzino
Messages postés7Date d'inscriptionmercredi 25 avril 2007StatutMembreDernière intervention 3 décembre 2007 3 déc. 2007 à 17:21
Salut Rubiks10,
C'est un très bon code mais j'ai deux questions puisque je suis pas expert en javascript et ajax:
1- Comment faire si je veux que le script m'affiche tjs des autocompletions si je separe les mots disons par /. Une fois je tape / et je retape un charactere je veux que le script m'affiche des propositions commencant par ce charactere.
2- Quelle fonction me permet une fois que je clique sur un mot propose d'afficher disons dans une autre div des resultats relies a ce mot?
Merci d'avance et bonne continuation
csa62mo
Messages postés1Date d'inscriptionvendredi 24 mars 2006StatutMembreDernière intervention 1 août 2007 1 août 2007 à 14:51
Bonjour Rubiks,
Tout d'abord un grand bravo pour ta lib!! J'ai commencé à en faire une mais quand j'ai vu la tienne, j'ai tout de suite arrété ;-)
Voilà, j'avais juste un petit soucis pour la completion en Ajax vu que le choix de faire la completion sur le début et/ou la fin de chaine n'est pas paramétrable (logique vu qu'en Ajax, c'est à nous, pauvres utilisateurs de ta magnifique lib, de construire la requête SQL qui va bien). Du coup j'ai fait une requete type "SELECT mon_champ FROM ma_table where mon_champ LIKE ''" en me disant que je rajouterais les % par moi même dans le champ pour faire la completion à gauche et/ou droite. Et c'est là que j'ai eu quelques soucis vu que % est un caractère spécifique en HTML. Du coup je me suis permis de modifier légèrement ton code à la ligne 419 de l'autoCompleteur_lib.js pour remplacer le signe % par sa valeur en HTML à savoir %25:
avant : this.AjaxModePackage.parameters = this.AjaxModePackage.paramName+'='+this.element.value+'&limit='+this.globalOptions.nbrMaxItem;
après : this.AjaxModePackage.parameters = this.AjaxModePackage.paramName+'='+this.element.value.replace(/%/,"%25")+'&limit='+this.globalOptions.nbrMaxItem;
Du coup, ça marche impec :-D C'est peut-être pas franchement optimisé ou pas très intelligent de faire ça là, mais j'ai fait ça vite fait sans rentrer dans le détail de ton code.
Voilà, c'était juste pour te prévenir, des fois que tu ne te sois pas encore penché sur le sujet et que ça t'interesserais (il existe bien d'autres caractères spéciaux comme '&' mais je pense que tu sais ça mieux que moi)
Bon code
Yanou (admiratif de ta lib...)
plefebvr_fr
Messages postés4Date d'inscriptionmardi 9 janvier 2007StatutMembreDernière intervention28 juillet 2007 28 juil. 2007 à 16:10
Salut Rubiks,
Je ne pense pas que ça soit le cas uniquement chez moi .. car j'ai utilisé la démo qui est fournie donc le code n'a pas été modifié du tout.
On peut le vérifier en activant la trace dans mysql comme cela puis en redémarrant mysql :
Exemple moi avec wamp, ajouter la variable log dans le block [wampmysqld] :
[wampmysqld]
log=C:/Server/Wamp/logs/queries.log
Pour un mysql classique :
[mysqld]
log=C:/Server/Wamp/logs/queries.log
Et franchement, je ne suis pas d'accord sur le fait que ce ne soit pas un problème car le but est d'avoir un code optimisé, pas de solliciter le serveur inutilement (sauf si le nombre de sessions est limité bien entendu ou qu'il s'agit d'un serveur de test)
Voilà, si quelqu'un peut me confirmer que je ne suis pas le seul ou a une solution, je suis preneur ;o))
Merci & @+,
PL
rubiks10
Messages postés224Date d'inscriptionlundi 19 décembre 2005StatutMembreDernière intervention 6 juin 20073 28 juil. 2007 à 13:37
Salut GFPL, pour ton problème d'id redondant tu as du faire une erreur dans le php et rajouter "id" devant le résultat de ton serveur bdd.
Salut Apaligot, pour le problème des librairies en fait je redéfini certaines méthodes de Prototype tel que Position.clone et également certaines de la librairie Effects de scriptaculous donc en fait il faudrait que tu intègres les librairies scriptaculous et prototype en premier dans la balise HEAD puis tu intègres en dernier ma librairie normalement ca devrait passer.
Salut plefebvr_fr, je suis étonné du comportement de ma librairie chez toi, moi ca ne m'a jamais fait ca, donc ben désolé mais je peux pas t'aider mais cela dit ce n'est pas un problème non plus...
Bon courage à tous et merci
@+
plefebvr_fr
Messages postés4Date d'inscriptionmardi 9 janvier 2007StatutMembreDernière intervention28 juillet 2007 25 juil. 2007 à 09:45
Salut Rubiks,
Merci pour le script !!
Mais j'ai une petite question, comment empêcher la requête ajax lorsqu'un choix a été effectué (via enter ou click par exemple) car 2 requêtes au minimum sont envoyées au serveur et la deuxième ne sert à rien,
Exemple, dans la démo fournie :
1. Je tape b dans le premier champ => 1 requête ajax (like 'b%')
2. Je choisi une des valeurs => Une requête ajax est envoyée au serveur avec le résultat (like 'Bad Company%')
Voici la trace mysql :
070725 9:42:43 16 Connect root@localhost on
16 Init DB autocompletion
16 Query SELECT DISTINCT
id,
titre
FROM
autocompletion_exemple
WHERE
titre LIKE 'b%'
ORDER BY
titre ASC
LIMIT
5
16 Quit
070725 9:42:46 17 Connect root@localhost on
17 Init DB autocompletion
17 Query SELECT DISTINCT
id,
titre
FROM
autocompletion_exemple
WHERE
titre LIKE 'Bad Company%'
ORDER BY
titre ASC
LIMIT
5
17 Quit
Merci bcp,
Pl
apaligot
Messages postés2Date d'inscriptionlundi 12 janvier 2004StatutMembreDernière intervention24 juillet 2007 24 juil. 2007 à 14:37
Bonjour RUBIKS.
Désolé pour le long temp de réponse, j'étais parti...
J'ai réussi à faire fonctionner le script (via l'intégration dans une classe PHP), mais lors de l'utilisation de plusieurs autocompletions dans le meme formulaire, les listes s'affichent toutes mais seule la première liste est séléctionnable (malgrès différents ID).
Mon second problemme est que j'ai du intégrer les librairies scriptaculous et prototype d'office dans mes pages. Du coup, ton script ne fonctionne plus. J'ai bien essayé de supprimer les entrées de autoCompleteur.js (Libraries: ['autoCompleteur_lib'],), mais sans succès. Est-ce possible d'utiliser ton script sans les librairies incluses ? Quelles sont les différences entre les librairies que tu utilise et les officielles ?
En te remerciant par avance pour tes réponses...
gfpl
Messages postés172Date d'inscriptionsamedi 11 août 2012StatutMembreDernière intervention 9 avril 2011 4 juil. 2007 à 15:47
en effet la ca marche et je n ai rien fait de sepcial mais bon j ai refais un upload de mes source et ca a marche comme il faut il y avait peut etre un fichier non compet que j avait upper
sinon oui c est utres bon code j ai juste un petit souci si tu sait me dire ou c est
quand on selectionne une ville il retourne une url genre id=id4568 voila j ai un id en trop j aimerais voir id=456855... pour recupere les variable...
rubiks10
Messages postés224Date d'inscriptionlundi 19 décembre 2005StatutMembreDernière intervention 6 juin 20073 23 juin 2007 à 12:23
Salut GFPL.
Ben pour ton 1er message concernant mon ancienne librairie cela ne fonctionne pas car le fichier PHP que tu appelles n'existe pas. Pour débugger je te conseille (sous FireFox) de télécharger le module complémentaire FireBug qui permet de tout voir dynamiquement et donc également les requêtes Ajax.
Puis concernant ton 2eme message je suis allé voir ton lien et pour moi cela fonctionne parfaitement !!! J'ai bien la liste des villes.
Voilà @+
gfpl
Messages postés172Date d'inscriptionsamedi 11 août 2012StatutMembreDernière intervention 9 avril 2011 21 juin 2007 à 16:45
sous ie pareils rien ne passe non plus ...
j ai passer plus de 6h a essayer le script dans tout les sens mais j y arrive pas ...
aucun des 4 telecharger
rubiks10
Messages postés224Date d'inscriptionlundi 19 décembre 2005StatutMembreDernière intervention 6 juin 20073 10 juin 2007 à 21:50
Salut APALIGOT
Est-ce qu'au moins la liste s'affiche ?
Est-ce que tu as créé toi même un fichier de réponse serveur ou as-tu utilisé le mien et si tu as utilisé le mien qu'as-tu modifié dedans ?
Plusieurs personnes ont eu le même problème sur FireFox mais j'avais résolu le problème depuis (voir commentaire des mises à jour). J'utilise ma source dans de nombreux projets et je n'ai jamais eu de problèmes par la suite sur tous les navigateurs.
Donc si tu me dis que mon exemple fonctionne parfaitement cela ne vient pas de FireFox mais d'un problème dans ton adaptation de ma source. Mais quoi... réponds aux questions précédentes ça m'orientera pour résoudre le problème.
apaligot
Messages postés2Date d'inscriptionlundi 12 janvier 2004StatutMembreDernière intervention24 juillet 2007 10 juin 2007 à 19:42
Bonjour RUBIKS10 !
bravo pour ton travail d'excellente qualité.
J'ai cependant un petit problemme... Ton exemple fonctionne impec sous FF, mais pas mon script... (alors qu'il fonctionne sous IE) : le champ ne se complète pas ni avec le clic ni avec la touche entrée, et les touches down et up ne fonctionnent pas non plus. Ma version de FF est la dernière : 2.0.0.4
Aurais-tu une piste, je cherche l'erreur depuis un moment mais je ne trouve rien... Pas d'erreur JS sur IE ni FF.
Voici mon code :
bafcomp
Messages postés16Date d'inscriptionlundi 8 décembre 2003StatutMembreDernière intervention 4 août 2009 30 mai 2007 à 17:55
rubiks10 je te salut pour se que tu as fait et pour repondre a toute ces qustion, il nous faut juste une dizaine de perssone comme toi et y aura plus d ignorant informatique
merci a mon nom et merci au nom de tous se que tu as aider je suis vraiment fiere de toi
plefebvr_fr
Messages postés4Date d'inscriptionmardi 9 janvier 2007StatutMembreDernière intervention28 juillet 2007 25 mai 2007 à 13:08
En relisant les posts précédents et en tatonnant un peu, voilà comment faire :
plefebvr_fr
Messages postés4Date d'inscriptionmardi 9 janvier 2007StatutMembreDernière intervention28 juillet 2007 25 mai 2007 à 12:49
Bonjour,
Et bravo pour ce code d'autocompletion, j'en ai vu pas mal en cherchant sur la toile mais soit "trop lourd", soit avec des erreurs..
Bref, le plus court est souvent le meilleur !!
J'ai une petite question tout de même (surement simplissime mais pas pour moi ;o)), je cherche à récupérer la valeur du premier champ "id" afin de renseigner d'autres champs du formulaire sans avoir à ré-interroger la base,
ichnusa84
Messages postés1Date d'inscriptionsamedi 5 mai 2007StatutMembreDernière intervention 5 mai 2007 5 mai 2007 à 11:00
Votre script est super. Une question toutefois. Si l'utilisateur tape Martin dans le champ nom, on voit les 10 ou 20 ou... items selon le paramétrage. Mais du coup, je ne peux plus accéder aux Martin qui restent... Comment puis-je les voir ? Comment mettre un bouton ou lien genre 10 ou 20 suivants ?
Merci infiniment.
cs_nihaoma
Messages postés140Date d'inscriptionjeudi 2 mai 2002StatutMembreDernière intervention 2 février 2010 16 avril 2007 à 09:09
pardon, je voulais dire "ton script est très bien!"
cs_nihaoma
Messages postés140Date d'inscriptionjeudi 2 mai 2002StatutMembreDernière intervention 2 février 2010 16 avril 2007 à 09:08
Bonjour,
Tout script est très bien !
j'aimerai le modifier un peu mais je ne sais pas trop comment faire. Voila, tes "propositions" faite pas l'auto-complétion s'affiche dans un div s'adaptant à la taille du champ texte de saisi. Moi, j'aimerai que si dans le champ en question je saisi plusieurs mots ou une phrase, le script ne fasse la recherche que depuis le dernier espace (mot en cours, mais ca c'est bon j'ai trouver comment faire), par contre j'aimerai afficher les résultats sous la forme d'un div dont la position gauche se cale sur la première lettre du mot considérer (je ne sais pas si je suis très clair ?)
croyez vous que cela est possible ? j'ai fais quelques recherches, je trouve facilement plein de script qui peuvent me donner la position du curseur de saisi en terme de nombre de caractères, mais pour positionner mon div comme je le veux, il me faudrait une sorte d'offset en pixel de ce curseur de saisi par rapport au left du champ de saisie. Je ne trouve aucune propriétés pour récupérer cette info, et son calcul à partir du nombre de caractères me parait difficile puisque dépendant de la taille de chaques lettre tappées dans la police utilisée....
si quelqu'un pouvait avoir une idée cela m'aiderait beaucoup...
merci par avance
cordialement
NiHaoMa
sesramdeux
Messages postés2Date d'inscriptionmercredi 8 novembre 2006StatutMembreDernière intervention13 avril 2007 13 avril 2007 à 08:07
Décidément, non, je n'y arrive pas. Il y a quelque chose que je dois faire de travers.
Voici le code (un peu adapté) dans le fichier php et dans le fichier html. Je récupère bien la valeur localité, mais jamais l'id. Merci.
1. dans film_sans_image.php
///////////////
SELECT DISTINCT
IDLoc as id,
txtLocalite
FROM
tbllocalites
WHERE
txtLocalite LIKE '".$_POST['localite']."%'
ORDER BY
txtLocalite ASC
LIMIT
".$_POST['limit']."
")
or die(mysql_error());
dbClose();
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
//////////////////////////////////////////////EXTRACTION DE LA REQUETE ///////////////////////////////////////////
$response = array();
while ( $result = MYSQL_FETCH_ARRAY($query,MYSQL_ASSOC) )
{
$response[] = array (
'id' => $result['id'],
'txtLocalite' => $result['txtLocalite']
);
}
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
/////////////////////////////// CREATION DE LA CHAINE DE CARACTERES ENVOYEE ////////////////////////////////////
$return = '';
for($i=0;$i<count($response);$i++)
{
$return .= '<li id="id_'.$response[$i]['id'].'" class="film">
'.$response[$i]['txtLocalite'].'
</li>';
}
$return .= '';
//////////////
2. Dans le fichier ".html"
...
<script type="text/javascript">
new AutoCompleteur('IDLoc', 'IDLoc_update', '<?php echo $dir_inc?>/autocompletion/traitement_php/film_sans_image.php', {
Global: {
nbrMaxItem: 100,
nbrCharsStart: 3,
classToIgnore: ' '
},
Ajax: {
paramName: 'localite'
},
Extra: {
afterValidate: function(element,updateElement,elementValide,text){
if (elementValide) { // Si on a validé un choix
element.value = text; // Remplir le champs texte par le choix
var id=elementValide.id; // Recupérer l'id de la LI (on en fait ce que l'on veut...)
// Tu peux donc affecter une Input Hidden avec la variable id etc...
}
},
rubiks10
Messages postés224Date d'inscriptionlundi 19 décembre 2005StatutMembreDernière intervention 6 juin 20073 11 avril 2007 à 19:19
Salut SESRAMDEUX
oui normal l'id c'est pas "elementValide.IDLoc" mais "elementValide.id"
voilà
@++
sesramdeux
Messages postés2Date d'inscriptionmercredi 8 novembre 2006StatutMembreDernière intervention13 avril 2007 11 avril 2007 à 15:34
Bonjour Rubik
Très bon script.
Toutefois, j'ai beau relire et relire les explications que tu donnes concernant la récupération de l'ID dans un , j'obtiens désespérement un beau "0".
Dans le fichier php (dans ton exemple film_sans_image.php), j'ai bien les champs nécessaires dans la clause SELECT ainsi que dans l'array Response. Je reprends l'ID dans l'id du <li>.
Par contre, je coince ici : comment je récupère une valeur en javascript vers une valeur dans le hidden
afterValidate: function(element,updateElement,elementValide,text){
if (elementValide) { // Si on a validé un choix
element.value = text; // Remplir le champs texte par le choix
var id = elementValide.IDLoc; // Recupérer l'id de la LI (on en fait ce que l'on veut...)
// Tu peux donc affecter une Input Hidden avec la variable id etc...
}
},
Merci
rubiks10
Messages postés224Date d'inscriptionlundi 19 décembre 2005StatutMembreDernière intervention 6 juin 20073 4 avril 2007 à 17:21
Re Benb82
Bon le problème est résolu !!! En fait ce problème apparait sous quelques versions de Firefox mais pas toutes, très bizarre quand même. Le problème ne m'était jamais arrivé et la en testant ben le problème était là... pourtant j'ai un ami qui utilise ce script sur son site et quand j'y vais il n'y a pas de problème... enfin bon c'est de l'aléatoire on va dire et que tu n'as vraiment pas eu de chances...
Pour info : c'était le 'keypress' qu'il fallait remplacer par 'keydown' car certaines versions de Firefox ne prennent pas en compte les évènements flèche bas,haut et les page down et page up lors du 'keypress' alors qu'il les prennent lors du 'keydown' mais bien sur tout cela est aléatoire car je n'ai pas tout le temps le problème.
La source a été mise a jour donc tu peux la télécharger
@+
rubiks10
Messages postés224Date d'inscriptionlundi 19 décembre 2005StatutMembreDernière intervention 6 juin 20073 4 avril 2007 à 16:07
Salut Tokyo
Pour les recherches à l'intérieur des chaines en mode Ajax c'est à toi de créer ta propre requête MySQL.
par exemple pour une recherche normal : LIKE 'blabla%'
par exemple pour une recherche à l'intérieur : LIKE '%blabla%'
La recherche intérieure en mode Ajax se fait manuellement et pas par une option
Voilà
rubiks10
Messages postés224Date d'inscriptionlundi 19 décembre 2005StatutMembreDernière intervention 6 juin 20073 4 avril 2007 à 16:04
Salut Benb82
Bon je vais y regarder de plus près dès que j'ai un petit moment.
cs_tokyo
Messages postés6Date d'inscriptionlundi 16 décembre 2002StatutMembreDernière intervention 4 avril 2007 4 avril 2007 à 10:58
bonjour rubik,
la suite de mes aventures , j'ai testé en passant par le php j'arrive à mes fins concernant mon problème d'accents,
par contre je n'ai plus accès aux recherches même à l'intérieur des chaînes (ex: on recherche 'te' => raquette convient). c'est pour cela que j'utilisais le mode local.....
y a t-il moyen d'implémenter la recherche à l'intérieur des chaines en mode ajax ?
d'avance merci de tes réponses
cordialement
tokyo
benb82
Messages postés2Date d'inscriptionvendredi 5 novembre 2004StatutMembreDernière intervention 1 avril 2007 1 avril 2007 à 23:34
Salut Rubiks10
Après avoir fait de multiples tests et autres manips (différentes versions de FF, sous différents ordis), je n'arrive toujours pas à comprendre pourquoi les flèches KEY_UP et KEY_DOWN ne réagissent pas sur FireFox. J'ai retélécharger le code source sur ce site et sans rien modifier, les flèches ne réagissent pas pour naviguer dans la liste de suggestion (pour les cas par exemples 2 et 4 - cas locaux). J'ai pu tester d'autres exemples d'autocompletion où les flèches fonctionnent bien sous FF, d'autant que sur ta première librairie d'autocompletion, cela marche bien!
Cela m'handicape beaucoup, d'autant que ta librairie est vraiment géniale (je recherchais ca depuis longtemps).
D'autre part, je l'ai configuré pour qu'il soit possible de prendre en compte d'autres paramètres actifs de la page (pour par exemple faire une suggestion en conséquence de ce qui a été saisie plus haut dans un formulaire - exemple typique, la mise à jour de liste déroulante sur le code postal et et ville, mais sous forme de suggestion et non de listes deroulantes). Bref, si cela t'interesse... afin de l'etoffer pour une version future.
Merci, de rejeter un oeil sous mon probleme de fleches, je t'en serai infiniment reconnaissant ou tout du moins de me donner une piste serieuse
Cordialement
--
benoit.beaudenon@hotmail.fr
braouazou
Messages postés1Date d'inscriptionlundi 13 octobre 2003StatutMembreDernière intervention27 mars 2007 27 mars 2007 à 18:23
Salut,
Je fais des tests avec ta bibliothèque qui est très bien pensée. J'ai juste un petit souci d'affichage avec Internet Explorer lors de l'affichage de la liste d'autocompletion.
Le div semble masquer du texte qui se trouve au dessus de l'input. Ce problème n'apparait pas sous FF (je n'ai testé qu'avec IE 6, je n'ai pas de machines windows à disposition et le progiciel que je développe sera majoritairement utilisé sous IE).
Je peux au besoin faire une démo.
Julien
rubiks10
Messages postés224Date d'inscriptionlundi 19 décembre 2005StatutMembreDernière intervention 6 juin 20073 26 mars 2007 à 22:37
Salut Benb82
Je t'assure que tout est ok sous FF. C'est d'ailleurs dans ce sens que je code :
- Sur FF
- Fix sur IE et autres...
Donc pour moi tout est ok (sur la derniere version ca passe aussi et sur l'ancienne aussi).
Le problème ne vient pas de ma librairie
benb82
Messages postés2Date d'inscriptionvendredi 5 novembre 2004StatutMembreDernière intervention 1 avril 2007 26 mars 2007 à 01:44
Salut,
Je ne sais pas si je suis le seul à avoir ce soucis, mais les touches KEY_UP, KEU_DOWN, KEY_PAGEUP et KEY_PAGEDOWN ne répondent pas sous FF. Tout ce passe bien sur IE. En remplacant KEY_UP par KEY_LEFT dans le fichier Autocompleteur_lib.js (ligne 270 environ), il se passe bien se qui devrait se passer avec la fleche du haut.
J'utilise bien la derniere version de FF. Pourrais-tu m'apporter un element de reponse. Merci
rubiks10
Messages postés224Date d'inscriptionlundi 19 décembre 2005StatutMembreDernière intervention 6 juin 20073 14 mars 2007 à 18:40
Salut Tokyo
cela ne sert a rien que je rajoute une option comme celle la car la recherche dans la base de données c'est pas ma librairie qui la fait !!!! mais c'est le script php.
Et donc je reviens encore à ce que je t'ai dis dans mon post précédent il faut que tu enleves les accents dans le script php juste avant le SELECT dans la base.
Comme c'est expliqué dans la documentation fournie le script php et personnel et c'est à vous de modifier pour faire ce que vous souhaitez.
En tout cas tu n'arrivera a rien en modifiant le javascript...
Voilà @+
cs_tokyo
Messages postés6Date d'inscriptionlundi 16 décembre 2002StatutMembreDernière intervention 4 avril 2007 14 mars 2007 à 17:02
bonjour rubik,
tout d'abord, merci de ta réponse.
en fait je voudrais que la saisie soit insensible aux accents comme c'est possible pour la casse.
mais je ne vois pas comment faire.
c'est pour cela que j'essayais de transformer les caractères saisis, mais effectivment cela ne peut pas marcher.
il faudrait en fait enrichir ta librairie avec une possibilité supplémentaire genre ignorerAccents, c'est cela ?
tokyo
rubiks10
Messages postés224Date d'inscriptionlundi 19 décembre 2005StatutMembreDernière intervention 6 juin 20073 13 mars 2007 à 20:57
Salut Tokyo
Ben c'est normal car dans l'input texte c'est seulement l'affichage que tu changes mais l'affichage se fait après que ma librairie ait envoyé la requete Ajax.
Je n'ai pas trop compris comment tu effectues tes test dans le script php appelé par Ajax mais peut être que tu pourrais essayer en php dès le début du script de convertir la chaine passée en POST en majuscule et en enlevant les accents. Et ensuite de faire la recherche dans la base.
Voilà mais sans certitudes car je n'ai pas entièrement compris.
@+
cs_tokyo
Messages postés6Date d'inscriptionlundi 16 décembre 2002StatutMembreDernière intervention 4 avril 2007 13 mars 2007 à 13:27
bonjour,
personne n'a d'idée ou de piste sur mon message du 6/03 ?
j'avoue m'être bien trituré les neurones, je ne comprends pas pourquoi j'arrive à rendre insensible aux accents sur la première lettre et pas sur les autres....
à l'aide...
tokyo
mussara
Messages postés7Date d'inscriptionvendredi 25 avril 2003StatutMembreDernière intervention 8 mars 2007 8 mars 2007 à 09:37
merci Rubik10
cs_FT24
Messages postés7Date d'inscriptionvendredi 27 octobre 2006StatutMembreDernière intervention 8 mars 2007 8 mars 2007 à 06:54
Salut RUBIK,
APACHE 2, PHP 4.4.0 (virtual directory a OFF), MySql 4.x.
Sous windows ok (easyphp 1.8 virtual directory a On.
Je vais vérifier la casse des noms des répertoires et fichier.
Merci RUBIK
Franck.
rubiks10
Messages postés224Date d'inscriptionlundi 19 décembre 2005StatutMembreDernière intervention 6 juin 20073 7 mars 2007 à 18:35
Salut MUSSARA
Pour régler ce problème tu doit ajouter la propriété autocomplete à l'input texte : par exemple :
le seul problème avec cette propriété c'est quelle n'est pas valide W3C... mais bon c'est la seule façon de faire.
Voilà ++
mussara
Messages postés7Date d'inscriptionvendredi 25 avril 2003StatutMembreDernière intervention 8 mars 2007 7 mars 2007 à 16:53
bonjour
j'ai de nouveau un petit souci:
lorsque l'utilisateur a déjà saisi un mot après sélection dans le formulaire (en version AJAX) s'il retourne sur la page et qu'il veut saisir les mêmes lettres, il a 2 listes de choix qui se superposent (celle gérée par l'autocomplétion + celle qui garde en mémoire ce que l'utisateur a tapé)
est ce dû à un problème de codage? on peut le solutionner?
je ne sais pas trop quoi faire car du coup les 2 listes se superposent...
merci de votre aide
jp
rubiks10
Messages postés224Date d'inscriptionlundi 19 décembre 2005StatutMembreDernière intervention 6 juin 20073 7 mars 2007 à 13:55
Salut FT24
Je ne pense pas que c'est un problème de chemin. As-tu essayer tous les exemples ?? car le 1 et 3 ne fonctionnent que si un serveur php est présent alors que le 2 et 4 fonctionnent meme sans serveur étant donné que c'est en mode local.
Es-tu sûr d'avoir un serveur php? quel es ta version d'apache sous ton linux ? car sous linux ou windows il n'y aucune différence tant que les serveurs apache, php et mysql fonctionnent.
Voilà @+
cs_FT24
Messages postés7Date d'inscriptionvendredi 27 octobre 2006StatutMembreDernière intervention 8 mars 2007 7 mars 2007 à 11:24
Est ce un pb de chemin relatif ?
cs_FT24
Messages postés7Date d'inscriptionvendredi 27 octobre 2006StatutMembreDernière intervention 8 mars 2007 7 mars 2007 à 11:22
Bonjour Rubik,
aucun pb sous ie et firefox.
J'ai un autre pb, sur ma machine de developpement (w2000, easyphp 1.8) mon code fonctionne parfaitement. Sur le serveur linux, meme code, aucun message erreur et aucune réaction du champs (je fais A pas de réponse)...
cs_tokyo
Messages postés6Date d'inscriptionlundi 16 décembre 2002StatutMembreDernière intervention 4 avril 2007 6 mars 2007 à 12:58
bonjour,
je ne maitrise pas trop javascript.
j'ai intégré le script dans mon appli tout fonctionne bien.
cependant j'aurais aimé rendre la saisie insensible aux accents, comme c'est le cas pour la casse.
voici ce que j'ai fais,
-dans ma liste (données qui viennent d'une bd), je la débarasse de ses accents et je mets en majuscule, donc le contenu de la liste s'affiche bien en majuscule et sans accents (LocalArray)
j'ai crée une fonction qui se lance sur la saisie d'une lettre dans le champ input (exemple2),
cette fonction me permet de remplacer les lettres saisies et de les substituer ainsi si j'entre un é, il est trasformé en E.
cela fonctionne bien sur la première lettre, je peux taper e,é, è, E indiféremment et j'obtiens biens mes éléments qui figure dans ma bd.
par contre , imaginons que j'ai dans ma bd le terme electrode enrobée.
je transforme cela en ELECTRODE ENROBEE pour que cela apparaisse dans ma liste,
si je tape :
é ou e, j'obtiens bien mon ELECTRODE ENROBEE, si je tape enrobee, pas de pb je l'obtients toujours. si je tapes enrobée, là je n'ai plus rien dans ma liste.
qu'est ce j'ai loupé, peut être faut il jouer avec exemple_update ? je vois pas comment...
est-ce faisable ?
merci d'avance si vous avez une idée ?
tokyo
mussara
Messages postés7Date d'inscriptionvendredi 25 avril 2003StatutMembreDernière intervention 8 mars 2007 2 mars 2007 à 13:21
merci beaucoup pour tes explications complémentaires
je m'en sors
bonne continuation
rubiks10
Messages postés224Date d'inscriptionlundi 19 décembre 2005StatutMembreDernière intervention 6 juin 20073 2 mars 2007 à 00:03
Oui donc pour te donner un autre exemple :
Dans le fichier php qui génère la liste il faut que tu affectes un id à chaque proposition representée par une LI.
Puis il faut que tu redéfinisses la fonction afterValidate par exemple :
afterValidate: function(element,updateElement,elementValide,text){
if (elementValide) { // Si on a validé un choix
element.value = text; // Remplir le champs texte par le choix
var id = elementValide.id; // Recupérer l'id de la LI (on en fait ce que l'on veut...)
// Tu peux donc affecter une Input Hidden avec la variable id etc...
}
}
La redéfinition de la fonction se fait dans le sous objets Extra de l'objet options comme l'exemple 3 fournis.
Voilà je pense que cette fois tu as compris.
@+
},
mussara
Messages postés7Date d'inscriptionvendredi 25 avril 2003StatutMembreDernière intervention 8 mars 2007 1 mars 2007 à 21:06
hello
oui ce n'est sans doute pas très compliqué pour toi... mais je n'ai pas ton niveau en javascript... ;o(
j'ai bien compris le déroulé et la méthode qui ensuite affectée pour rediriger vers une autre page
ce que je me dis:
il faudrait rajouter dans exemple.html un autre input type:
et que AutoCompleteur récupère ce fameux id (en + de la valeur qu'il retourne par défaut dans les exemples de ton script)
mais c'est pas facile....
rubiks10
Messages postés224Date d'inscriptionlundi 19 décembre 2005StatutMembreDernière intervention 6 juin 20073 1 mars 2007 à 20:31
Salut MUSSARA
Oui tu as donc remarqué que je n'utilise pas de formulaire et que la soumission d'un formulaire peut se faire par javascript en redefinissant la méthode afterValidate.
Tu peux d'ailleurs regarder les exemples que je fournis avec la doc pour comprendre comment et l'intérêt de pouvoir redéfinir cette méthode à sa guise.
En ce qui concerne l'id j'ai expliqué une méthode et l'ai implémenté en exemple dans l'exemple 3 que je vous ai fournis. (si on valide un film alors cela nous redirige vers une page avec son id en parametre) et pour comprendre comment je fais je te conseille de regarder dans le fichier de génération en php (la méthode et d'insérer l'id dans l'id de la balise LI) enfin tu comprendras mieux en analysant mon code dans le fichier PHP ainsi que la méthode afterValidate de l'exemple 3 (a voir dans le fichier HTML)
Voilà il n'y a rien de compliqué mais si jamais tu bloques n'hésites pas.
Bonne prog
mussara
Messages postés7Date d'inscriptionvendredi 25 avril 2003StatutMembreDernière intervention 8 mars 2007 1 mars 2007 à 16:06
re...
j'ai avancé à partir de tes scripts et désormais tout fonctionne bien (je n'avais pas vu qu'en fait tu n'utilisais pas de formulaire à la base)
par contre là où je coince c'est que je n'arrive pas à récupérer dans un champ caché (input type hidden) la valeur de l'id de la sélection...
si jamais tu as des pistes à me laisser...
merci
jp
mussara
Messages postés7Date d'inscriptionvendredi 25 avril 2003StatutMembreDernière intervention 8 mars 2007 1 mars 2007 à 11:04
bonjour rubiks10
merci pour toutes les explications et codes que tu nous proposes. je commence à un peu mieux comprendre ce mécanisme que j'ai découvert hier... et de permettre d'éviter les listes de centaines d'éléments c'est génial...
par contre je me pose quelques questions pour adapter ton code à mon appli... et surtout qu'en est il par rapport à la soumission du formulaire...
je m'explique...
j'ai déjà un formulaire actuellement (avec malheureusement des select qui font apparaitre des centaines de lignes...). je compte donc remplacer mes select par ton script d'autocompletion.
à la saisie des lettres et lorsqu'on clique sur le mot choisi , est ce que le formulaire est soumis ou pas?
je souhaite que non, car la sélection d'un mot n'est qu'une partie de mon form, et je souhaite qu'il reste 'soumis' que lorsque l'utilisateur clique sur le bouton de validation...
merci en tous les cas
cs_FT24
Messages postés7Date d'inscriptionvendredi 27 octobre 2006StatutMembreDernière intervention 8 mars 2007 28 févr. 2007 à 08:56
Bonjour,
merci Rubik.
Je test.
Franck
rubiks10
Messages postés224Date d'inscriptionlundi 19 décembre 2005StatutMembreDernière intervention 6 juin 20073 28 févr. 2007 à 01:41
Salut FT24
En ce qui concerne la double recherche c'est à toi de creer ton propre fichier de traitement en php ou tout autre langage serveur. Les fichiers php de traitement que j'ai inclus sont à titre d'exemples pour faire fonctionner l'exemple de la liste de films.
Si tu as lu la doc fournie j'ai indiquer que la seule chose à absolument faire c'est de renvoyer du code html sous forme de liste UL LI avec les LI étant les propositions. Après la requête doit être faite exprès pour l'utilisation que tu veux et donc tu peux récupérer tout ce que tu veux.
En ce qui concerne ton problème avec FF c'est très bizarre car personne n'a eu de problème jusqu'à présent avec les versions 1.5 ou 2.0 et plus. Peut-être que tu as une version antérieure mais meme une version antérieure devrait fonctionner. Tu devrais essayer de mettre à jour FF et vérifier... mais vraiment bizarre.
Voilà
cs_FT24
Messages postés7Date d'inscriptionvendredi 27 octobre 2006StatutMembreDernière intervention 8 mars 2007 27 févr. 2007 à 22:26
c'est encore moi, est il possible de faire une double recherche sur la table de la bdd.
Exemple de mon cas sur une application comptable:
L'utilisateur saisie dans le meme champs un numéro de compte ou le nom du compte...
Merci. Franck
cs_FT24
Messages postés7Date d'inscriptionvendredi 27 octobre 2006StatutMembreDernière intervention 8 mars 2007 27 févr. 2007 à 22:03
Rebonjour rubik, incompatible je ne sais pas. J'ai téléchargé ton code exemple (le zip du site), la recherche a chaque caractere est ok, mais si je clicke sur la réponse, celle-ci ne remplie pas le champ du formulaire. Ce qui n'est pas le cas sous IE (version 6).
Voila, voila. C'est sans doute une erreur de ma part. Je te remercie.
Franck.
rubiks10
Messages postés224Date d'inscriptionlundi 19 décembre 2005StatutMembreDernière intervention 6 juin 20073 27 févr. 2007 à 18:46
Salut FT24
Je ne comprends pas pourquoi cela ne fonctionne pas pour toi sous firefox. Et franchement le code est plus compatible sous FF que sous IE meme si on ne voit pas la différence car j'ai tout fait pour corriger les bugs d'IE.
Je tiens meme à dire que l'autocomplétion fonctionne et s'affiche exactement sous les navigateurs IE, FF, NETSCAPE ET OPERA. Je n'ai pas pu tester sur d'autres navigateurs.
Mais sinon sous FF tu as une erreur javascript ?? si oui laquelle ?? sinon que ce passe-t-il ??
cs_FT24
Messages postés7Date d'inscriptionvendredi 27 octobre 2006StatutMembreDernière intervention 8 mars 2007 27 févr. 2007 à 13:57
Super travail. Sous IE génial, par contre sous firefox imcompatible?
Merci Rubiks
rubiks10
Messages postés224Date d'inscriptionlundi 19 décembre 2005StatutMembreDernière intervention 6 juin 20073 30 janv. 2007 à 14:01
Salut Manuzed.
Ben bizzare que tu poses une question aussi simple... car on choisit le nombre de résultats à afficher dans la création de l'autocompléteur, dans l'objet des options ou sinon si on ne définie aucune limite 5 résultats sont affichés par defaut.
regarde le code source du fichier exemple.html et tu verras dans un des exemples la variable "nbrMaxItem" qui est définie dans le sous-objet Global de l'objet des options.
Voilà pour d'autres questions n'hésitez pas.
@+
manuzed
Messages postés2Date d'inscriptionjeudi 19 janvier 2006StatutMembreDernière intervention17 août 2009 30 janv. 2007 à 11:13
Oui ok pour le principe même de l'autocompletion,
mais ou se trouve la variable qui détermine le nombre
de résultats affichés?
A+
Ps: un tres bon boulot!!!
Impressionant
rubiks10
Messages postés224Date d'inscriptionlundi 19 décembre 2005StatutMembreDernière intervention 6 juin 20073 18 déc. 2006 à 23:11
Salut tokyo.
Ben non c'est pas une astuce pour un débutant, le principe de l'autocomplétion c'est de donner les résultats qui correspondent le mieux à l'entrée de l'utilisateur...
Donc par exemple si on prend mon exemple 2 si tu tapes "a" tu as les 10 premiers résultats mais pour faire apparaitrer le reste il faut affiner la recherche soit en tapant "aa" puis ensuite "ab" etc.... c'est le principe même de l'autocomplétion!!!
Car on s'imagine que même en affichant tous les résultats dans une div scollable si la source est par exemple un dictionnaire complet alors avec "a" la div scrollable contiendrait plus de 1000 ou 2000 éléments donc ce n'est pas raisonnable.
Voilà donc la seule réponse que je peux te donner c'est l'affinement de la recherche et donc une utilisation normale de l'autocomplétion.
Merci pour les commentaires
@+
cs_tokyo
Messages postés6Date d'inscriptionlundi 16 décembre 2002StatutMembreDernière intervention 4 avril 2007 18 déc. 2006 à 13:19
bonjour,
j'ai regardé ton code, c'est super !
cependant je me pose une question de béotien, comment faire pour faire apparaitre le résultat dans une liste déroulante ? Comment faire pour ne pas limiter le nombre de réponses sans que cela sature le système ?
exemple : si je fais une recherche sur a, par défaut j'obtiens (exemple 2) les dix premiers éléments contenant en première lettre a, comment l'utilisateur fait il pour accéder aux autres valeurs ?
si quelqu'un à une astuce pour un débutant ?
merci
tokyo
buz_16
Messages postés15Date d'inscriptionvendredi 13 octobre 2006StatutMembreDernière intervention24 novembre 2006 24 nov. 2006 à 11:13
Ok je te remercie.
Je t'ai ajouté à mes contacts msn. j'attends de te voir en ligne pour que l'on échange sur le sujet.
@ bientôt !
mon msn : Buz_16@hotmail.com
rubiks10
Messages postés224Date d'inscriptionlundi 19 décembre 2005StatutMembreDernière intervention 6 juin 20073 22 nov. 2006 à 18:12
Non tu n'as pas à avoir honte du tout!!!! Heureusement que tout le monde n'a pas les même connaissances en javascript et en n'importe quel langage d'ailleurs... sinon le site n'existerait pas!!!
Bon sinon cela est relativement long pour t'aider en passant par le forum
donc si tu veux voici mon msn : ocbslim@tiscali.fr
Comme cela tu pourras me demander ce que tu comprends pas et si jamais tu es motivé que je t'explique en détail le fonctionnement, et aussi pour reparler de ton idée de faire de l'autocomplétion sur 2 champs en même temps car j'ai toujours pas bien saisi exactement ton problème.
Voila donc si tu es motivé... n'hésites pas.
@+
buz_16
Messages postés15Date d'inscriptionvendredi 13 octobre 2006StatutMembreDernière intervention24 novembre 2006 22 nov. 2006 à 12:20
J'ai un peu honte, mais je crois bien que non...
Mais ce n'est pas bien grave.
J'ai déjà un annuaire qui fonctionne grâce à ton code précedent, j'aurais voulu l'enrichir de plusieurs recherches supplémentaires. La recherche s'effectue actuellement sur le nom, j'aurais voulu l'enrichir d'une recherche sur le numéro de telelphone par exemple.
Je pense ne pas être assez calé en javascript pour comprendre tout ton code...
Désolé...
Mais merci pour ton aide.
rubiks10
Messages postés224Date d'inscriptionlundi 19 décembre 2005StatutMembreDernière intervention 6 juin 20073 21 nov. 2006 à 18:52
Ben non tu peux faire des requetes sur plusieurs champs, le truc c'est qu'après lorsque tu veux rapatrier les valeurs des champs il te faut les imbriquer dans une propriété des balises <li>
Regarde par exemple l'exemple 3!!! C'est exactement le meme système que mon ancienne source : lorsque tu valides un choix ca te redirige avec la valeur de l'id du film et lorque tu valides sur aucun champs alors ca te redirige vers une recherche... bien sur sur mon exemple j'ai pas fais comme pour l'ancienne source un affichage du style : " film id = ????? etc..."
Mais regarde la barre d'adresse et tu véras!!! et donc pour voir comment je fais regarde la fonction " afterValidate " de l'exmple 3 et regarde aussi comment je récupère l'id du film!!!
en fait je fais comme ca : <li id="id du film">Titre du film</li>
Mais après c'est à toi de te faire ton propre fichier php qui va traiter les requetes
tu pourrais faire par exemple : <li id="champs1_champs2_champs3_champs4_etc...">Nom qui apparaitra dans ton autocomplétion</li>
et après dans ta propre fonction afterValidate tu peux récupérer tous les champs en faisant
"var champs = elementValide.split('_')"
Tu comprends ??
buz_16
Messages postés15Date d'inscriptionvendredi 13 octobre 2006StatutMembreDernière intervention24 novembre 2006 21 nov. 2006 à 14:45
Merci Rubiks, en fait, le truc, c'est que je crois qu'on ne peut pas requeter sur deux ou trois champs de la table... Actuellement, à moins que je ne me trompe, ton code ne permet de rechercher que sur un seul champ.
@+
rubiks10
Messages postés224Date d'inscriptionlundi 19 décembre 2005StatutMembreDernière intervention 6 juin 20073 20 nov. 2006 à 15:17
Oui buz_16 effectivement
J'ai oublié de changer lors de ma dernière modification
donc tous les $_POST['post'] doivent être changé en $_POST['film']
c'est à dire dans les 2 fichiers php
la ligne : $_POST['post'] = utf8_decode($_POST['post']);
doit être : $_POST['film'] = utf8_decode($_POST['film']);
Merci de cette remarque buz_16!! cela dit cela ne vient pas de ma librairie javascript (heureusement... lol) ca vient juste de l'exmple que j'ai codé a la va-vite.
Ben sinon si tu ne comprends pas tout et que tu arrives vraiment pas à comprendre alors n'hésite pas... je suis la pour ca... lol
@+
buz_16
Messages postés15Date d'inscriptionvendredi 13 octobre 2006StatutMembreDernière intervention24 novembre 2006 20 nov. 2006 à 12:16
Hello rubiks, avant tout bravo pour ce boulot.
Effectivement, je merdais un peu...
Sorry...
Ceci dit, j'ai un "Notice : Undefined index: post in "C:\ program files....\fil_avec_image.php on line 33" dans les listes renvoyées dans la page des champs exemple 1 et 3.
Et j'avoue ne pas comprendre le fonctionnement dans sa globalité. Je regarde ça de plus près.
rubiks10
Messages postés224Date d'inscriptionlundi 19 décembre 2005StatutMembreDernière intervention 6 juin 20073 20 nov. 2006 à 11:50
Sinon non désolé je n'ai pas de site public....
Et au fait petit rappel pour mon exemple en ajax..
le nom de la base de données doit être : " autocompletion "
le nom de la table doit être : " autocompletion_exemple "
voilou
++
rubiks10
Messages postés224Date d'inscriptionlundi 19 décembre 2005StatutMembreDernière intervention 6 juin 20073 20 nov. 2006 à 11:48
Salut buz_16
non tu n'oublies pas de paramètre !!! car pour les cas 1 et 3 c'est de l'ajax et donc il faut creer la base de données mais c'est la même que mon ancienne librairie d'autocomplétion donc normalement tu ne devrais pas avoir de problème.
Mais aussi même si c'est une page html il faut l'ouvrir avec un serveur!!!! pas cliquer directement dessus sinon c'est sur cela ne marche pas.
Sinon pour le cas 4 tape : M en majuscule!!!! oui car pour le cas 4 j'ai mis l'option respect des majuscules et mon tableau local est le début d'un dictionnaire et pour raison de place il n'y a que des noms propres...
voilà
et je t'assure que tout fonctionne normalement.
Merci pour vos commentaires
@+
buz_16
Messages postés15Date d'inscriptionvendredi 13 octobre 2006StatutMembreDernière intervention24 novembre 2006 20 nov. 2006 à 10:24
Hello rubiks, manifestement, je dois oublier un paramètrage quelque part. dans le fichier exemple, il n'ya que le second cas qui fonctionne.
Naixn
Messages postés455Date d'inscriptionmardi 17 septembre 2002StatutMembreDernière intervention22 juillet 2007 20 nov. 2006 à 10:08
Une petite URL d'exemple ? :p
buz_16
Messages postés15Date d'inscriptionvendredi 13 octobre 2006StatutMembreDernière intervention24 novembre 2006 20 nov. 2006 à 09:37
Hello rubiks, je teste tout ça de suite. :-))
toutphp
Messages postés107Date d'inscriptionlundi 24 mai 2004StatutMembreDernière intervention 5 mai 2010 19 nov. 2006 à 20:36
Je l'essaie et je reviendrais dire quoi quand j'aurais pu le triturer de tous les côtés.
18 juin 2012 à 19:43
Mais qqu'un aurait-il réussi a récupérer l'ID dans un input ? Et aurait la solution... sesramdeux ou mussara peut-être ?
Voilà le code dans la partie html :
<form method="POST" action="article_list.php">
Recherche
rapide avec l'identifiant,
(Entrez au moins une lettre ou un
chiffre dans la zone de recherche ci-dessous, la recherche s'effectue
par la désignation, le prix H.T ou TTC),
,
----
,
<script type="text/javascript">
new AutoCompleteur('autocompletion', 'ajout_article_update', 'plugins/autoCompletion_module/traitement_php/ajout_article.php', {
Global: {
nbrMaxItem: 10,
nbrCharsStart: 1,
classToIgnore: ' '
},
Ajax: {
paramName: 'designation'
},
Extra: {
afterValidate: function(element,updateElement,elementValide,text){
if (elementValide) { // Si on a validé un choix
element.value = text; // Remplir le champs texte par le choix
var id_art = elementValide.id_art; // Recupérer l'id de la LI (on en fait ce que l'on veut...)// Recupérer l'id de la LI (on en fait ce que l'on veut...)
// Tu peux donc affecter une Input Hidden avec la variable id etc...
}
},
openEffect: 'blind',
hideEffect: 'slide'
}
});
</script>,
,
----
,
Art_Id
(Entrez l'Id de l'article et envoyer pour effectuer les modifications),
</form>
Mais sur la page cible ... Rien de je ne récupère pas l'ID ???
MERCI pour vos réponse ;-)
7 févr. 2011 à 20:26
Pour les problèmes en local, c'est au niveau de la fermeture de la base de donnée que ça bloque.
A la ligne 29 du fichier film_avec_image.php par exemple il faut lui dire quel connexion il doit fermer avec mysql_close().
Il n'y a qu'a commenter la ligne pour voir que c'est de là que vient le problème.
24 déc. 2010 à 11:48
avant tout merci pour ce boulot sur l'autocomplete,c le meilleur.
Neanmoins j'ais encore un soucis au niveau de la recuperation du paramètre de recherche ,il ne gere pas les espaces et les caractere accentués.
Pouvez vous m'aider SVP ,ca fait lontemps que je cherche
10 déc. 2010 à 15:19
Bravo pour ta source elle est au top !!
J'ai un problème, j'ai un menu dynamique en jquery est si je desactive la librairie du menu ton code fonctionne , c'est a dire le div apparait.
Mais lorsque je remets la librairie jquery alors le div ou la liste devrait apparaitre ne s'affiche pas !
Aurais tu une solution ?
Merci
5 mars 2010 à 11:44
j'ai le même problème que squatman en local ça ne marche pas, le problème vient probablement de la connexion à la bbd mais je comprend pas parce qu'elle est bien créée et les paramètres de connexion semblent bons. M'enfin si par hasard quelques années après quelqu'un repasse par ici avec une solution je suis preneur.
3 févr. 2010 à 03:56
3 févr. 2010 à 03:49
J'ai un petit problème...
Pour ton script ainsi que pour tous les autres scripts ajax d'autocompletion que j'ai essayé de faire tourner sur mon serveur wamp local, rien ne se passe.
Ca marche très bien pour ton mode "local" mais ton mode "ajax" ne marche pas chez moi.
Qu'en pense tu?
SQ
PS: oui, javascript est bien activé dans les paramètres du navigateur.
14 oct. 2009 à 15:38
Je viens de découvrir ton script qui vient me sauver la vie. Encore merci.
cependant, j'ai un souci.
J'ai un peu modifié l'affichage des résultats et ça fonctionne parfaitement. je souhaiterais pouvoir atteindre directement une page en cliquant sur un des résultats retournés par la recherche.
Merci
13 déc. 2007 à 18:04
Très bon code
Cependant la validation par clic de souris ne fonctionne pas alors que la touche Entrée fonctionne (et ceci que ce soit sous IE ou FF). Pour l'instant j'utilise simplement la démo et j'ai bien installé la base de données.
Merci de me donner des pistes
3 déc. 2007 à 17:21
C'est un très bon code mais j'ai deux questions puisque je suis pas expert en javascript et ajax:
1- Comment faire si je veux que le script m'affiche tjs des autocompletions si je separe les mots disons par /. Une fois je tape / et je retape un charactere je veux que le script m'affiche des propositions commencant par ce charactere.
2- Quelle fonction me permet une fois que je clique sur un mot propose d'afficher disons dans une autre div des resultats relies a ce mot?
Merci d'avance et bonne continuation
1 août 2007 à 14:51
Tout d'abord un grand bravo pour ta lib!! J'ai commencé à en faire une mais quand j'ai vu la tienne, j'ai tout de suite arrété ;-)
Voilà, j'avais juste un petit soucis pour la completion en Ajax vu que le choix de faire la completion sur le début et/ou la fin de chaine n'est pas paramétrable (logique vu qu'en Ajax, c'est à nous, pauvres utilisateurs de ta magnifique lib, de construire la requête SQL qui va bien). Du coup j'ai fait une requete type "SELECT mon_champ FROM ma_table where mon_champ LIKE ''" en me disant que je rajouterais les % par moi même dans le champ pour faire la completion à gauche et/ou droite. Et c'est là que j'ai eu quelques soucis vu que % est un caractère spécifique en HTML. Du coup je me suis permis de modifier légèrement ton code à la ligne 419 de l'autoCompleteur_lib.js pour remplacer le signe % par sa valeur en HTML à savoir %25:
avant : this.AjaxModePackage.parameters = this.AjaxModePackage.paramName+'='+this.element.value+'&limit='+this.globalOptions.nbrMaxItem;
après : this.AjaxModePackage.parameters = this.AjaxModePackage.paramName+'='+this.element.value.replace(/%/,"%25")+'&limit='+this.globalOptions.nbrMaxItem;
Du coup, ça marche impec :-D C'est peut-être pas franchement optimisé ou pas très intelligent de faire ça là, mais j'ai fait ça vite fait sans rentrer dans le détail de ton code.
Voilà, c'était juste pour te prévenir, des fois que tu ne te sois pas encore penché sur le sujet et que ça t'interesserais (il existe bien d'autres caractères spéciaux comme '&' mais je pense que tu sais ça mieux que moi)
Bon code
Yanou (admiratif de ta lib...)
28 juil. 2007 à 16:10
Je ne pense pas que ça soit le cas uniquement chez moi .. car j'ai utilisé la démo qui est fournie donc le code n'a pas été modifié du tout.
On peut le vérifier en activant la trace dans mysql comme cela puis en redémarrant mysql :
Exemple moi avec wamp, ajouter la variable log dans le block [wampmysqld] :
[wampmysqld]
log=C:/Server/Wamp/logs/queries.log
Pour un mysql classique :
[mysqld]
log=C:/Server/Wamp/logs/queries.log
Et franchement, je ne suis pas d'accord sur le fait que ce ne soit pas un problème car le but est d'avoir un code optimisé, pas de solliciter le serveur inutilement (sauf si le nombre de sessions est limité bien entendu ou qu'il s'agit d'un serveur de test)
Voilà, si quelqu'un peut me confirmer que je ne suis pas le seul ou a une solution, je suis preneur ;o))
Merci & @+,
PL
28 juil. 2007 à 13:37
Salut Apaligot, pour le problème des librairies en fait je redéfini certaines méthodes de Prototype tel que Position.clone et également certaines de la librairie Effects de scriptaculous donc en fait il faudrait que tu intègres les librairies scriptaculous et prototype en premier dans la balise HEAD puis tu intègres en dernier ma librairie normalement ca devrait passer.
Salut plefebvr_fr, je suis étonné du comportement de ma librairie chez toi, moi ca ne m'a jamais fait ca, donc ben désolé mais je peux pas t'aider mais cela dit ce n'est pas un problème non plus...
Bon courage à tous et merci
@+
25 juil. 2007 à 09:45
Merci pour le script !!
Mais j'ai une petite question, comment empêcher la requête ajax lorsqu'un choix a été effectué (via enter ou click par exemple) car 2 requêtes au minimum sont envoyées au serveur et la deuxième ne sert à rien,
Exemple, dans la démo fournie :
1. Je tape b dans le premier champ => 1 requête ajax (like 'b%')
2. Je choisi une des valeurs => Une requête ajax est envoyée au serveur avec le résultat (like 'Bad Company%')
Voici la trace mysql :
070725 9:42:43 16 Connect root@localhost on
16 Init DB autocompletion
16 Query SELECT DISTINCT
id,
titre
FROM
autocompletion_exemple
WHERE
titre LIKE 'b%'
ORDER BY
titre ASC
LIMIT
5
16 Quit
070725 9:42:46 17 Connect root@localhost on
17 Init DB autocompletion
17 Query SELECT DISTINCT
id,
titre
FROM
autocompletion_exemple
WHERE
titre LIKE 'Bad Company%'
ORDER BY
titre ASC
LIMIT
5
17 Quit
Merci bcp,
Pl
24 juil. 2007 à 14:37
Désolé pour le long temp de réponse, j'étais parti...
J'ai réussi à faire fonctionner le script (via l'intégration dans une classe PHP), mais lors de l'utilisation de plusieurs autocompletions dans le meme formulaire, les listes s'affichent toutes mais seule la première liste est séléctionnable (malgrès différents ID).
Mon second problemme est que j'ai du intégrer les librairies scriptaculous et prototype d'office dans mes pages. Du coup, ton script ne fonctionne plus. J'ai bien essayé de supprimer les entrées de autoCompleteur.js (Libraries: ['autoCompleteur_lib'],), mais sans succès. Est-ce possible d'utiliser ton script sans les librairies incluses ? Quelles sont les différences entre les librairies que tu utilise et les officielles ?
En te remerciant par avance pour tes réponses...
4 juil. 2007 à 15:47
sinon oui c est utres bon code j ai juste un petit souci si tu sait me dire ou c est
quand on selectionne une ville il retourne une url genre id=id4568 voila j ai un id en trop j aimerais voir id=456855... pour recupere les variable...
23 juin 2007 à 12:23
Ben pour ton 1er message concernant mon ancienne librairie cela ne fonctionne pas car le fichier PHP que tu appelles n'existe pas. Pour débugger je te conseille (sous FireFox) de télécharger le module complémentaire FireBug qui permet de tout voir dynamiquement et donc également les requêtes Ajax.
Puis concernant ton 2eme message je suis allé voir ton lien et pour moi cela fonctionne parfaitement !!! J'ai bien la liste des villes.
Voilà @+
21 juin 2007 à 16:45
http://all-dog.eu/auth1/ajax/auto3/
au fait pq ca ca ne marche pas ?
21 juin 2007 à 15:39
une demo de mes essais ton ancien code
http://all-dog.eu/auth1/ajax/auto2/exemple.php
firefox 1.8.4
sous ie pareils rien ne passe non plus ...
j ai passer plus de 6h a essayer le script dans tout les sens mais j y arrive pas ...
aucun des 4 telecharger
10 juin 2007 à 21:50
Est-ce qu'au moins la liste s'affiche ?
Est-ce que tu as créé toi même un fichier de réponse serveur ou as-tu utilisé le mien et si tu as utilisé le mien qu'as-tu modifié dedans ?
Plusieurs personnes ont eu le même problème sur FireFox mais j'avais résolu le problème depuis (voir commentaire des mises à jour). J'utilise ma source dans de nombreux projets et je n'ai jamais eu de problèmes par la suite sur tous les navigateurs.
Donc si tu me dis que mon exemple fonctionne parfaitement cela ne vient pas de FireFox mais d'un problème dans ton adaptation de ma source. Mais quoi... réponds aux questions précédentes ça m'orientera pour résoudre le problème.
10 juin 2007 à 19:42
bravo pour ton travail d'excellente qualité.
J'ai cependant un petit problemme... Ton exemple fonctionne impec sous FF, mais pas mon script... (alors qu'il fonctionne sous IE) : le champ ne se complète pas ni avec le clic ni avec la touche entrée, et les touches down et up ne fonctionnent pas non plus. Ma version de FF est la dernière : 2.0.0.4
Aurais-tu une piste, je cherche l'erreur depuis un moment mais je ne trouve rien... Pas d'erreur JS sur IE ni FF.
Voici mon code :
<script type="text/javascript">
document.getElementById("_marque_update").style.width = document.getElementById("_marque").offsetWidth+'px';
new AutoCompleteur('_marque', '_marque_update', 'inc/fieldcompletion.inc.php?field=marque', {
Ajax: { paramName:'deb' }
}
);
</script>
merci d'avance...
30 mai 2007 à 17:55
merci a mon nom et merci au nom de tous se que tu as aider je suis vraiment fiere de toi
25 mai 2007 à 13:08
afterValidate: function(element,updateElement,validatedElement,collectedText) {
if (validatedElement) {
element.value = collectedText;
var champs = validatedElement.id.split(\'_\');
document.getElementById(\'typedefilm\').value = champs[1];
document.getElementById(\'dateachat\').value = champs[2];
}
}
Merci encore !
Philippe
25 mai 2007 à 12:49
Et bravo pour ce code d'autocompletion, j'en ai vu pas mal en cherchant sur la toile mais soit "trop lourd", soit avec des erreurs..
Bref, le plus court est souvent le meilleur !!
J'ai une petite question tout de même (surement simplissime mais pas pour moi ;o)), je cherche à récupérer la valeur du premier champ "id" afin de renseigner d'autres champs du formulaire sans avoir à ré-interroger la base,
Exemple:
<li id="filmID_Action_13/05/2006" class="film">
La bataille des planètes
</li>
Pour remplir les champs du formulaires comme ça :
element.value = collectedText;
document.getElementById(\'typedefilm\').value = 'Action';
document.getElementById(\'dateachat\').value = '13/05/2006';
Mais il y a surement plus simple .. ;o)
Merci beaucoup,
Philippe
5 mai 2007 à 11:00
Merci infiniment.
16 avril 2007 à 09:09
16 avril 2007 à 09:08
Tout script est très bien !
j'aimerai le modifier un peu mais je ne sais pas trop comment faire. Voila, tes "propositions" faite pas l'auto-complétion s'affiche dans un div s'adaptant à la taille du champ texte de saisi. Moi, j'aimerai que si dans le champ en question je saisi plusieurs mots ou une phrase, le script ne fasse la recherche que depuis le dernier espace (mot en cours, mais ca c'est bon j'ai trouver comment faire), par contre j'aimerai afficher les résultats sous la forme d'un div dont la position gauche se cale sur la première lettre du mot considérer (je ne sais pas si je suis très clair ?)
croyez vous que cela est possible ? j'ai fais quelques recherches, je trouve facilement plein de script qui peuvent me donner la position du curseur de saisi en terme de nombre de caractères, mais pour positionner mon div comme je le veux, il me faudrait une sorte d'offset en pixel de ce curseur de saisi par rapport au left du champ de saisie. Je ne trouve aucune propriétés pour récupérer cette info, et son calcul à partir du nombre de caractères me parait difficile puisque dépendant de la taille de chaques lettre tappées dans la police utilisée....
si quelqu'un pouvait avoir une idée cela m'aiderait beaucoup...
merci par avance
cordialement
NiHaoMa
13 avril 2007 à 08:07
Voici le code (un peu adapté) dans le fichier php et dans le fichier html. Je récupère bien la valeur localité, mais jamais l'id. Merci.
1. dans film_sans_image.php
///////////////
SELECT DISTINCT
IDLoc as id,
txtLocalite
FROM
tbllocalites
WHERE
txtLocalite LIKE '".$_POST['localite']."%'
ORDER BY
txtLocalite ASC
LIMIT
".$_POST['limit']."
")
or die(mysql_error());
dbClose();
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
//////////////////////////////////////////////EXTRACTION DE LA REQUETE ///////////////////////////////////////////
$response = array();
while ( $result = MYSQL_FETCH_ARRAY($query,MYSQL_ASSOC) )
{
$response[] = array (
'id' => $result['id'],
'txtLocalite' => $result['txtLocalite']
);
}
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
/////////////////////////////// CREATION DE LA CHAINE DE CARACTERES ENVOYEE ////////////////////////////////////
$return = '';
for($i=0;$i<count($response);$i++)
{
$return .= '<li id="id_'.$response[$i]['id'].'" class="film">
'.$response[$i]['txtLocalite'].'
</li>';
}
$return .= '';
//////////////
2. Dans le fichier ".html"
...
<script type="text/javascript">
new AutoCompleteur('IDLoc', 'IDLoc_update', '<?php echo $dir_inc?>/autocompletion/traitement_php/film_sans_image.php', {
Global: {
nbrMaxItem: 100,
nbrCharsStart: 3,
classToIgnore: ' '
},
Ajax: {
paramName: 'localite'
},
Extra: {
afterValidate: function(element,updateElement,elementValide,text){
if (elementValide) { // Si on a validé un choix
element.value = text; // Remplir le champs texte par le choix
var id=elementValide.id; // Recupérer l'id de la LI (on en fait ce que l'on veut...)
// Tu peux donc affecter une Input Hidden avec la variable id etc...
}
},
openEffect: 'blind',
hideEffect: 'slide'
}
});
</script>
11 avril 2007 à 19:19
oui normal l'id c'est pas "elementValide.IDLoc" mais "elementValide.id"
voilà
@++
11 avril 2007 à 15:34
Très bon script.
Toutefois, j'ai beau relire et relire les explications que tu donnes concernant la récupération de l'ID dans un , j'obtiens désespérement un beau "0".
Dans le fichier php (dans ton exemple film_sans_image.php), j'ai bien les champs nécessaires dans la clause SELECT ainsi que dans l'array Response. Je reprends l'ID dans l'id du <li>.
Par contre, je coince ici : comment je récupère une valeur en javascript vers une valeur dans le hidden
afterValidate: function(element,updateElement,elementValide,text){
if (elementValide) { // Si on a validé un choix
element.value = text; // Remplir le champs texte par le choix
var id = elementValide.IDLoc; // Recupérer l'id de la LI (on en fait ce que l'on veut...)
// Tu peux donc affecter une Input Hidden avec la variable id etc...
}
},
Merci
4 avril 2007 à 17:21
Bon le problème est résolu !!! En fait ce problème apparait sous quelques versions de Firefox mais pas toutes, très bizarre quand même. Le problème ne m'était jamais arrivé et la en testant ben le problème était là... pourtant j'ai un ami qui utilise ce script sur son site et quand j'y vais il n'y a pas de problème... enfin bon c'est de l'aléatoire on va dire et que tu n'as vraiment pas eu de chances...
Pour info : c'était le 'keypress' qu'il fallait remplacer par 'keydown' car certaines versions de Firefox ne prennent pas en compte les évènements flèche bas,haut et les page down et page up lors du 'keypress' alors qu'il les prennent lors du 'keydown' mais bien sur tout cela est aléatoire car je n'ai pas tout le temps le problème.
La source a été mise a jour donc tu peux la télécharger
@+
4 avril 2007 à 16:07
Pour les recherches à l'intérieur des chaines en mode Ajax c'est à toi de créer ta propre requête MySQL.
par exemple pour une recherche normal : LIKE 'blabla%'
par exemple pour une recherche à l'intérieur : LIKE '%blabla%'
La recherche intérieure en mode Ajax se fait manuellement et pas par une option
Voilà
4 avril 2007 à 16:04
Bon je vais y regarder de plus près dès que j'ai un petit moment.
4 avril 2007 à 10:58
la suite de mes aventures , j'ai testé en passant par le php j'arrive à mes fins concernant mon problème d'accents,
par contre je n'ai plus accès aux recherches même à l'intérieur des chaînes (ex: on recherche 'te' => raquette convient). c'est pour cela que j'utilisais le mode local.....
y a t-il moyen d'implémenter la recherche à l'intérieur des chaines en mode ajax ?
d'avance merci de tes réponses
cordialement
tokyo
1 avril 2007 à 23:34
Après avoir fait de multiples tests et autres manips (différentes versions de FF, sous différents ordis), je n'arrive toujours pas à comprendre pourquoi les flèches KEY_UP et KEY_DOWN ne réagissent pas sur FireFox. J'ai retélécharger le code source sur ce site et sans rien modifier, les flèches ne réagissent pas pour naviguer dans la liste de suggestion (pour les cas par exemples 2 et 4 - cas locaux). J'ai pu tester d'autres exemples d'autocompletion où les flèches fonctionnent bien sous FF, d'autant que sur ta première librairie d'autocompletion, cela marche bien!
Cela m'handicape beaucoup, d'autant que ta librairie est vraiment géniale (je recherchais ca depuis longtemps).
D'autre part, je l'ai configuré pour qu'il soit possible de prendre en compte d'autres paramètres actifs de la page (pour par exemple faire une suggestion en conséquence de ce qui a été saisie plus haut dans un formulaire - exemple typique, la mise à jour de liste déroulante sur le code postal et et ville, mais sous forme de suggestion et non de listes deroulantes). Bref, si cela t'interesse... afin de l'etoffer pour une version future.
Merci, de rejeter un oeil sous mon probleme de fleches, je t'en serai infiniment reconnaissant ou tout du moins de me donner une piste serieuse
Cordialement
--
benoit.beaudenon@hotmail.fr
27 mars 2007 à 18:23
Je fais des tests avec ta bibliothèque qui est très bien pensée. J'ai juste un petit souci d'affichage avec Internet Explorer lors de l'affichage de la liste d'autocompletion.
Le div semble masquer du texte qui se trouve au dessus de l'input. Ce problème n'apparait pas sous FF (je n'ai testé qu'avec IE 6, je n'ai pas de machines windows à disposition et le progiciel que je développe sera majoritairement utilisé sous IE).
Je peux au besoin faire une démo.
Julien
26 mars 2007 à 22:37
Je t'assure que tout est ok sous FF. C'est d'ailleurs dans ce sens que je code :
- Sur FF
- Fix sur IE et autres...
Donc pour moi tout est ok (sur la derniere version ca passe aussi et sur l'ancienne aussi).
Le problème ne vient pas de ma librairie
26 mars 2007 à 01:44
Je ne sais pas si je suis le seul à avoir ce soucis, mais les touches KEY_UP, KEU_DOWN, KEY_PAGEUP et KEY_PAGEDOWN ne répondent pas sous FF. Tout ce passe bien sur IE. En remplacant KEY_UP par KEY_LEFT dans le fichier Autocompleteur_lib.js (ligne 270 environ), il se passe bien se qui devrait se passer avec la fleche du haut.
J'utilise bien la derniere version de FF. Pourrais-tu m'apporter un element de reponse. Merci
14 mars 2007 à 18:40
cela ne sert a rien que je rajoute une option comme celle la car la recherche dans la base de données c'est pas ma librairie qui la fait !!!! mais c'est le script php.
Et donc je reviens encore à ce que je t'ai dis dans mon post précédent il faut que tu enleves les accents dans le script php juste avant le SELECT dans la base.
Comme c'est expliqué dans la documentation fournie le script php et personnel et c'est à vous de modifier pour faire ce que vous souhaitez.
En tout cas tu n'arrivera a rien en modifiant le javascript...
Voilà @+
14 mars 2007 à 17:02
tout d'abord, merci de ta réponse.
en fait je voudrais que la saisie soit insensible aux accents comme c'est possible pour la casse.
mais je ne vois pas comment faire.
c'est pour cela que j'essayais de transformer les caractères saisis, mais effectivment cela ne peut pas marcher.
il faudrait en fait enrichir ta librairie avec une possibilité supplémentaire genre ignorerAccents, c'est cela ?
tokyo
13 mars 2007 à 20:57
Ben c'est normal car dans l'input texte c'est seulement l'affichage que tu changes mais l'affichage se fait après que ma librairie ait envoyé la requete Ajax.
Je n'ai pas trop compris comment tu effectues tes test dans le script php appelé par Ajax mais peut être que tu pourrais essayer en php dès le début du script de convertir la chaine passée en POST en majuscule et en enlevant les accents. Et ensuite de faire la recherche dans la base.
Voilà mais sans certitudes car je n'ai pas entièrement compris.
@+
13 mars 2007 à 13:27
personne n'a d'idée ou de piste sur mon message du 6/03 ?
j'avoue m'être bien trituré les neurones, je ne comprends pas pourquoi j'arrive à rendre insensible aux accents sur la première lettre et pas sur les autres....
à l'aide...
tokyo
8 mars 2007 à 09:37
8 mars 2007 à 06:54
APACHE 2, PHP 4.4.0 (virtual directory a OFF), MySql 4.x.
Sous windows ok (easyphp 1.8 virtual directory a On.
Je vais vérifier la casse des noms des répertoires et fichier.
Merci RUBIK
Franck.
7 mars 2007 à 18:35
Pour régler ce problème tu doit ajouter la propriété autocomplete à l'input texte : par exemple :
le seul problème avec cette propriété c'est quelle n'est pas valide W3C... mais bon c'est la seule façon de faire.
Voilà ++
7 mars 2007 à 16:53
j'ai de nouveau un petit souci:
lorsque l'utilisateur a déjà saisi un mot après sélection dans le formulaire (en version AJAX) s'il retourne sur la page et qu'il veut saisir les mêmes lettres, il a 2 listes de choix qui se superposent (celle gérée par l'autocomplétion + celle qui garde en mémoire ce que l'utisateur a tapé)
est ce dû à un problème de codage? on peut le solutionner?
je ne sais pas trop quoi faire car du coup les 2 listes se superposent...
merci de votre aide
jp
7 mars 2007 à 13:55
Je ne pense pas que c'est un problème de chemin. As-tu essayer tous les exemples ?? car le 1 et 3 ne fonctionnent que si un serveur php est présent alors que le 2 et 4 fonctionnent meme sans serveur étant donné que c'est en mode local.
Es-tu sûr d'avoir un serveur php? quel es ta version d'apache sous ton linux ? car sous linux ou windows il n'y aucune différence tant que les serveurs apache, php et mysql fonctionnent.
Voilà @+
7 mars 2007 à 11:24
7 mars 2007 à 11:22
aucun pb sous ie et firefox.
J'ai un autre pb, sur ma machine de developpement (w2000, easyphp 1.8) mon code fonctionne parfaitement. Sur le serveur linux, meme code, aucun message erreur et aucune réaction du champs (je fais A pas de réponse)...
6 mars 2007 à 12:58
je ne maitrise pas trop javascript.
j'ai intégré le script dans mon appli tout fonctionne bien.
cependant j'aurais aimé rendre la saisie insensible aux accents, comme c'est le cas pour la casse.
voici ce que j'ai fais,
-dans ma liste (données qui viennent d'une bd), je la débarasse de ses accents et je mets en majuscule, donc le contenu de la liste s'affiche bien en majuscule et sans accents (LocalArray)
j'ai crée une fonction qui se lance sur la saisie d'une lettre dans le champ input (exemple2),
cette fonction me permet de remplacer les lettres saisies et de les substituer ainsi si j'entre un é, il est trasformé en E.
cela fonctionne bien sur la première lettre, je peux taper e,é, è, E indiféremment et j'obtiens biens mes éléments qui figure dans ma bd.
par contre , imaginons que j'ai dans ma bd le terme electrode enrobée.
je transforme cela en ELECTRODE ENROBEE pour que cela apparaisse dans ma liste,
si je tape :
é ou e, j'obtiens bien mon ELECTRODE ENROBEE, si je tape enrobee, pas de pb je l'obtients toujours. si je tapes enrobée, là je n'ai plus rien dans ma liste.
qu'est ce j'ai loupé, peut être faut il jouer avec exemple_update ? je vois pas comment...
est-ce faisable ?
merci d'avance si vous avez une idée ?
tokyo
2 mars 2007 à 13:21
je m'en sors
bonne continuation
2 mars 2007 à 00:03
Dans le fichier php qui génère la liste il faut que tu affectes un id à chaque proposition representée par une LI.
Puis il faut que tu redéfinisses la fonction afterValidate par exemple :
afterValidate: function(element,updateElement,elementValide,text){
if (elementValide) { // Si on a validé un choix
element.value = text; // Remplir le champs texte par le choix
var id = elementValide.id; // Recupérer l'id de la LI (on en fait ce que l'on veut...)
// Tu peux donc affecter une Input Hidden avec la variable id etc...
}
}
La redéfinition de la fonction se fait dans le sous objets Extra de l'objet options comme l'exemple 3 fournis.
Voilà je pense que cette fois tu as compris.
@+
},
1 mars 2007 à 21:06
oui ce n'est sans doute pas très compliqué pour toi... mais je n'ai pas ton niveau en javascript... ;o(
j'ai bien compris le déroulé et la méthode qui ensuite affectée pour rediriger vers une autre page
ce que je me dis:
il faudrait rajouter dans exemple.html un autre input type:
et que AutoCompleteur récupère ce fameux id (en + de la valeur qu'il retourne par défaut dans les exemples de ton script)
mais c'est pas facile....
1 mars 2007 à 20:31
Oui tu as donc remarqué que je n'utilise pas de formulaire et que la soumission d'un formulaire peut se faire par javascript en redefinissant la méthode afterValidate.
Tu peux d'ailleurs regarder les exemples que je fournis avec la doc pour comprendre comment et l'intérêt de pouvoir redéfinir cette méthode à sa guise.
En ce qui concerne l'id j'ai expliqué une méthode et l'ai implémenté en exemple dans l'exemple 3 que je vous ai fournis. (si on valide un film alors cela nous redirige vers une page avec son id en parametre) et pour comprendre comment je fais je te conseille de regarder dans le fichier de génération en php (la méthode et d'insérer l'id dans l'id de la balise LI) enfin tu comprendras mieux en analysant mon code dans le fichier PHP ainsi que la méthode afterValidate de l'exemple 3 (a voir dans le fichier HTML)
Voilà il n'y a rien de compliqué mais si jamais tu bloques n'hésites pas.
Bonne prog
1 mars 2007 à 16:06
j'ai avancé à partir de tes scripts et désormais tout fonctionne bien (je n'avais pas vu qu'en fait tu n'utilisais pas de formulaire à la base)
par contre là où je coince c'est que je n'arrive pas à récupérer dans un champ caché (input type hidden) la valeur de l'id de la sélection...
si jamais tu as des pistes à me laisser...
merci
jp
1 mars 2007 à 11:04
merci pour toutes les explications et codes que tu nous proposes. je commence à un peu mieux comprendre ce mécanisme que j'ai découvert hier... et de permettre d'éviter les listes de centaines d'éléments c'est génial...
par contre je me pose quelques questions pour adapter ton code à mon appli... et surtout qu'en est il par rapport à la soumission du formulaire...
je m'explique...
j'ai déjà un formulaire actuellement (avec malheureusement des select qui font apparaitre des centaines de lignes...). je compte donc remplacer mes select par ton script d'autocompletion.
à la saisie des lettres et lorsqu'on clique sur le mot choisi , est ce que le formulaire est soumis ou pas?
je souhaite que non, car la sélection d'un mot n'est qu'une partie de mon form, et je souhaite qu'il reste 'soumis' que lorsque l'utilisateur clique sur le bouton de validation...
merci en tous les cas
28 févr. 2007 à 08:56
merci Rubik.
Je test.
Franck
28 févr. 2007 à 01:41
En ce qui concerne la double recherche c'est à toi de creer ton propre fichier de traitement en php ou tout autre langage serveur. Les fichiers php de traitement que j'ai inclus sont à titre d'exemples pour faire fonctionner l'exemple de la liste de films.
Si tu as lu la doc fournie j'ai indiquer que la seule chose à absolument faire c'est de renvoyer du code html sous forme de liste UL LI avec les LI étant les propositions. Après la requête doit être faite exprès pour l'utilisation que tu veux et donc tu peux récupérer tout ce que tu veux.
En ce qui concerne ton problème avec FF c'est très bizarre car personne n'a eu de problème jusqu'à présent avec les versions 1.5 ou 2.0 et plus. Peut-être que tu as une version antérieure mais meme une version antérieure devrait fonctionner. Tu devrais essayer de mettre à jour FF et vérifier... mais vraiment bizarre.
Voilà
27 févr. 2007 à 22:26
Exemple de mon cas sur une application comptable:
L'utilisateur saisie dans le meme champs un numéro de compte ou le nom du compte...
Merci. Franck
27 févr. 2007 à 22:03
Voila, voila. C'est sans doute une erreur de ma part. Je te remercie.
Franck.
27 févr. 2007 à 18:46
Je ne comprends pas pourquoi cela ne fonctionne pas pour toi sous firefox. Et franchement le code est plus compatible sous FF que sous IE meme si on ne voit pas la différence car j'ai tout fait pour corriger les bugs d'IE.
Je tiens meme à dire que l'autocomplétion fonctionne et s'affiche exactement sous les navigateurs IE, FF, NETSCAPE ET OPERA. Je n'ai pas pu tester sur d'autres navigateurs.
Mais sinon sous FF tu as une erreur javascript ?? si oui laquelle ?? sinon que ce passe-t-il ??
27 févr. 2007 à 13:57
Merci Rubiks
30 janv. 2007 à 14:01
Ben bizzare que tu poses une question aussi simple... car on choisit le nombre de résultats à afficher dans la création de l'autocompléteur, dans l'objet des options ou sinon si on ne définie aucune limite 5 résultats sont affichés par defaut.
regarde le code source du fichier exemple.html et tu verras dans un des exemples la variable "nbrMaxItem" qui est définie dans le sous-objet Global de l'objet des options.
Voilà pour d'autres questions n'hésitez pas.
@+
30 janv. 2007 à 11:13
mais ou se trouve la variable qui détermine le nombre
de résultats affichés?
A+
Ps: un tres bon boulot!!!
Impressionant
18 déc. 2006 à 23:11
Ben non c'est pas une astuce pour un débutant, le principe de l'autocomplétion c'est de donner les résultats qui correspondent le mieux à l'entrée de l'utilisateur...
Donc par exemple si on prend mon exemple 2 si tu tapes "a" tu as les 10 premiers résultats mais pour faire apparaitrer le reste il faut affiner la recherche soit en tapant "aa" puis ensuite "ab" etc.... c'est le principe même de l'autocomplétion!!!
Car on s'imagine que même en affichant tous les résultats dans une div scollable si la source est par exemple un dictionnaire complet alors avec "a" la div scrollable contiendrait plus de 1000 ou 2000 éléments donc ce n'est pas raisonnable.
Voilà donc la seule réponse que je peux te donner c'est l'affinement de la recherche et donc une utilisation normale de l'autocomplétion.
Merci pour les commentaires
@+
18 déc. 2006 à 13:19
j'ai regardé ton code, c'est super !
cependant je me pose une question de béotien, comment faire pour faire apparaitre le résultat dans une liste déroulante ? Comment faire pour ne pas limiter le nombre de réponses sans que cela sature le système ?
exemple : si je fais une recherche sur a, par défaut j'obtiens (exemple 2) les dix premiers éléments contenant en première lettre a, comment l'utilisateur fait il pour accéder aux autres valeurs ?
si quelqu'un à une astuce pour un débutant ?
merci
tokyo
24 nov. 2006 à 11:13
Je t'ai ajouté à mes contacts msn. j'attends de te voir en ligne pour que l'on échange sur le sujet.
@ bientôt !
mon msn : Buz_16@hotmail.com
22 nov. 2006 à 18:12
Bon sinon cela est relativement long pour t'aider en passant par le forum
donc si tu veux voici mon msn : ocbslim@tiscali.fr
Comme cela tu pourras me demander ce que tu comprends pas et si jamais tu es motivé que je t'explique en détail le fonctionnement, et aussi pour reparler de ton idée de faire de l'autocomplétion sur 2 champs en même temps car j'ai toujours pas bien saisi exactement ton problème.
Voila donc si tu es motivé... n'hésites pas.
@+
22 nov. 2006 à 12:20
Mais ce n'est pas bien grave.
J'ai déjà un annuaire qui fonctionne grâce à ton code précedent, j'aurais voulu l'enrichir de plusieurs recherches supplémentaires. La recherche s'effectue actuellement sur le nom, j'aurais voulu l'enrichir d'une recherche sur le numéro de telelphone par exemple.
Je pense ne pas être assez calé en javascript pour comprendre tout ton code...
Désolé...
Mais merci pour ton aide.
21 nov. 2006 à 18:52
Regarde par exemple l'exemple 3!!! C'est exactement le meme système que mon ancienne source : lorsque tu valides un choix ca te redirige avec la valeur de l'id du film et lorque tu valides sur aucun champs alors ca te redirige vers une recherche... bien sur sur mon exemple j'ai pas fais comme pour l'ancienne source un affichage du style : " film id = ????? etc..."
Mais regarde la barre d'adresse et tu véras!!! et donc pour voir comment je fais regarde la fonction " afterValidate " de l'exmple 3 et regarde aussi comment je récupère l'id du film!!!
en fait je fais comme ca : <li id="id du film">Titre du film</li>
Mais après c'est à toi de te faire ton propre fichier php qui va traiter les requetes
tu pourrais faire par exemple : <li id="champs1_champs2_champs3_champs4_etc...">Nom qui apparaitra dans ton autocomplétion</li>
et après dans ta propre fonction afterValidate tu peux récupérer tous les champs en faisant
"var champs = elementValide.split('_')"
Tu comprends ??
21 nov. 2006 à 14:45
@+
20 nov. 2006 à 15:17
J'ai oublié de changer lors de ma dernière modification
donc tous les $_POST['post'] doivent être changé en $_POST['film']
c'est à dire dans les 2 fichiers php
la ligne : $_POST['post'] = utf8_decode($_POST['post']);
doit être : $_POST['film'] = utf8_decode($_POST['film']);
Merci de cette remarque buz_16!! cela dit cela ne vient pas de ma librairie javascript (heureusement... lol) ca vient juste de l'exmple que j'ai codé a la va-vite.
Ben sinon si tu ne comprends pas tout et que tu arrives vraiment pas à comprendre alors n'hésite pas... je suis la pour ca... lol
@+
20 nov. 2006 à 12:16
Effectivement, je merdais un peu...
Sorry...
Ceci dit, j'ai un "Notice : Undefined index: post in "C:\ program files....\fil_avec_image.php on line 33" dans les listes renvoyées dans la page des champs exemple 1 et 3.
Et j'avoue ne pas comprendre le fonctionnement dans sa globalité. Je regarde ça de plus près.
20 nov. 2006 à 11:50
Et au fait petit rappel pour mon exemple en ajax..
le nom de la base de données doit être : " autocompletion "
le nom de la table doit être : " autocompletion_exemple "
voilou
++
20 nov. 2006 à 11:48
non tu n'oublies pas de paramètre !!! car pour les cas 1 et 3 c'est de l'ajax et donc il faut creer la base de données mais c'est la même que mon ancienne librairie d'autocomplétion donc normalement tu ne devrais pas avoir de problème.
Mais aussi même si c'est une page html il faut l'ouvrir avec un serveur!!!! pas cliquer directement dessus sinon c'est sur cela ne marche pas.
Sinon pour le cas 4 tape : M en majuscule!!!! oui car pour le cas 4 j'ai mis l'option respect des majuscules et mon tableau local est le début d'un dictionnaire et pour raison de place il n'y a que des noms propres...
voilà
et je t'assure que tout fonctionne normalement.
Merci pour vos commentaires
@+
20 nov. 2006 à 10:24
20 nov. 2006 à 10:08
20 nov. 2006 à 09:37
19 nov. 2006 à 20:36