Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1450 connectés 

  FORUM HardWare.fr
  Programmation
  PHP

  champs text interactifs

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

champs text interactifs

n°1893951
Yagmoth
Fanboy
Posté le 11-06-2009 à 08:28:28  profilanswer
 

Petite requête car je ne sais par quoi commencer...
 
Le but : l'utilisateur entre pour une recherche un code postal ; le souci étant qu'un code postal peut correspondre à plusieurs villes, donc je souhaiterai que lorsque l'utilisateur est en train de remplir le champ, une liste des possibilités apparaissent dans une liste en dessous.
 
On voit un exemple un peu comparable sur le site http://www.logic-immo.com.
 
Ce dont je dispose : une BDD avec l'index des villes et des codes postaux, les connaissances pour faire des recherches dans la BDD...
 
Question : est-ce que je suis condamné à faire quelque chose entièrement en javascript ? Il n'y a pas une solution un peu plus élégante ?


---------------
L'ennemi est bête : il croit que c'est nous l'ennemi alors que c'est lui !
mood
Publicité
Posté le 11-06-2009 à 08:28:28  profilanswer
 

n°1893953
flo850
moi je
Posté le 11-06-2009 à 08:43:37  profilanswer
 

oui , mais la partie js peut etre légère
le js peut être élégant  
 
sur l'evenement onkeyup de ton champ , tu lances une fonction js qui se charge d'aller récupérer la liste des possibilité déjà formattée en php , et tu l'injecte dans ta page


---------------

n°1893960
Yagmoth
Fanboy
Posté le 11-06-2009 à 09:08:42  profilanswer
 

Je vais voir de ce côté là ; cependant une petite question quand même, comment fait-on pour indiquer à la BDD de retourner toutes les données commençant par un motif donné ?

 
Code :
  1. $debut='pa';
  2. mysql_query("SELECT ville FROM geo WHERE ... et là je coince :D" );
 

Edit : c'est bon, opérateur LIKE.


Message édité par Yagmoth le 11-06-2009 à 09:10:37

---------------
L'ennemi est bête : il croit que c'est nous l'ennemi alors que c'est lui !
n°1893977
Yagmoth
Fanboy
Posté le 11-06-2009 à 09:38:28  profilanswer
 

Autre souci à présent, on dirait que ma base MySQL fait des siennes : quand je fais par exemple un  
 

Code :
  1. mysql_query("SELECT ville FROM geo WHERE ville LIKE 'p%'" )


 
Il me retourne bien quelques valeurs (Parisot, Pereille, Plaisance...) mais pas toutes les valeurs correspondantes (il manque par exemple Paris). Une idée ?


---------------
L'ennemi est bête : il croit que c'est nous l'ennemi alors que c'est lui !
n°1893982
Hermes le ​Messager
Breton Quiétiste
Posté le 11-06-2009 à 09:44:39  profilanswer
 

Yagmoth a écrit :

Autre souci à présent, on dirait que ma base MySQL fait des siennes : quand je fais par exemple un  
 

Code :
  1. mysql_query("SELECT ville FROM geo WHERE ville LIKE 'p%'" )


 
Il me retourne bien quelques valeurs (Parisot, Pereille, Plaisance...) mais pas toutes les valeurs correspondantes (il manque par exemple Paris). Une idée ?


 
Si ton but c'est de faire apparaitre une liste des villes commencant par tel ou tel motif de lettres, AJAX +  JS + PHP n'est pas la bonne méthode. C'est lourd pour rien.
 
Tu te contentes de générer via PHP la liste de toutes tes villes dans un tableau JS une fois pour toutes dès le départ et tu fais ta recherche ensuite en JS à l'évènement onkeyup ou onchange, cela dépend...


---------------
Expert en expertises
n°1893984
Yagmoth
Fanboy
Posté le 11-06-2009 à 09:47:49  profilanswer
 

Hermes le Messager a écrit :

 

Si ton but c'est de faire apparaitre une liste des villes commencant par tel ou tel motif de lettres, AJAX +  JS + PHP n'est pas la bonne méthode. C'est lourd pour rien.

 

Tu te contentes de générer via PHP la liste de toutes tes villes dans un tableau JS une fois pour toutes dès le départ et tu fais ta recherche ensuite en JS à l'évènement onkeyup ou onchange, cela dépend...

 

Je vais devoir me pencher un peu plus sur le JS et les tableaux associatifs en particulier alors (que je connais assez peu :/)

 

Mais ça m'intéresse quand même de savoir pourquoi la BDD n'arrive pas à me renvoyer la liste des villes par contre :D (et ceux d'autant plus que quand je fais une recherche similaire, mais par code postal, ça fonctionne :/)


Message édité par Yagmoth le 11-06-2009 à 09:59:01

---------------
L'ennemi est bête : il croit que c'est nous l'ennemi alors que c'est lui !
n°1893995
casimimir
Posté le 11-06-2009 à 10:01:50  profilanswer
 

le like est sensible a la casse tu fais sans doute ta recherche avec like 'p%'  et dans la db tu dois avoir 'Paris' (ou l'inverse)

n°1894006
Yagmoth
Fanboy
Posté le 11-06-2009 à 10:07:20  profilanswer
 

casimimir a écrit :

le like est sensible a la casse tu fais sans doute ta recherche avec like 'p%'  et dans la db tu dois avoir 'Paris' (ou l'inverse)


 
J'y ai pensé, j'ai déjà reremplie la base entièrement en minuscule, le problème persiste (et soit dis en passant, le LIKE '%p' me renvoyait bien des mots commençant en majuscules avant... donc la sensibilité à la casse ne doit pas exister sur des données de type varchar).


---------------
L'ennemi est bête : il croit que c'est nous l'ennemi alors que c'est lui !
n°1894012
deliriumtr​emens
sic transit intestinal...
Posté le 11-06-2009 à 10:14:43  profilanswer
 

tu peux toujours essayer un
 
where TRIM(ville) LIKE 'p%';
 
Histoire de voir s'il n'y aurait pas des espaces mal placés...
 
Fectivement, LIKE n'est plus sensible à la casse dans Mysql depuis un certain temps.
 
Edith :
voire un select substring(ville, 0, 1) where ville LIKE '%p%'

Message cité 1 fois
Message édité par deliriumtremens le 11-06-2009 à 10:16:30
n°1894016
Yagmoth
Fanboy
Posté le 11-06-2009 à 10:22:54  profilanswer
 

deliriumtremens a écrit :

tu peux toujours essayer un

 

where TRIM(ville) LIKE 'p%';

 

Histoire de voir s'il n'y aurait pas des espaces mal placés...

 

Fectivement, LIKE n'est plus sensible à la casse dans Mysql depuis un certain temps.

 

Edith :
voire un select substring(ville, 0, 1) where ville LIKE '%p%'

 

Bingo, merci :jap:


Message édité par Yagmoth le 11-06-2009 à 10:25:36

---------------
L'ennemi est bête : il croit que c'est nous l'ennemi alors que c'est lui !
mood
Publicité
Posté le 11-06-2009 à 10:22:54  profilanswer
 

n°1894018
deliriumtr​emens
sic transit intestinal...
Posté le 11-06-2009 à 10:26:45  profilanswer
 

Alors nettoie vite ta table, parce qu'avec des espaces partout, tu vas être emmerdé rapidement.
 
UPDATE geo SET ville = TRIM(ville) !
 
Zou, et qu'on ne t'y reprenne plus.

n°1894025
Yagmoth
Fanboy
Posté le 11-06-2009 à 10:38:39  profilanswer
 

deliriumtremens a écrit :

Alors nettoie vite ta table, parce qu'avec des espaces partout, tu vas être emmerdé rapidement.
 
UPDATE geo SET ville = TRIM(ville) !
 
Zou, et qu'on ne t'y reprenne plus.


 
Faut engueuler le type qui en a mis dans son fichier scv :o


---------------
L'ennemi est bête : il croit que c'est nous l'ennemi alors que c'est lui !
n°1894092
rufo
Pas me confondre avec Lycos!
Posté le 11-06-2009 à 12:15:36  profilanswer
 

pour le javascript, y'a la lib script.aculo.us qui peut t'être utile pour l'ajax et éventuellement l'autocompletion ;)


---------------
Astres, outil de help-desk GPL : http://sourceforge.net/projects/astres, ICARE, gestion de conf : http://sourceforge.net/projects/icare, Outil Planeta Calandreta : https://framalibre.org/content/planeta-calandreta
n°1894127
macgawel
Posté le 11-06-2009 à 13:41:56  profilanswer
 

Hermes le Messager a écrit :

Si ton but c'est de faire apparaitre une liste des villes commencant par tel ou tel motif de lettres, AJAX +  JS + PHP n'est pas la bonne méthode. C'est lourd pour rien.
 
Tu te contentes de générer via PHP la liste de toutes tes villes dans un tableau JS une fois pour toutes dès le départ et tu fais ta recherche ensuite en JS à l'évènement onkeyup ou onchange, cela dépend...

Et donc faire un tableau JS avec les 36000 communes  :sweat:

n°1894141
Hermes le ​Messager
Breton Quiétiste
Posté le 11-06-2009 à 14:03:57  profilanswer
 

macgawel a écrit :

Et donc faire un tableau JS avec les 36000 communes  :sweat:


 
Ah ben c'est sur que s'il s'agit d'avoir toute la liste des communes de France et de Navarre, il va peut-être falloir envisager Ajax. Mais bon... J'espère que ton site va pas être trop fréquenté ou que tu as les reins solides, parce qu'une requête SQL par touche appuyée et par user, c'est pas non plus génial comme système hein...


---------------
Expert en expertises
n°1894145
flo850
moi je
Posté le 11-06-2009 à 14:08:31  profilanswer
 

avec  , au pire, une mise en cache avec apc ( et de toute manière mysql qui a un cache)  , ça se fait très bien


---------------

n°1895147
Yagmoth
Fanboy
Posté le 15-06-2009 à 13:46:02  profilanswer
 

flo850 a écrit :

avec  , au pire, une mise en cache avec apc ( et de toute manière mysql qui a un cache)  , ça se fait très bien


 
En fin de compte j'ai installé la lib Prototype et script.aculo.us, j'espère que ça passera :D


---------------
L'ennemi est bête : il croit que c'est nous l'ennemi alors que c'est lui !

Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  PHP

  champs text interactifs

 

Sujets relatifs
Date : champs date ou timestamp ?Impact d'un changement de min word length sur recherche full text ?
[Javascript] Vérifier si un input text est un float[Mysql] Ajout d'un caractere "0" sur toutes les valeurs d'un champs
[résolu] afficher récursivement heure + mois sur deux champsProblème vérification format champs
Lenteur formulaire avec de nombreux champsformulaire + remplissage automatique de champs à partir d'un champ
Formulaire + remplir des champs automatiquement à partir d'une champRequête sur plusieurs tables avec un nombre de champs différent
Plus de sujets relatifs à : champs text interactifs


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR