Rechercher : dans
Par :

PHP - formulaire de recherche dynamique

Dernière réponse le 1 mai 2007 à 22:43:38 nico, le 27 avr 2004 à 17:23:05 
 Signaler ce message aux modérateurs

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.

Meilleures réponses pour « PHP formulaire de recherche dynamique » dans :
[PHP] Upload de fichiers VoirLe langage PHP permet de gérer des fichiers envoyés (uploadés) grâce à un formulaire HTML. Formulaire d'envoi de fichiers Configuration de PHP pour permettre l'upload Récupération du fichier avec PHP Formulaire d'envoi de fichiers La...
[Webmaster] Un formulaire de contact pour votre site VoirCe formulaire permet d'avoir une page pour être contacté sur son site, sans utiliser de logiciel de messagerie. La personne qui vous contacte indique son adresse, l'objet du message et son message (évidemment). Le code est une version...
PHP - Créer un moteur de recherche VoirIdée générale Le moteur de recherche ci-dessous ne correspond qu'à une idée possible de moteur de recherche simple, ne gérant qu'un seul mot clé. Le concept du fonctionnement de ce moteur est de créer une base de donnée contenant les mots clés de...
PHP - Récupération de données VoirPHP rend très simple la récupération de données envoyées par l'intermédiaire de formulaires HTML. Création d'un formulaire Grâce à la balise FORM du langage HTML, il est très simple de créer des formulaires comprenant : des champs de saisie des...
PHP - Génération d'images VoirPrérequis PHP permet de créer des images au format GIF à l'aide d'une librairie de fonctions prévue à cet effet. La librairie permettant de créer et manipuler des fichiers graphiques se nomme GD, ainsi, pour pouvoir utiliser ces fonctions il faut...

1

StreM, le 27 avr 2004 à 17:53:08

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 !

Répondre à StreM

2

JEROMAX, le 28 avr 2004 à 10:48:57

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.

Répondre à JEROMAX

3

StreM, le 28 avr 2004 à 10:55:25

Merci Jeromax de traduire ce que je dis ;-)
J'ai tjs eu un pb pr expliquer...

Répondre à StreM

4

JEROMAX, le 28 avr 2004 à 16:12:41

Oups désolé...

[ JEROMAX ] 
http://www.zepixel.com http://www.jeromax.free.

Répondre à JEROMAX

5

nico, le 29 avr 2004 à 12:40:41

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

Répondre à nico

6

JEROMAX, le 1 fév 2007 à 15:02:54

Je retombe la dessus....
Et dire que maintenant ça se fait très bien et très simplement en ajax :-))) [ JEROMAX ]

Répondre à JEROMAX

7

naab, le 27 fév 2007 à 13:42:54

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

Répondre à naab

8

StreM, le 28 fév 2007 à 01:19:04

Ca fait un peu troll, mais bon, c'est pour rendre service ;-)

http://www.phpriot.com/...
http://www.developertutorials.com/...
http://blog.outer-court.com/archive/2004_12_11_index.html#11­0276834555565307
Moins le blanc est intelligent, plus le noir lui parait bête­

Répondre à StreM

9

demicerveau, le 1 mai 2007 à 22:40:31

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%').

Répondre à demicerveau

10

 demicerveau, le 1 mai 2007 à 22:43:38

J'ai oublié, dans mafonctionjsquirequetelephp au lieu de return retour, tu peux faire formul.mot.value=retour;

Répondre à demicerveau
Collection CommentÇaMarche.net