Interrogation sur expression reguliere

Résolu
jupiler -  
 jupiler -
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. M@dien Messages postés 439 Date d'inscription   Statut Membre Dernière intervention   74
     
    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
  2. jupiler
     
    merci pour ta reponse mais ca ne marche pas j ajouter un 16eme caractères et ca marche ....
    0
  3. M@dien Messages postés 439 Date d'inscription   Statut Membre Dernière intervention   74
     
    Es-tu bien sûr d'avoir enlevé le dernier "^"?
    dans mes tests avec 16 chiffres ça ne marche pas...
    0
  4. jupiler
     
    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
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. M@dien Messages postés 439 Date d'inscription   Statut Membre Dernière intervention   74
     
    N'oublie pas les "#" en début et fin de chaine alors ^^
    0
  7. jupiler
     
    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
  8. M@dien Messages postés 439 Date d'inscription   Statut Membre Dernière intervention   74
     
    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
  9. jupiler
     
    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
  10. M@dien Messages postés 439 Date d'inscription   Statut Membre Dernière intervention   74
     
    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
  11. jupiler
     
    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
  12. jupiler
     
    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
  13. jupiler
     
    problme reolu il vient venait d la variable $ss qui recuperait une precedente session plutot que le POST ... merci de votre aide
    0