placé ma fonction dans ma requette

placé ma fonction dans ma requette - PHP - Programmation

Marsh Posté le 12-06-2009 à 08:21:33    

Bonjours,
 
Voilà j'ai un problème que j'arrive pas à élucidé  je pence qu'il est tellement voyant que je le voit pas.
 
Bref je fais une une selection de numero de téléphone dans ma base de donné le champs est customers_gsm mais
comme j'ai des numéro qui sont fau je fai une fonction pour les réparé
 
ma fonction march trè bien mais quant j'esseil de la mettre dans ma requette sa m'affiche une page blanche es-ce du a une virgule,
ou autre je ne pence pas mais je croi qu'il y a une erreur dans l'appel de ma fonction ou autre ma fonction est comme celà:  
 

Code :
  1. function remplaceNum($numero)
  2. {
  3. $error = "numero pas correct";
  4. $numero = Str_replace ("." ,"", $numero);
  5. $numero = Str_replace ("-","", $numero);
  6. $numero = Str_replace ("/","", $numero);
  7. $numero = Str_replace ("+33","", $numero);
  8. $numero = Str_replace ("0033","", $numero);
  9. $numero = Str_replace (",","", $numero);
  10. $numero = Str_replace (";","", $numero);
  11. $numero = Str_replace (" ","", $numero);
  12. $numero = Str_replace ("+","", $numero);
  13. $numero = Str_replace ("_","", $numero);
  14. //rajoute autant de caractere que de filtre que tu veut en faite
  15. if ($numero[StrLen($numero)-9] == 6 && StrLen($numero) == 9 )
  16. {
  17.  
  18.   $numero = "0".$numero;
  19.   }
  20.   else{ return $error;}
  21.   if(ctype_digit($numero)){return $numero;} else{ return $error;
  22. }


 
et voici mon code ou je place ma fonction  
 

Code :
  1. $export_query=mysql_query(" SELECT customers_id, customers_nom, customers_prenom , customers_gsm, customers_email FROM customers WHERE customers_pays = 'France' and customers_unjoin_date = '0000-00-00' and  customers_gsm !='06' and customers_gsm !='' and customers_gsm REGEXP "^[0-9]*$" " );
  2. $export_data .="customers_id" . "\t"; $export_data .="customers_nom" . "\t"; $export_data .="customers_prenom" . "\t"; $export_data .="customers_gsm" . "\t";
  3.  $export_data .="customers_email" . "\t";  $export_data .="\n";
  4. while ($export=mysql_fetch_array($export_query)) {
  5.  // on recupere les resultats de la requete
  6.  $customers_id = $export[0];  $customers_nom = $export[1];  $customers_prenom = $export[2];  $customers_gsm = $export[3]; $customers_email = $export[4];
  7.   $numero  = $export['customers_gsm'];
  8.     remplaceNum($numero);
  9.     $num_gsm = remplaceNum($numero);
  10.   if(ctype_digit($num_gsm)){
  11.  $export_data .=$export["customers_id"] . "\t";
  12.  $export_data .=$export["customers_nom"] . "\t";
  13.  $export_data .=$export["customers_prenom"] . "\t";
  14.  $export_data .=$num_gsm. "\t";
  15.  $export_data .=$export["customers_email"] . "\t";
  16.  $export_data .="\n";
  17.          }
  18. }


 
je vous remerci de votre aide


Message édité par sinifer le 12-06-2009 à 09:04:58
Reply

Marsh Posté le 12-06-2009 à 08:21:33   

Reply

Marsh Posté le 12-06-2009 à 09:54:42    

Bonjour.
 
1. Dans ton code, tu ne demandes pas d'afficher quoi que ce soit.
=> C'est normal d'avoir une page blanche en résultat !  :whistle:  
 
2. Mon n° de GSM : (+33)0610200033
Avec ta fonction, je me retrouve avec 061020 !
Et si mon n° est "00 33 06 10 20 30 40" ça ne fonctionne pas non plus...
 
A ta place, je commencerais par virer tous les caractères "parasites" (non numériques). Et après seulement je m'occuperais de virer le (+33) et le 0033...
 
3. Petit détail :
Dans ta requête SQL, je ne vois pas trop pourquoi tu fais un SELECT customers_id, customers_nom, customers_prenom , customers_gsm, customers_email, alors que tout ce que tu utilises c'est le customers_id et le customers_gsm ?
Et accessoirement, j'aurais tendance à faire la mise en forme du n° GSM à l'enregistrement - avant de faire l'INSERT...
 
[HS]Si tu peux, essaye de faire des efforts sur l'orthographe, ce n'est pas évident à lire...  :jap:

Reply

Marsh Posté le 12-06-2009 à 10:10:39    

Edit : j'ai cru que c'était un problème d'accolade, mais en faite, il ne semble pas en manquer.


Message édité par olivthill le 12-06-2009 à 10:12:00
Reply

Marsh Posté le 12-06-2009 à 10:12:48    

Merci de ta réponse macgawel,
 
pour mon orthographe je suis désolé mais je fait du mieux que je peu,
 
Effectivement j'ai enlevé le numéro avec 0033 au milieu donc je suis entrain de corriger ça.  
C'est aussi vrai que si j'ai un bon numéro il me dit que c'est pas bon pourtant à un moment donnée sa marchait et je me demande ce que j'ai dû enlevé pour plus que sa marche.
Mais le problème vien de && StrLen($numero) == 9 car si il lit plus de 9 caractère il s'arrête.
 
l'idéale serait que je fasse dans ma fonction que si je trouve le 6 a là neuvième position j'enlève ce qu'il y a après et je met un 0  
 
si tu sais faire sa ce serait cool que tu m'explique comment faire merci

Reply

Marsh Posté le 15-06-2009 à 13:05:16    

pour info, str_replace() peut prendre comment 2 premiers paramètres des tableaux : ça t'éviterait de faire pleins de str_replace à la suite et n'en faire donc plus qu'un.


---------------
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
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed