Aide pour une Regex

Le
psyroy75
Salut a tous,

Voilà je débute dans les expressions régulières,et je voudrai l'insérer dans un code php pour faire un contrôle de saisie voici le code :


if (preg_match("#([0-9][0-9][, ][0-9]{2}$)?#", $note))

{
// Si le controle est bon il fait la mise a jour de la note

$sql = "UPDATE evaluation e SET note= '$note', appreciation = '$appreciation' WHERE ids = '$ids' AND e.idm in (select distinct m.idm from matiere m where libelle ='$m') ";

mysql_query($sql);

}
else

//sinon il indique la note qui est pas bonne
{

echo 'Le ' . $ligne['note'] . ' n'est pas valide, recommencez !';
}



Mais la ou est le problème c'est la ([0-9][0-9][, ][0-9]{2}$)?# , je voudrai faire un contrôle sur

des notes mais je veux aussi qu'il considère les espace vide (car la BDD est reset tout les 3 mois).

Les notes ce présente sous cette forme 10,00 donc je voulais savoir pourquoi sa coince.

Merci d'avance
Vidéos High-Tech et Jeu Vidéo
Téléchargements
Vos réponses
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
Olivier Miakinen
Le #18893201
[ diapublication dans deux groupes, suivi vers fr.comp.lang.regexp ]

Bonjour,

Le 13/03/2009 17:01, psyroy75 a écrit :

Voilà je débute dans les expressions régulières,et je voudrai l'insérer dans un
code php pour faire un contrôle de saisie



Ok. Je fais donc suivre la discussion vers fr.comp.lang.regexp, beaucoup
plus adapté.

voici le code :

if (preg_match("#([0-9][0-9][, ][0-9]{2}$)?#", $note))
{



Ce code permet de trouver par exemple une sous-chaîne telle que "99,99"
ou "99 99" à la fin de la chaîne $note, soit une chaîne vide à n'importe
quelle position. Or on peut *toujours* trouver une chaîne vide n'importe
où dans une autre chaîne, donc le 'if' réussira toujours et tu ne
rentreras jamais dans le 'else'.

[...]

Les notes ce présente sous cette forme 10,00 donc je voulais savoir pourquoi sa
coince.



Cf. ci-dessus pour l'explication. Si toutes tes chaînes sont censées
comporter cinq caractères, avec deux chiffres au début puis une virgule
ou une espace et enfin deux autres chiffres, alors essaye ceci :

if (preg_match("#^[0-9][0-9][, ][0-9][0-9]$#", $note))
{

ou encore :

if (preg_match("#^[0-9]{2}[, ][0-9]{2}$#", $note))
{

Cordialement,
--
Olivier Miakinen
Publicité
Poster une réponse
Anonyme