PHP - formulaire de recherche dynamique [Fermé]

Signaler
-
 demicerveau -
J'aimerais créer un formulaire de recherche en PHP. Jusque là tout va bien. La difficulté est de le rendre vraiment dynamique et pas seulement au moment où la page se charge.
C'est à dire, dans un champ de saisie l'utilisateur commence à entrer un mot correspondant à un enregistrement dans une base mysql. Au fur et à mesure qu'il tape les lettres du mot, une liste affiche en même temps les enregistrements correspondant à cette orthographe.
Ce qui permet d'effectuer une recherche sans connaître vraiment la syntaxe du champ. Il pourra en suite choisir dans la liste en cours de saisie le champ souhaité, ce qui remplira correctement le champ de départ.

Je pense que pour ceci, il va me falloir rajouter du code javascript ou DHTML. Le langage principal de l'application restant du PHP

Merci de bien vouloir me dire si déjà c'est possible, vers quel langage me tourner (langage web), et si il existe un tutaux expliquant la marche à suivre. Ou toute autre info pouvant m'aider, je suis preneur.

9 réponses

JEROMAX peux-tu m'orienter sur quelques liens qui expliquerai comment le faire en Ajax ? J'ai fait quelque recherche et je retombe toujours sur ce topic .. hihi

merci
1
Merci

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

CCM 86680 internautes nous ont dit merci ce mois-ci

StreM
Messages postés
519
Date d'inscription
lundi 18 octobre 2004
Statut
Membre
Dernière intervention
28 février 2007
121
Ca fait un peu troll, mais bon, c'est pour rendre service ;-)

http://www.phpriot.com/d/articles/php/application-design/google-suggest-ajaxac/index.html
http://www.developertutorials.com/...
http://blogoscoped.com/archive/2004_12_11_index.html#110276834555565307
Messages postés
278
Date d'inscription
jeudi 22 février 2001
Statut
Membre
Dernière intervention
7 octobre 2013
8
En gros, il n'y a que 2 solutions:
soit tu fais tes recherches sur le serveur soit sur le client
- Sur le client, la recherche sera théoriquement plus rapide puisque toutes les infos seront dispo (mais ta page sera énorme en terme de poids puisqu'il te faudra tout rapporter sur le navigateur...)
- sur le serveur, tu peux vraiment faire tes requètes en temps réél, mais là il te faut une pu****n de connexion...
Je pense que c'est quand même cette solution la mieux.
A chaque caractère saisi tu appelle un script php qui rempli ton combo. Je pense que si ta base est bien faite et si le client a une bonne connexion, ça devrait fonctionner, pas instantanément, mais 2 ou 3 sec après la saisie, ta combo peut être remplie.

[ JEROMAX ] 
http://www.zepixel.com http://www.jeromax.free.
Merci Jeromax de traduire ce que je dis ;-)
J'ai tjs eu un pb pr expliquer...
Messages postés
278
Date d'inscription
jeudi 22 février 2001
Statut
Membre
Dernière intervention
7 octobre 2013
8
oups désolé...

[ JEROMAX ] 
http://www.zepixel.com http://www.jeromax.free.
Merci pour tout ces conseils! Je vois mieux maintenant les solutions, et les problème à affronter! Je vais essayer de voir si je reste sur cette idée, ou si je le rend semi dynamique.
L'utilisateur tapera quelques lettres puis chargera de la base les enregistrements qui s'y repporte. Donc plus en même temps qu'il écrit.
Je vais voir ce qui va le mieux pour mon appli

Merci encore
Messages postés
278
Date d'inscription
jeudi 22 février 2001
Statut
Membre
Dernière intervention
7 octobre 2013
8
je retombe la dessus....
Et dire que maintenant ça se fait très bien et très simplement en ajax :-)))
En un, tu fais une table mysql qui contient des mots qui pourront etre recherchés.
Ensuite, dans ton code du input, tu ajoutes : onkeydonw="mafonctionjsquirequetelephp(this.form)"

Apres, tu créé un script javascript :
function mafonctionjsquirequetelephp(formul) {
var mot=formul.mot.value // mot symbolise le champs input
var retour="file('www.monsite.fr/script_controle.php?mot='+mot);
return retour
}

// Puis la fonction sjax file :
function file(fichier)
{
if(window.XMLHttpRequest) // FIREFOX
xhr_object = new XMLHttpRequest();
else if(window.ActiveXObject) // IE
xhr_object = new ActiveXObject("Microsoft.XMLHTTP");
else
return(false);
xhr_object.open("GET", fichier, false);
xhr_object.send(null);
if(xhr_object.readyState == 4) return(xhr_object.responseText);
else return(false);
}


Voila pour le html et javascript coté client
tu n'as plus qu'à t'interresser au script php qui dans l'exemple s'appelle script_controle.php et qui est un secret de cuisine de mon boss (ne me demandes pas de citer ici le contenu du script)
N'oublies pas que plus il est rapide, moins ton script mettra de temps pour afficher le mot trouvé (word like '%$morceau_mot%' dans la requete prends un temps fou alors évite cette solution, pour ma part j'ai fait word like '$debut_mot%').
j'ai oublié, dans mafonctionjsquirequetelephp au lieu de return retour, tu peux faire formul.mot.value=retour;
Fiooouuuu !

T'es parti pour t'amuser !
Je pense que le DHTML serait le plus performant. Mais il te faudra surment un peu de JS... Par contre, là ou tu va avoir du mal, c'est de chercher en mm tps qu'il tape ! Tu peux faire une fonction qui s'execute a chaque touche frappée, mais ca mettra du temps,
OU
charger tous les champs de ta bdd dans ton fichier html, et afficher avec du DHTML les champs qui ressemblent.
Ou sinon, tu peux utiliser SOUNDEX pour faire une recherche large de ta bdd, mais ce ne sera pas dynamique...

En tout cas, previens moi dès que tu as réussi, ca m'interesse !