champs text interactifs - PHP - Programmation
Marsh Posté le 11-06-2009 à 08:43:37
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
Marsh Posté le 11-06-2009 à 09:08:42
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 :
|
Edit : c'est bon, opérateur LIKE.
Marsh Posté le 11-06-2009 à 09:38:28
Autre souci à présent, on dirait que ma base MySQL fait des siennes : quand je fais par exemple un
Code :
|
Il me retourne bien quelques valeurs (Parisot, Pereille, Plaisance...) mais pas toutes les valeurs correspondantes (il manque par exemple Paris). Une idée ?
Marsh Posté le 11-06-2009 à 09:44:39
Yagmoth a écrit : Autre souci à présent, on dirait que ma base MySQL fait des siennes : quand je fais par exemple un
|
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...
Marsh Posté le 11-06-2009 à 09:47:49
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 (et ceux d'autant plus que quand je fais une recherche similaire, mais par code postal, ça fonctionne )
Marsh Posté le 11-06-2009 à 10:01:50
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)
Marsh Posté le 11-06-2009 à 10:07:20
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).
Marsh Posté le 11-06-2009 à 10:14:43
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%'
Marsh Posté le 11-06-2009 à 10:22:54
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 : |
Bingo, merci
Marsh Posté le 11-06-2009 à 10:26:45
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.
Marsh Posté le 11-06-2009 à 10:38:39
deliriumtremens a écrit : Alors nettoie vite ta table, parce qu'avec des espaces partout, tu vas être emmerdé rapidement. |
Faut engueuler le type qui en a mis dans son fichier scv
Marsh Posté le 11-06-2009 à 12:15:36
pour le javascript, y'a la lib script.aculo.us qui peut t'être utile pour l'ajax et éventuellement l'autocompletion
Marsh Posté le 11-06-2009 à 13:41:56
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. |
Et donc faire un tableau JS avec les 36000 communes
Marsh Posté le 11-06-2009 à 14:03:57
macgawel a écrit : Et donc faire un tableau JS avec les 36000 communes |
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...
Marsh Posté le 11-06-2009 à 14:08:31
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
Marsh Posté le 15-06-2009 à 13:46:02
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
Marsh Posté le 11-06-2009 à 08:28:28
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 !