Page 1 sur 2
Recherche Téléphone
Posté : 25 nov. 2013, 17:58
par kilian78480
Bonjour à tous,
Savez vous comment faire pour lancer une recherche de numéro de téléphone sur différents formats?
exemple :
- je cherche : 01 00 00 00 00
ou : 0100000000
ou : 01.00.00.00.00
Merci pour votre aide.
dans ma base je lance la recherche comme ça :
telephone like '%".$recherche."%'
Re: Recherche Téléphone
Posté : 25 nov. 2013, 21:30
par sirakawa
je crains qu'il faille passer par les expressions régulières
Re: Recherche Téléphone
Posté : 25 nov. 2013, 22:12
par xTG
Le plus simple serait de détecter le format rentré par l'utilisateur puis de le convertir vers le format que tu utilises dans ta base de données.
Ainsi l'opérateur like pourrait être utilisé.
Re: Recherche Téléphone
Posté : 25 nov. 2013, 23:40
par kilian78480
Ah ok.
Merci pour vos réponses et votre aide.
Comment on fait pour détecter et dire à $recherche de convertir?

Re: Recherche Téléphone
Posté : 26 nov. 2013, 09:14
par xTG
Tu peux vérifier le format d'une chaîne avec une expression régulière.
Ou bien plus primairement en recherchant les caractères qui distinguent ta chaîne d'une autre.
Pour 03.12.25.21.20 tu sais que tu auras toujours les points au même indice et donc tu peux les vérifier un à un.
C'est le même principe avec les espaces.
Ou même encore tu peux faire un
explode de ta chaîne sur le caractère de séparation et vérifier que tu as bien le bon nombre d'index dans l'array construit. Et la conversion est super simple du coup avec un
implode pour reformer une chaîne à injecter dans ta requête.
Mais le plus propre reste tout de même les
regex.
Re: Recherche Téléphone
Posté : 26 nov. 2013, 10:21
par sirakawa
peut-être un simple str_replace avec comme premier paramètre un tableau de tous les séparateurs imaginables, et comme deuxième un tableau du séparateur que tu utilises.
Re: Recherche Téléphone
Posté : 26 nov. 2013, 14:31
par xTG
C'est une bonne idée je plussoie.
Cela doit être plus optimisé que de passer par des explode/implode.
Re: Recherche Téléphone
Posté : 26 nov. 2013, 17:00
par kilian78480
Merci pour votre aide...
J'ai déjà entendu du str_replace par contre je ne sais pas comment cela se construit pour la recherche.
Pour un str_replacve simple oui mais dans mon cas là... je ne sais pas...
dans ma base les tél peuvent être enregistré soit 01 00 00 00 00 soit 0100000000 ou soit 01.00.00.00.00 idem pour la recherche.
Merci pour votre aide
Re: Recherche Téléphone
Posté : 26 nov. 2013, 19:15
par xTG
Pour traiter ton cas il faut que tu n'ai qu'un seul format dans ta base de données.
Donc il te faut convertir ceux qui ne sont pas dans le format que tu veux utiliser avant de penser à faire un script de recherche.

Re: Recherche Téléphone
Posté : 26 nov. 2013, 20:53
par sirakawa
par exemple:
$z = str_replace(["-", " ",":"], "/", $chaine);
Re: Recherche Téléphone
Posté : 26 nov. 2013, 23:34
par kilian78480
ok merci.
voici ce que j'ai fait :
if($_GET['type_recherche'] = "telephone") {
$tel = array(" ", "-", ".", "");
$replace = array(" "," "," ","");
$recherche = str_replace($tel, $replace, $_GET['recherche']);
}
il converti bien mais ne fait pas exactement ce que je souhaite...
j'aimerai qu'il comprenne que dans ma base il peut être enregistré des numéros comme 01 00 00 00 00 ou 01.00.00.00.00 ou 0100000000 donc que la recherche se fasse sur ça quoi que l'on tape
Re: Recherche Téléphone
Posté : 26 nov. 2013, 23:57
par blof
Pour traiter ton cas il faut que tu n'ai qu'un seul format dans ta base de données.
Donc il te faut convertir ceux qui ne sont pas dans le format que tu veux utiliser avant de penser à faire un script de recherche.

Tu oublies tout le reste ...
(si tu ne peux pas le faire à la main, il faudra faire un programme qui le fera à ta place)
Re: Recherche Téléphone
Posté : 27 nov. 2013, 00:03
par kilian78480
D'accord c'est bien ce qu'il me semblait...
Comment faire dans ce cas pour obliger une écriture de format dans la base lorsque l'on envoie la requête ?
Exemple: je tape 0100000000 mais dans ma base ça sera 01 00 00 00 00
Et deuxième chose comment convertir les numéros déjà enregistres dans la base...?
Re: Recherche Téléphone
Posté : 27 nov. 2013, 00:26
par blof
Exemple: je tape 0100000000 mais dans ma base ça sera 01 00 00 00 00
[AMHA] il vaudrait mieux enregistrer au format 0100000000
Pour l'enregistrement, tu supprimes tout ce qui n'est pas chiffres :
<?php
$numero = '01.00.00.00.00'; // ou ce que tu veux comme séparateur
echo preg_replace('/[^\d]/', '', $numero);
?>
Et deuxième chose comment convertir les numéros déjà enregistres dans la base...?
tu connais la commande "set" ?
edit : "UPDATE"

Re: Recherche Téléphone
Posté : 27 nov. 2013, 00:57
par kilian78480
Mdr oui.
Mais faire un update global de la base et non donnée par donnée...