Problème de IF qui commance par un (

Eléphant du PHP | 333 Messages

19 mars 2006, 06:22

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
Ce n'est pas toujours facile d'essayer, mais c'est toujours vallorisant lorsqu'on y arrive !!!

Apprenez, ne le faite pas faire par les autres.

Eléphant du PHP | 254 Messages

19 mars 2006, 06:44

utilise plutot une REGEXP :
$donnees['urgence_bell'] = '5140598';
if( preg_match("#^([0-9]+)$#", $donnees['urgence_bell']) ){
  echo "CEST UN N°";
}

Eléphant du PHP | 333 Messages

19 mars 2006, 08:23

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
Ce n'est pas toujours facile d'essayer, mais c'est toujours vallorisant lorsqu'on y arrive !!!

Apprenez, ne le faite pas faire par les autres.

Eléphant du PHP | 254 Messages

19 mars 2006, 08:37

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}$#"

Mammouth du PHP | 768 Messages

19 mars 2006, 08:47

<?php
$str = '(514) 222-2222';

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

?>
Teste ça :wink:
M A R I O
Si une patte de lapin porte bonheur, qu'a-t-il bien pu arriver au lapin ?

Eléphant du PHP | 333 Messages

19 mars 2006, 08:47

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,
Ce n'est pas toujours facile d'essayer, mais c'est toujours vallorisant lorsqu'on y arrive !!!

Apprenez, ne le faite pas faire par les autres.

Eléphant du PHP | 254 Messages

19 mars 2006, 08:52

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

Mammouth du PHP | 768 Messages

19 mars 2006, 08:55

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: )
M A R I O
Si une patte de lapin porte bonheur, qu'a-t-il bien pu arriver au lapin ?