Discussion:
Aide pour une Regex
(trop ancien pour répondre)
psyroy75
2009-03-13 16:01:39 UTC
Permalink
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
Olivier Miakinen
2009-03-13 16:15:12 UTC
Permalink
[ diapublication dans deux groupes, suivi vers fr.comp.lang.regexp ]

Bonjour,
Post by psyroy75
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é.
Post by psyroy75
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'.
Post by psyroy75
[...]
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
Loading...