Interrogation sur expression reguliere

Résolu
Bonjour,

A votre avis ici

if (preg_match("^[0-9]{15}$^", $ss))

signifie bien que la variable $ss doit avoir 15 caractères mini et maxi compris entre 0 et 9 ?

Merci
Configuration: Windows Vista
Firefox 3.5.2

13 réponses

  1. problme reolu il vient venait d la variable $ss qui recuperait une precedente session plutot que le POST ... merci de votre aide
    0
    1. pour info Pour tester j ai mis ca

      if (preg_match("#^[1]{1}$#", $ss))

      et la il me prend bien en compte mon expression reguliere ...
      0
      1. je viens d tester en gros tout fonctionn auf le if preg match du $ss il effectue l update comme si il n y avait pas de conditions ....
        0
        1. A première vue il y n'y a pas d'erreur...

          Essaye de faire plein d'"echo" de contrôle voir où passe le programme, le contenu des variables, ...
          0
          1. ton stst fonctionne egalement chez moi mais pas la peut etre est ce du a l imbrication de mes if voici le code
            if (isset($_POST['ok']))
            {
            if (preg_match("#^([0-9]){2}/([0-9]){2}/([1-2])([0-9]){3}$#", $naissance))
            {
            if (preg_match("#^[0-9]{15}$#", $ss))
            {
            $sql2= "UPDATE login SET nom='".$_POST['nom']."', prenom='".$_POST['prenom']."', naissance='".$_POST['naissance']."', ss='".$_POST['ss']."' WHERE ss='".$ss."'";
            $req2= mysql_query($sql2) or die('Erreur SQL !'.$sql2.'<br>'.mysql_error());
            if(isset($req2))
            {
            echo 'Patient modifié';
            $sql = "SELECT * FROM login where ss='".$ss."'";
            $req = mysql_query($sql) or die( mysql_error() ) ;
            $total = mysql_num_rows($req);
            {
            echo '<center><table class="table2">'."\n";
            echo '<tr >';
            echo '<td class="td-title">Nom</td>';
            echo '<td class="td-title">Prénom</td>';
            echo '<td class="td-title">Date de naissance</td>';
            echo '<td class="td-title">Numéro de sécurité sociale</td>';
            echo '</tr>'."\n";
            while($row = mysql_fetch_array($req))
            {
            echo '<tr>';
            echo '<td class="td-p">'.$row["nom"].'</td>';
            echo '<td class="td-p">'.$row["prenom"].'</td>';
            echo '<td class="td-p">'.$row["naissance"].'</td>';
            echo '<td class="td-p">'.$row["ss"].'</td>';
            echo '</tr>'."\n";
            }
            echo '</table></center>'."\n";
            }
            }
            }
            else
            {
            echo "<script language=\"JavaScript\">\n";
            echo "alert('Numéro de sécurité sociale invalide');";
            echo 'window.history.back();';
            echo "</script>";
            }
            }
            else
            {
            echo "<script language=\"JavaScript\">\n";
            echo "alert('Format date non valide');";
            echo 'window.history.back();';
            echo "</script>";
            }
            }
            0
            1. Etonnant!

              Avec ma page de test, ça marche pourtant bien:
              <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" 
                 "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
              <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr">
              	<head>
              		<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
              		<title>Page de tests php</title>
              		<?php 
              			function e($string) {
              				echo '<p>'. $string .' est de la bonne forme?: '. preg_match("#^[0-9]{15}$#", $string);
              				if (preg_match("#^[0-9]{15}$#", $string)) {
              					echo '-oui</p>';
              				}else{
              					echo '-non</p>';
              				}
              			}
              		?>
              		<script language="javascript">
              		</script>
              	</head>
              	<body>
              		<?php 
              			e("012345678901234");
              			e("123456789012345");
              			e("00000000000000");
              			e("000000000000000");
              			e("7777777777777777");
              			e("a454654621654567");
              			e("a454654a621654567");
              			e("12345678901234565465213015462465460546046");
              		?>
              	</body>
              </html>
              0
              1. j comprends pas voila ce que j ai mis ca devrait fonctionenr mais il me le prend pas il ajoute encore

                if (preg_match("#^[0-9]{15}$#", $ss))
                0
                1. N'oublie pas les "#" en début et fin de chaine alors ^^
                  0
                  1. quand j enlv le chapeau a ma syntaxe initial voila l erreur

                    Warning: preg_match() [function.preg-match]: No ending delimiter '^' found in W:\patient.php on line 32
                    0
                    1. Es-tu bien sûr d'avoir enlevé le dernier "^"?
                      dans mes tests avec 16 chiffres ça ne marche pas...
                      0
                      1. merci pour ta reponse mais ca ne marche pas j ajouter un 16eme caractères et ca marche ....
                        0
                        1. Bonjour,

                          Non, l'expression est incorrecte, je viens de la tester, et cela dit si la chaine contient 15 chiffres à la suites. si on en met 16 ça dit vrai et si on met 15 chiffres et une lettre (ou plus) au début ou à la fin ça dit vrai aussi.

                          en revanche, j'ai testé avec ça: if (preg_match("#^[0-9]{15}$#", $ss)) et ça n'a pas bugué.
                          1