Page 1 sur 1

Problème de IF qui commance par un (

Posté : 19 mars 2006, 06:22
par auclairp
Bonjour j'ai mis une commande sur ma page qui affiche s'il y a des données dans la Bdd sinon affiche rien, sauf que le contenue du champ est un no de téléphonne don commance par un (514) "montréal/québec"

voici ma commande
<?if (($donnees['urgence_bell']) >= 1){?><td style="text-align: center; color: red;"><b><?echo $donnees['urgence_bell'] ;?> (PUBLIC)</b></td><?} else {}?>
bien sure vous allez comprendre que ca ne fonctionne pas, mais j'ai tester si la valeur commance par un chiffre et ca fonctionne très bien, alors je ne crois pas que ce soit la requête mai seulement la condition de mon IF

Merci de votre aide

Posté : 19 mars 2006, 06:44
par Lorenzo
utilise plutot une REGEXP :
$donnees['urgence_bell'] = '5140598';
if( preg_match("#^([0-9]+)$#", $donnees['urgence_bell']) ){
  echo "CEST UN N°";
}

Posté : 19 mars 2006, 08:23
par auclairp
utilise plutot une REGEXP :
$donnees['urgence_bell'] = '5140598';
if( preg_match("#^([0-9]+)$#", $donnees['urgence_bell']) ){
  echo "CEST UN N°";
}
ca ne fonctionne pas, voici ce que j'ai essayer
<?if ( preg_match("#^([0-9]+)$#", $donnees['urgence_bell']) ){?><td style="text-align: center; color: red;"><b><?echo $donnees['urgence_bell'] ;?> (PUBLIC)</b></td><?} else {}?>
urgence bell = (514) 222-2222

Posté : 19 mars 2006, 08:37
par Lorenzo
tu as juste a modifier le masque pour ton N° ... tu aurais pu faire une petite recherche ... je ne connais pas tous les masques acceptables pour les N° Quebecois ...

disons que si les N° seront toujours formaté EXACTEMENT COMME CECI (514) 222-2222, tu peux faire un masque de REGEXP tres precise :

"#^\([0-9]{3}\) [0-9]{3}-[0-9]{4}$#"

Posté : 19 mars 2006, 08:47
par mario
<?php
$str = '(514) 222-2222';

if ( preg_match('`^\s*\(?514\)?\s*[[:digit:]]{3}-?[[:digit:]]{4}\s*$`', $str) ){
  echo 'ok';
}

?>
Teste ça :wink:

Posté : 19 mars 2006, 08:47
par auclairp
tu as juste a modifier le masque pour ton N° ... tu aurais pu faire une petite recherche ... je ne connais pas tous les masques acceptables pour les N° Quebecois ...

disons que si les N° seront toujours formaté EXACTEMENT COMME CECI (514) 222-2222, tu peux faire un masque de REGEXP tres precise :

"#^\([0-9]{3}\) [0-9]{3}-[0-9]{4}$#"
J'ai chercher unpeu, mais je t'avour pas gros, j'ai pas vraiment compris ce que c'était, mais avec ta nouvelle formule ca fonctionne

Ton exemple est bon, je croyait que c'était pour inclure des carac spec, mais si je comprend bien c'Est une formule esacte, alors s'il y a une extension à la fin ca ne fonctionnera plus,

Posté : 19 mars 2006, 08:52
par Lorenzo
donne les differentes possiblités, car j'ai pas compris le probleme de "l'extension"

pour infos : avec les REGEXP, tu peux tout faire !
le café, le menage, la vaisselle et meme les verifications tres pousses sur les chaines de caracteres ;)

toutes les infos : http://fr2.php.net/manual/fr/ref.pcre.php

Posté : 19 mars 2006, 08:55
par mario
avec l'exemple que je t'ai donné ci dessus,
$str = '(514) 222-2222'; // ok
$str = '    (514) 222-2222      '; // ok
$str = '514 222-2222'; //ok
$str = '(514)2222222'; // ok
$str = '5142222222'; // ok
// etc etc etc
après, tu peux nettoyer la chaine de tout caractère non numérique pour l'insertion dans la base de donnée (on économise des octets :wink: )