probleme requete sql

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : probleme requete sql

par Truc » 05 févr. 2007, 19:33

Modération :
Puisque ta question est résolue, j'ajoute le tag [Résolu]
pour indiquer aux personnes qui voudront consulter ce sujet qu'il contient une solution.

Tu peux réaliser cette opération toi-même
en cliquant sur le bouton [Mettre Résolu] qui s'affiche en haut à gauche de ce sujet
si tu as posté le 1er message en tant que membre (inscrit et identifié).

Alors... inscris-toi !!! ;)

par eddi » 05 févr. 2007, 09:37

jai trouvé

au lieu de

Code : Tout sélectionner

replace(telephone, '', '')
il faut ecrire

Code : Tout sélectionner

replace(telephone, ' ', '')
:wink:

par eddi » 05 févr. 2007, 09:18

Bonjour
Oui je m'excuse pour le multipostage ca ne se reproduira plus

Pour la requete ca marche mais pour la podification de l'espace ca ne marche pas :

Code : Tout sélectionner

replace(telephone, '', '')
cest à dire remplacer 01 23 45 67 89 en 0123456789

Merci

par Ryle » 02 févr. 2007, 18:18

Modération :
eddi, le multipostage est interdit sur le forum.

Merci de prendre le temps de lire les règlements.

par Jean » 02 févr. 2007, 17:31

Bien sûr qu'il est possible de faire des replace imbriqués

Code : Tout sélectionner

replace(replace(replace(telephone, '.', ''), '/', ''), '+33', '0')
Mais l'avis ci-dessus est quand même pertinent : il vaut mieux UN seul traitement de mise en forme à l'enregistrement, que PLUSIEURS traitements pour CHACUN des enregistrements a CHAQUE affichage.

par AB » 02 févr. 2007, 17:04

Bonjour,

Le plus simple serait de formater les numéros de téléphone à l'insertion dans la base de donnée.
Pour enlever tous les caractères non numériques :
$tel = '+33_ 52 / 14 - 86.65/92';
$newtel = eregi_replace("[^0-9]", "", $tel);
S'il sont déjà dans ta base de donnée tu pourrais updater ta base sur le champ téléphone avec l'expression précédente.

Ensuite ta requête sera optimisée

probleme requete sql

par eddi » 02 févr. 2007, 14:14

voici une requete sql
$req="select id, id_pays, code, mdp, nom, ind_valide, id_parrain, contact_civilite, contact, logo,telephone ";

        $req.="from admin_societe ";

        $req.="where id is not null ";

        if ($fltENTPid)        {$req.="and id=".$fltENTPid." ";}

        if ($fltENTPnom)    {$req.="and nom like '%".$fltENTPnom."%' ";}

        if ($fltENTPcode)    {$req.="and code like '%".$fltENTPcode."%' ";}

        if ($fltENTPmail)    {$req.="and adressemail like '%".$fltENTPmail."%' ";}
        
        if ($fltENTPtelephone)    {$req.="and REPLACE(telephone,'.','')  like '%".$fltENTPtelephone."%' ";}

        $req.="order by nom ";

Le probleme c'est sur le champ numéro de telephone
ce que je veu faire cest de formaté le numéro de telephone venant de ma bdd cest à dire supprimer les espaces, suprimer les tirets, les slashs, enlevé le +33 pour le format internationnal
par exemple
01 23 45 67 89 changé en 0123456789
01.23.45.67.89 changé en 0123456789
01-23-45-67-89 changé en 0123456789
01-2345 6789 changé en 0123456789
+33123456789 changé en 0123456789
01/23/45/67/89 changé en 0123456789

le requete ci dessus marche mais seul pour la suppression des points cest a dire il change 01.23.45.67.89 en 0123456789
Comment faire pour formaté en même temps la chaine ? est ce qu'on peut utiliser plusieur REPLACE dans une seul requete?



Le but est de faire une recherche par numéros de telephone et dans le champs numéros de tel l'utilisateur ne va taper que 0123456789 mais pas des numéros avec des espaces ou point ou tirets ...... or dans ma base de donnée les numeros de telephone ont des formats differents : numero avec des espaces ,avec des tirets , avec des points ..............

merci pour votre aide