Page 1 sur 1
recherche complexe
Posté : 31 oct. 2006, 14:30
par jup
Bonjour,
j'ai un probleme de recherche sur des numéros de téléphones
ex: l'utilisateur tappe 025321400
la requete ne retourne rien pourtant comme dans ma base j'ai
02 532 14 00 ou 02/532.14.00 j'aimerais bien qu'il me trouve une correspondance, mais je ne sais pas quel mode de recherche et quelle fonction il faut appliquer au champ?
Peut-être une expression régulière ?
D'avance merci
PS : je sais que c'est possible a faire en 2 requetes
1/ select tous les numeros suivi d'une boucle les analyser avec un str_replace en sauvant l'identifiant
2/ faire un select sur les identifiants trouvés
Posté : 31 oct. 2006, 14:34
par albat
Et si, prévetivement, tu nettoyais ta base de tous les signes inutiles : slashs, points, espaces,...
En n'y enregistrant ensuite que les chiffres, tu n'aurais plus aucun problème de recherche.

Posté : 31 oct. 2006, 14:45
par jup
bonjour,
question présentation de l'affichage je ne peut pas me le permettre.
Si l'utilisateur veut un + des . des / ou des espaces, grouper par 3 ou par 2 faire un préfixe de 2 ou de 3,4 chiffres mettre un (0) je dois le laisser faire.
Je pourais eventuellement faire une copie du champ sans les caractères mais il y a redondance et danger de non synchronisation et je préfère éviter cette solution
Posté : 31 oct. 2006, 17:33
par jojolapine
je pense que si l'utilisateur veux des . des / et tout ça... c'est en php que tu dois le faire, ça te permet ainsi de faire une recherche plus simple et ça reste évolutif... et oui si l'utilisateur décide de ne plus mettre des / mes des #, tu ne vas tout de même pas changer tout les champs de ta base...

Posté : 02 nov. 2006, 13:43
par Invité
justement je laisse la liberté d'encodage
je cherche une fonction SQL qui permet d'épurer ces caractères lors d'une recherche
Posté : 02 nov. 2006, 14:38
par iclo
Pas sûr que cela soit faisable en sql.
Je me joins aux autres pour penser qu'il vaut mieux avoir le plus de structure possible et ne pas laisser l'utilisateur encoder les numéro comme il veut, ne serait ce que pour des raisons d'esthétisme, et puis on ne sait jamais ce que deviendront ces données, peut-être devra tu un jour les exporter par exemple vers un logiciel de gestion de contact, et là ce sera mission galère.
Posté : 02 nov. 2006, 14:42
par albat
Merci, iclo.
Comme je te le suggérais, il est préférable de filtrer le format de ces numéros.
Libre à l'utilisateur de saisir des - des . et des /, c'est à toi de purger les numéros de ces signes
pour n'enregistrer que des chiffres dans ta base.
Posté : 02 nov. 2006, 14:45
par Ajoloca
Bonjour,
Pour ce qui est de conservation des données, je rejoins les autres (de façon uniforme) mais si tu tiens vraiment à offrir la possibilite de personnaliser l'affichage, mantiens une colonne qui te servira de masque d'affichage (par numéro)
Posté : 02 nov. 2006, 14:52
par jojolapine
ou puisque le client est roi, dans ça config, il saisie la façon dont il veut voir les numéros, et ensuite à toi de les mettre en forme via des expressions régulières ou autres...

Posté : 02 nov. 2006, 20:13
par Invité
Salut,
Si tu veux utiliser SQL :
http://dev.mysql.com/doc/refman/4.1/en/regexp.html
La norme d'affichage des numéros de téléphone en France c'est : (0)0 00 00 00 00, le premier 0 entre parenthèses car il est optionnel. Il y a aussi le code régional +33 mais c'est une propriété de la zone géographique et non du téléphone.
Je pense aussi qu'idéalement, un numéro de téléphone doit être enregistré sans son format mais les choses deviennent difficiles dans l'internationalisation. Les normes diffèrent d'un pays à l'autre, certains pays n'ont pas de normes, d'autres en ont plusieurs (Allemagne par exemple).
A+