Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Aide pour une Regex

1 réponse
Avatar
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

1 réponse

Avatar
Olivier Miakinen
[ 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