IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage PHP Discussion :

Fonction preg_match() concernant que les chiffres [RegEx]


Sujet :

Langage PHP

  1. #1
    Nouveau membre du Club
    Femme Profil pro
    Technicien réseau
    Inscrit en
    Octobre 2014
    Messages
    108
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Doubs (Franche Comté)

    Informations professionnelles :
    Activité : Technicien réseau
    Secteur : Santé

    Informations forums :
    Inscription : Octobre 2014
    Messages : 108
    Points : 30
    Points
    30
    Par défaut Fonction preg_match() concernant que les chiffres
    Bonjour

    Je voulais faire une fonction qui faisait en sorte de vérifié qu'une expression ne contienne que des chiffres mais le problème et qu'il accepte quand même les lettres et les signes alors que mon regex logiquement devrait les refuser.

    Voici mon code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    <?php
    echo " Le(s) NIP que vous voulez rejouer est : ";
    echo "<center><textarea id='NIP_MSG' name='NIP_MSG' rows='3' cols = '50'>"
    echo $NIP_MSG;
    echo "</textarea></center>";
    $pattern = '/^(\d{12}\\s*)*$/';
    $result = preg_match($pattern, $NIP_MSG);
    $listNumPatient = preg_split('/[\s]+/', $NIP_MSG);
    ?>
    Merci d'avance

  2. #2
    Rédacteur

    Avatar de Bovino
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juin 2008
    Messages
    23 647
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2008
    Messages : 23 647
    Points : 91 418
    Points
    91 418
    Billets dans le blog
    20
    Par défaut
    Comment tu sais si le format est correct puisque tu ne le vérifies pas ?

    Ensuite, elle est étrange ton expression... Tu recherches 12 chiffres, suivis d'un antislash et d'autant de s que l'on veut.
    Pas de question technique par MP !
    Tout le monde peut participer à developpez.com, vous avez une idée, contactez-moi !
    Mes formations video2brain : La formation complète sur JavaScriptJavaScript et le DOM par la pratiquePHP 5 et MySQL : les fondamentaux
    Mon livre sur jQuery
    Module Firefox / Chrome d'intégration de JSFiddle et CodePen sur le forum

  3. #3
    Nouveau membre du Club
    Femme Profil pro
    Technicien réseau
    Inscrit en
    Octobre 2014
    Messages
    108
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Doubs (Franche Comté)

    Informations professionnelles :
    Activité : Technicien réseau
    Secteur : Santé

    Informations forums :
    Inscription : Octobre 2014
    Messages : 108
    Points : 30
    Points
    30
    Par défaut
    Bonjour Bovino,

    Je vérifie bien mon expression par la suite, car si je rentre 12 chiffres cela s'enregistre bien correctement dans les variables, tandis que si elle est inférieur ou supérieur a 12 alors, cela m'affiche une erreur en me disant que le numéro dossier saisi fait moins ou plus de 12 caractères.

    Et pour mon regexp, j'aimerai que l'utilisateur entre un numéro qui comporte 12 chiffres uniquement et vue qu'il les rentres dans un textarea, il peut en saisir plusieurs donc j'ai mis un \s pour qu'il puisse mettre des espaces entre chaque numéros ou allez a la ligne.

    Mais lorsque je rentre mes numéros donc normalement, et par la suite j'ai fais des tests sur le lettres et signes, et il me les prends bien en compte.
    Pourtant ce n'est pas se que j'aimerais avoir comme résultat.

    Mon Code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    if($TYPE_MSG1 == 'M1'){
    	if (isset($_POST['NIP'])){
    		$NIP=$_POST['NIP'];
    	}else {
    		$NIP = '';
    	}
    	echo " Le(s) NIP que vous voulez rejouer est : ";
    	echo "<center><textarea id='NIP' name='NIP' rows='3' cols = '50'>";
    	echo $NIP;
    	echo "</textarea></center>";
    	//on découpe la chaîne en fonction des espaces rencontrés (eclatement d'une chaine)
    	$pattern = '/^([0-9]{12}\\s*)*$/';
    	$result = preg_match($pattern, $NIP);
    	$listNumPatient = preg_split('/[\s]+/', $NIP);
    	$i = 1;
    	$lenghtNumPatient = 12;
    	foreach ($listNumPatient as $numPatient){
    		if ($numPatient != ''){
    			// La longueur actuelle est numDossier
    			$actualLength = strlen($numPatient);
    			// si la longueur de numDossier < 12 OU si la longueur de numDossier > 12
    			if ($actualLength < $lenghtNumPatient || $actualLength > $lenghtNumPatient) {
    				echo '<p>Le numéro de dossier "' . $numPatient . '" (saisi en n°' . $i . ') fait moins ou plus de ' . lenghtNumPatient . ' caractères</p>';
    			} else {
    				echo '<p>Le numéro de dossier "' . $numPatient . '" est valide.</p>';
    			}
    			$i++;
    		}
    	}
    }
    Merci d'avance

  4. #4
    Rédacteur

    Avatar de Bovino
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juin 2008
    Messages
    23 647
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2008
    Messages : 23 647
    Points : 91 418
    Points
    91 418
    Billets dans le blog
    20
    Par défaut
    Je vérifie bien mon expression par la suite
    Si tu le dis...

    car si je rentre 12 chiffres cela s'enregistre bien correctement dans les variables, tandis que si elle est inférieur ou supérieur a 12 alors, cela m'affiche une erreur
    Ah... moi qui pensais que cela correspondait à la condition
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    if ($actualLength < $lenghtNumPatient || $actualLength > $lenghtNumPatient)
    (au passage, != fait la même chose en une seule instruction) qui n'a rien à voir avec ta regexp, mais là encore, je dois me tromper.

    donc j'ai mis un \s pour qu'il puisse mettre des espaces
    Décidément, mes yeux me jouent de sacrés tours aujourd'hui, parce que moi, je vois plutôt \\s, soit, en langage regexp, la recherche d'un antislash suivi du caractère s.
    Mais à la rigueur, ça a au final assez peu d'importance puisqu'encore une fois, tu n'utilises jamais cette expression pour vérifier la validité de ta donnée.
    Pas de question technique par MP !
    Tout le monde peut participer à developpez.com, vous avez une idée, contactez-moi !
    Mes formations video2brain : La formation complète sur JavaScriptJavaScript et le DOM par la pratiquePHP 5 et MySQL : les fondamentaux
    Mon livre sur jQuery
    Module Firefox / Chrome d'intégration de JSFiddle et CodePen sur le forum

  5. #5
    Nouveau membre du Club
    Femme Profil pro
    Technicien réseau
    Inscrit en
    Octobre 2014
    Messages
    108
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Doubs (Franche Comté)

    Informations professionnelles :
    Activité : Technicien réseau
    Secteur : Santé

    Informations forums :
    Inscription : Octobre 2014
    Messages : 108
    Points : 30
    Points
    30
    Par défaut
    Je pensais que je la vérifiais, excusez moi ...
    Donc je ne comprend pas tout ce qu'il faut que je fasse, pourriez vous m'aidez s'il vous plait a corrigé mon problème ?

    Comment puis je vérifier mon expression ?
    Comment puis je faire pour ne prendre que des chiffres de 0 à 9 et que l'utilisateur en saisissent 12 pour le NIP et 9 pour le NDA ?
    Et les mettre un séparateurs ( comme espace ou retour a la ligne ) pour qu'il prenne en compte tout les numéros ?

    Merci d'avance

  6. #6
    Expert éminent sénior
    Avatar de rawsrc
    Homme Profil pro
    Dev indep
    Inscrit en
    Mars 2004
    Messages
    6 142
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Dev indep

    Informations forums :
    Inscription : Mars 2004
    Messages : 6 142
    Points : 16 545
    Points
    16 545
    Billets dans le blog
    12
    Par défaut
    Salut,

    y a quand même plus simple et bien plus performant qu'un regex pour vérifier que tu n'as que des digits.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    if (ctype_digit(str_replace(' ', '', $nip)) && (strlen($nip) === 12)) { ... }

  7. #7
    Nouveau membre du Club
    Femme Profil pro
    Technicien réseau
    Inscrit en
    Octobre 2014
    Messages
    108
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Doubs (Franche Comté)

    Informations professionnelles :
    Activité : Technicien réseau
    Secteur : Santé

    Informations forums :
    Inscription : Octobre 2014
    Messages : 108
    Points : 30
    Points
    30
    Par défaut
    Bonjour,
    Merci de votre réponse, mais je ne vois pas comment utiliser votre condition dans mon code :/.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    <?php
    $TYPE_MSG1 = $_POST['TYPE_MSG1'];
    echo "</br></br>";
    if($TYPE_MSG1 == 'M1'){
    	if (isset($_POST['NIP'])){
    		$NIP=$_POST['NIP'];
    	}else {
    		$NIP = '';
    	}
    	echo " Le(s) NIP que vous voulez rejouer est : ";
    	echo "<center><textarea id='NIP' name='NIP' rows='3' cols = '50'>";
    	echo $NIP;
    	echo "</textarea></center>";
    	//on découpe la chaîne en fonction des espaces rencontrés (eclatement d'une chaine)
    	if (ctype_digit(str_replace(' ', '', $NIP)) && (strlen($NIP) === 12)){
    		$i = 1;
    		$lenghtNumPatient = 12;
    		foreach ($listNumPatient as $numPatient) {
    			if ($numPatient != '') {
    				// La longueur actuelle est numDossier
    				$actualLength = strlen($numPatient);
    				// si la longueur de numDossier < 12 OU si la longueur de numDossier > 12
    				if ($actualLength != $lenghtNumPatient ) {
    					echo '<p>Le numéro de dossier "' . $numPatient . '" (saisi en n°' . $i . ') fait moins ou plus de ' . $lenghtNumPatient . ' caractères</p>';
    				} else {
    					 echo '<p>Le numéro de dossier "' . $numPatient . '" est valide.</p>';
    				}
    				$i++;
    			}
    		}
    	}
    }
    ?>
    Mais cela ne fonctionne pas, et je pense que je n'utilise pas comme il faut la condition ...

    Merci d'avance

  8. #8
    Expert éminent sénior
    Avatar de rawsrc
    Homme Profil pro
    Dev indep
    Inscrit en
    Mars 2004
    Messages
    6 142
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Dev indep

    Informations forums :
    Inscription : Mars 2004
    Messages : 6 142
    Points : 16 545
    Points
    16 545
    Billets dans le blog
    12
    Par défaut
    La condition est bonne, si tu n'obtiens pas ce qui est escompté c'est que le test n'est pas vérifié.

    D'ailleurs, pourquoi utiliser un <textarea></textarea> pour saisir juste un numéro de 12 digits ?

  9. #9
    Nouveau membre du Club
    Femme Profil pro
    Technicien réseau
    Inscrit en
    Octobre 2014
    Messages
    108
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Doubs (Franche Comté)

    Informations professionnelles :
    Activité : Technicien réseau
    Secteur : Santé

    Informations forums :
    Inscription : Octobre 2014
    Messages : 108
    Points : 30
    Points
    30
    Par défaut
    Alors j'utilise un textarea car l'utilisateur va pouvoir rentrer un a plusieurs numéros dedans.

    Cela va lui permettre de rejouer des messages NDA pour numéro de dossiers et NIP pour les numéro d'identifiant.
    Le NDA doit contenir 9 chiffres et le NIP doit en contenir 12 chiffres (et rien d'autre).

    Au delà de 20 numéros il devra télécharger un fichier CSV, mais je n'en suis pas encore la.. ^^

    C'est pour cela que j'utilise du regexp pour prendre juste les numéros de 0 à 9 ainsi que les espaces et retour a la ligne et je lui dis qu'il faut qu'il y ai que 12 chiffres pour le NIP et 9 pour le NDA.
    Mais cela ne fonctionne pas comme je le pensais et je n'arrive plus a trouver de solutions, j'ai beau regarder sur les forums mais je n'arrive pas a y trouver.

    C'est pour cela que je poste une conversation afin de pouvoir résoudre ce problème ...

    Merci d'avance ..

  10. #10
    Expert éminent sénior
    Avatar de rawsrc
    Homme Profil pro
    Dev indep
    Inscrit en
    Mars 2004
    Messages
    6 142
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Dev indep

    Informations forums :
    Inscription : Mars 2004
    Messages : 6 142
    Points : 16 545
    Points
    16 545
    Billets dans le blog
    12
    Par défaut
    Ok, alors décodons :
    le <textarea></textarea> est censé ne contenir que des numéros NIP contenant des espaces (ou pas) et chaque n° est sur une ligne distincte, c'est ça j'ai bon ?
    Le numéro NDA, il est renseigné en amont dans une zone de texte ou il est avec son copain NIP ?

  11. #11
    Nouveau membre du Club
    Femme Profil pro
    Technicien réseau
    Inscrit en
    Octobre 2014
    Messages
    108
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Doubs (Franche Comté)

    Informations professionnelles :
    Activité : Technicien réseau
    Secteur : Santé

    Informations forums :
    Inscription : Octobre 2014
    Messages : 108
    Points : 30
    Points
    30
    Par défaut
    Alors j'explique le but de ce petit site, il va permettre de réémettre des message de type NIP (qui sont des numéros d'identifiant patient) comportant 12 chiffres. L'utilisateur va pouvoir en saisir autant qu'il doit en réémettre exemple :
    012345678912 987564321654 963258741258
    Il peut les saisir donc comme je vient de le marquer les un après les autres séparés par un espace mais aussi pas un retour a la ligne.

    Pour réémettre des messages de type NDA (numéro de dossiers) comportant cette fois ci 9 chiffres. Et donc l'utilisateur va pouvoir en saisir autant qu'il doit en réémettre exemple :
    963258714 123456789 [...]

    Au delà de 20 numéros il devra télécharger un fichier CSV. (mais je suis encore loin de se cas la )

    La se corse un peu plus les choses :

    Dans mon site web l'utilisateur choisis une application ou il voudra rejouer les messages, qui par la suite devra choisir a partir d'une liste (select) le type de message qu'il veut rejouer (LST ou MSG).

    Lorsqu'il choisi par exemple MSG, une seconde liste s'affichera et il pourra choisir le Format du message qu'il veut rejouer maintenant et donc :
    Si c'est un message M1 -> on rejoue sur un ou plusieurs NIP
    Si il est différent de M1 -> on rejoue sur un ou plusieurs NDA

    Voici mon code pour peut être comprendre un peux mieux le fonctionnement :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
    141
    142
    143
    144
    145
    146
    147
    148
    149
    150
    151
    152
    153
    154
    155
    156
    157
    158
    159
    160
    161
    162
    163
    164
    165
    166
    167
    168
    169
    170
    171
    172
    173
    174
    175
    176
    177
    178
    179
    180
    181
    182
    183
    184
    185
    186
    187
    188
    189
    190
    191
    192
    193
    194
    195
    196
    197
    198
    199
    200
    201
    202
    203
    204
    205
    206
    207
    208
    209
    210
    211
    212
    213
    214
    <?php
     
      include( "../include/infirst.inc"  );
      include( "../include/myfuncts.inc" );
      include( "../include/my_sgbd.inc"  );
      include( "../include/jquery_footer.js");
     
      // vérification de la présence du cookie de l'utilisateur
     
    	Entete();
    	Titre_Page("Message" );
    	Haut_TCorps();
    	$appli = $_POST['abonne_destinataire'];   
    	$TYPE_MSG = $_POST['TYPE_MSG'];
    	$TYPE_MSG1 = $_POST['TYPE_MSG1'];
     
     
    	echo "	<H1><center>Réemission des messages</center></H1></br> ";
     
    	echo " <p> Pour quelles applications voulez vous réemettre :</p> "; 
    	echo "  <FORM method='post' id='Application' action='test3.php'> \n";
     
    			 $hl7_IMS_ABONNE = $_POST['hl7_IMS_ABONNE'];
     
    			 $requete = 'SELECT RECEIVING_APPLICATION FROM hl7_IMS_ABONNE order by 1' ;
    			 $res= exec_select( 'ORACLE8', 'TCPAGE', $requete,'', $trace=true );
    	echo " 	<select  id='abonne' name='abonne_destinataire' onchange='submit()'>";
    															//onchange='submit()' 
    			for($i=0 ; $i < sizeof($res); $i++)
    			{
     
    				$resultat=($res[$i]['RECEIVING_APPLICATION']);
    				if($resultat == $appli)
    				{
    					echo " <option selected ='selected' value='".$resultat."'>".$resultat."</option>";
    				}
    				else
    				{
    					echo " <option value='".$resultat."'>".$resultat."</option>";
     
    				}
    			}
    	echo "	</select><br>";
     
    	echo "	<p>Vous avez sélectionné l'application : ";
    			$appli = $_POST['abonne_destinataire'];
    	echo 	$appli;
    	echo " </br></br> ";
     
    	/*--------------------------------------------------------------------------------------------*/
     
    	echo "	<p>Quel type de message ou collection (MSG ou LST) voulez vous réemettre : <br><br>";
    			$requete1 = 'SELECT DISTINCT TYPE_MSG FROM hl7_IMS_REEMIS order by 1' ;
    			$res1= exec_select( 'ORACLE8', 'TCPAGE', $requete1,'', $trace=true );
    	echo " 	<select  id='TYPE_MSG' name='TYPE_MSG'  onchange='submit()'>";
    												//onchange='submit()' 
    			for($i=0 ; $i < sizeof($res1); $i++)
    			{
     
    				$resultat1=($res1[$i]['TYPE_MSG']);
    				if($resultat1 == $TYPE_MSG)
    				{
    					echo " <option selected ='selected' value='".$resultat1."'>".$resultat1."</option>";
    				}
    				else
    				{
    					echo " <option value='".$resultat1."'>".$resultat1."</option>";
     
    				}
    			}
     
    	echo "	</select><br>";
     
    			$TYPE_MSG = $_POST['TYPE_MSG'];
    			echo "</br> La valeur que vous avez sélectionné est : ".$TYPE_MSG;
    			echo "</br></br>";
     
    /* ----------------------------------Condition pour le MSG  ----------------------------------*/			
     
    			if($TYPE_MSG == 'MSG')
    			{	
    	echo " 		<select name='TYPE_MSG1' id='TYPE_MSG1' onchange='submit()'>";
    					if($TYPE_MSG1 == '')
    						{
    							echo "	<option selected ='selected' value=''></option>";
    						}
    					else {
    						echo "	<option value=''></option>";
    					}
    					if($TYPE_MSG1 == 'M1')
    						{
    							echo "	<option selected ='selected' value='M1'>M1</option>";
    						}
    					else {
    						echo "	<option value='M1'>M1</option>";
    					}
    					if($TYPE_MSG1 == 'M2')
    					{
    						echo "	<option selected ='selected' value='M2'>M2</option>";
    					}
    					else {
    						echo "	<option value='M2'>M2</option>";
    					}
    					if($TYPE_MSG1 == 'M6')
    					{
    						echo "	<option selected ='selected' value='M6'>M6</option>";
    					}
    					else {
    						echo "	<option value='M6'>M6</option>";
    					}
    					if($TYPE_MSG1 == 'M8')
    					{
    						echo "	<option selected ='selected' value='M8'>M8</option>";
    					}
    					else {
    						echo "	<option value='M8'>M8</option>";
    					}
    					if($TYPE_MSG1 == 'M9')
    					{
    						echo "	<option selected ='selected' value='M9'>M9</option>";
    					}
    					else {
    						echo "	<option value='M9'>M9</option>";
    					}
    	echo"		</select>";
    			}
    			$TYPE_MSG1 = $_POST['TYPE_MSG1'];
    			echo "</br></br>";
     
    			if($TYPE_MSG1 == 'M1')
    			{
    				if (isset($_POST['NIP']))
    				{		
    					$NIP=$_POST['NIP'];
    				}else {
    					$NIP = '';
    				}
     
    				echo " Le(s) NIP que vous voulez rejouer est : ";
    				echo "<center><textarea id='NIP' name='NIP' rows='3' cols = '50'>";
    				echo $NIP;
    				echo "</textarea></center>";
    				//on découpe la chaîne en fonction des espaces rencontrés (eclatement d'une chaine)
     
    				$pattern = '/^([0-9]{12}\s*)*$/';
    				$result = preg_match($pattern, $NIP);
    			    $listNumPatient = preg_split('/[\s]+/', $NIP);
    			    $i = 1;
    			    $lenghtNumPatient = 12;
     
    			    foreach ($listNumPatient as $numPatient) 
    				{
    				    if ($numPatient != '') 
    				    {
    				    	// La longueur actuelle est numDossier
    				        $actualLength = strlen($numPatient);
    				        // si la longueur de numDossier < 12 OU si la longueur de numDossier > 12
    				        if ($actualLength != $lenghtNumPatient ) 
    					    {
    				        	echo '<p>Le numéro de dossier "' . $numPatient . '" (saisi en n°' . $i . ') fait moins ou plus de ' . $lenghtNumPatient . ' caractères</p>';
    				        } else 
    				        {
    				            echo '<p>Le numéro de dossier "' . $numPatient . '" est valide.</p>';
    				        }
    			        	$i++;
    				    }
    				}
    			}else
    			{		
     
    				if (isset($_POST['NDA']))
    				{
    					$NDA=$_POST['NDA'];
    				}else {
    					$NDA = '';
    				}
     
    				echo " Le(s) NDA que vous voulez rejouer est : ";
    				echo "<center><textarea id='NDA' name='NDA' rows='3' cols = '50'>";
    				echo $NDA;
    				echo "</textarea></center>";
    				//on découpe la chaîne en fonction des espaces rencontrés (eclatement d'une chaine)
     
    				$pattern = '/^([0-9]{9}\s*)*$/';
    				$result = preg_match($pattern, $NDA);
     
    				//on decoupe la chaine en fonction des espaces rencontres
    			    $listNumDossiers1 = preg_split('/[\s]+/', $NDA);
    			    //le dernier item est vide car la chaine se termine par un espace ce qui cree une entree
     
    				$i = 1; // pour aider l'utilisateur à savoir quel numéro de dossier il a mal saisi
    				$lenghtNumDossier1 = 9;
    				foreach ($listNumDossiers1 as $numDossier1) 
    				{
    				    if ($numDossier1 != '') 
    				    {
    						// La longueur actuelle est numDossier
    				        $actualLength1 = strlen($numDossier1);
    				        // si la longueur de numDossier < 9 OU si la longueur de numDossier >9
    				        if ($actualLength != $lenghtNumPatient ) 
    				        {
    				        	echo '<p>Le numéro de dossier "' . $numDossier1 . '" (saisi en n°' . $i . ') fait moins ou plus de ' . $lenghtNumDossier1 . ' caractères</p>';
    				        } else 
    				        {
    				            echo '<p>Le numéro de dossier "' . $numDossier1 . '" est valide.</p>';
    				        }
    				        $i++;
    				    }
    				}
    			}
    			echo "<center><input type='submit' name='valid' value='Sauver' style='width:100px'></center>";			
     
    		echo "	</FORM>";
    ?>
    Merci d'avance

  12. #12
    Expert éminent sénior
    Avatar de rawsrc
    Homme Profil pro
    Dev indep
    Inscrit en
    Mars 2004
    Messages
    6 142
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Dev indep

    Informations forums :
    Inscription : Mars 2004
    Messages : 6 142
    Points : 16 545
    Points
    16 545
    Billets dans le blog
    12
    Par défaut
    Ton code est vraiment vilain, redondant et difficile à suivre...
    Tu dois mieux organiser les différentes parties et surtout éviter de coller des gros traitements PHP en plein milieu du code HTML.

    Prends l'habitude de toujours regrouper les traitements PHP en début de script et finis par le HTML.

    Je n'ai rien testé donc croisage des orteils :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    <?php
     
    include '../include/infirst.inc';
    include '../include/myfuncts.inc';
    include '../include/my_sgbd.inc';
    include '../include/jquery_footer.js';
     
    // vérification de la présence du cookie de l'utilisateur
    Entete();
    Titre_Page("Message");
    Haut_TCorps();
     
    $appli          = isset($_POST['abonne_destinataire']) ? $_POST['abonne_destinataire'] : '';
    $type_msg       = isset($_POST['TYPE_MSG'])            ? $_POST['TYPE_MSG']            : '';
    $type_msg1      = isset($_POST['TYPE_MSG1'])           ? $_POST['TYPE_MSG1']           : '';
    $hl7_IMS_ABONNE = isset($_POST['hl7_IMS_ABONNE'])      ? $_POST['hl7_IMS_ABONNE']      : '';
    $nip            = isset($_POST['NIP'])                 ? $_POST['NIP']                 : '';
    $nda            = isset($_POST['NDA'])                 ? $_POST['NDA']                 : '';
     
    // fonction d'échappement
    $hsc = function($p) { return htmlspecialchars($p); };
     
    // liste des abonnés destinataires
    $sql     = 'SELECT RECEIVING_APPLICATION FROM hl7_IMS_ABONNE ORDER BY 1';
    $data    = exec_select('ORACLE8', 'TCPAGE', $sql, '', true);
    $abonnes = '';
    foreach ($data as $v)
    {
        $selected = ($v['RECEIVING_APPLICATION'] === $appli) ? ' selected="selected"' : '';
        $value    = $hsc($v['RECEIVING_APPLICATION']);
        $abonnes .= '<option'.$selected.' value="'.$value.'">'.$value.'</option>';
    }
     
    // liste des types de message
    $sql   = 'SELECT DISTINCT TYPE_MSG FROM hl7_IMS_REEMIS ORDER BY 1';
    $data  = exec_select('ORACLE8', 'TCPAGE', $sql, '', true);
    $types = '';
    foreach ($data as $v)
    {
        $selected = ($v['TYPE_MSG'] === $type_msg) ? ' selected="selected"' : '';
        $value    = $hsc($v['TYPE_MSG']);
        $types   .= '<option'.$selected.' value="'.$value.'">'.$value.'</option>';
    }
     
    // sous-messages
    $ssmsg = '';
    if (strtoupper($type_msg) === 'MSG')
    {
        $data = array('', 'M1', 'M2', 'M6', 'M8', 'M9');
        $msg1 = '';
        foreach ($data as $v)
        {
            $selected = ($v === $type_msg1) ? ' selected="selected"' : '';
            $msg1    .= '<option'.$selected.' value="'.$v.'">'.$v.'</option>';
        }
     
        $ssmsg = <<<html
    <select name="TYPE_MSG1" id="TYPE_MSG1" onchange="submit()">
        {$msg1}
    </select>
    html;
    }
     
    $validate_digits_and_length =
        function($data, $len) use ($hsc)
        {
            $data = array_filter(array_map('trim', explode("\n", $data)));
            foreach ($data as $i => $num)
            {
                echo '<p>Le numéro de dossier "'.$hsc($num).'" ',
                     ((ctype_digit((string)$num) && (strlen($num) === $len))
                         ? 'est valide.</p>'
                         : '(saisi en n°'.++$i.') fait moins ou plus de '.$len.' caractères</p>');
            }
        }
    ?>
    <h1><center>Réemission des messages</center></h1><br>
    <p>Pour quelles applications voulez vous réemettre :</p>
    <form method="post" id="Application" action="test3.php">
        <select  id="abonne" name="abonne_destinataire" onchange="submit()">
            <?= $abonnes ?>
        </select><br>
        <p>Vous avez sélectionné l'application : <?= $hsc($appli) ?><br><br>
        <p>Quel type de message ou collection (MSG ou LST) voulez vous réemettre : <br><br>
            <select  id="TYPE_MSG" name="TYPE_MSG" onchange="submit()">
                <?= $types ?>
            </select><br><br>La valeur que vous avez sélectionné est : <?= $type_msg ?><br><br>
            <?= $ssmsg ?>
            <br><br>
            <?php
            if ($type_msg1 === 'M1')
            {
                echo <<<html
            Le(s) NIP que vous voulez rejouer sont :
            <center><textarea id="NIP" name="NIP" rows="3" cols="50">{$hsc($nip)}</textarea></center>
    html;
                $validate_digits_and_length($nip, 12);
            }
            else
            {
                echo <<<html
            Le(s) NDA que vous voulez rejouer sont :
            <center><textarea id="NDA" name="NDA" rows="3" cols="50">{$hsc($nda)}</textarea></center>
    html;
                $validate_digits_and_length($nda, 9);
            }            
            ?>
        </p>
        <center><input type="submit" name="valid" value="Sauver" style="width:100px"></center>
    </form>

  13. #13
    Nouveau membre du Club
    Femme Profil pro
    Technicien réseau
    Inscrit en
    Octobre 2014
    Messages
    108
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Doubs (Franche Comté)

    Informations professionnelles :
    Activité : Technicien réseau
    Secteur : Santé

    Informations forums :
    Inscription : Octobre 2014
    Messages : 108
    Points : 30
    Points
    30
    Par défaut
    Merci pour ta réponse,

    Malheureusement cela ne fonctionne pas et ne se connecte plus du tout a la base de données.
    Au niveau de mon code, on ma dis qu'il fallait coder qu'en php et non faire du html dans du php donc j'écoute juste et fait ce qu'on me demande .
    Mais j'avoue que ce n'est pas la meilleure des solutions ...

    Je ne vois pas comment résoudre ce problème..

  14. #14
    Expert éminent sénior
    Avatar de rawsrc
    Homme Profil pro
    Dev indep
    Inscrit en
    Mars 2004
    Messages
    6 142
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Dev indep

    Informations forums :
    Inscription : Mars 2004
    Messages : 6 142
    Points : 16 545
    Points
    16 545
    Billets dans le blog
    12
    Par défaut
    Bon, ce ne se connecte plus, ok mais est-ce-que t'as cherché pourquoi ? Est-ce-que tu as au moins essayé de comparer les versions, les changements ou même de déboguer ?

    La seule différence au niveau de la connexion est visible au premier coup d’œil :
    Ton ancien code était :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $res= exec_select( 'ORACLE8', 'TCPAGE', $requete,'', $trace=true );
    et le mien était :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $data = exec_select('ORACLE8', 'TCPAGE', $sql, '', true);
    Essaie voir avec :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $data = exec_select('ORACLE8', 'TCPAGE', $sql, '', $trace = true);
    Il faut savoir que lorsqu'on reprend un code, on doit souvent jouer aux devinettes et sans avoir une copie conforme de l'environnement de production, il arrive parfois que certains bouts de code qui paraissent alambiqués doivent être conservés tels quels pour des raisons spécifiques au code source d'origine.

  15. #15
    Expert éminent Avatar de CosmoKnacki
    Homme Profil pro
    Justicier interdimensionnel
    Inscrit en
    Mars 2009
    Messages
    2 848
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Charente Maritime (Poitou Charente)

    Informations professionnelles :
    Activité : Justicier interdimensionnel

    Informations forums :
    Inscription : Mars 2009
    Messages : 2 848
    Points : 6 535
    Points
    6 535
    Par défaut
    À Bovino
    je vois plutôt \\s, soit, en langage regexp, la recherche d'un antislash suivi du caractère s
    En fait non, en PHP, écrire dans une pattern entre simple quotes, entre double quotes ou en heredoc, \\s ou \s (dans une classe de caractères ou pas) revient strictement au même car l'antislash surnuméraire est ignoré (étant donné qu'il en faut trois ou quatre pour obtenir un antislash littéral). Par contre, ce n'est plus le cas si on utilise la syntaxe nowdoc où un double antislash est bien vu comme un antislash littéral. Néanmoins, il s'agit bien là d'un confusion avec les syntaxes de Java ou de C++.

    À rawsrc
    bien plus performant qu'un regex
    La soi-disant lenteur des regex est une légende (pour diverses raisons). Si une regex est lente, c'est que soit la pattern est mal conçue (voire fausse), soit qu'on a choisi le mauvais outil (ce n'est pas forcément le cas ici).

    À titre d'illustration, j'ai comparé les performances de ces bouts de code (je les ai auparavant déclinés en plusieurs variantes pour retenir les plus efficaces):
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    $nipn = str_replace(' ', '',$nip);
    $test =(ctype_digit($nipn) && strlen($nipn) == 12);
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $test = preg_match('~\h*(?>[0-9]\h*){12}+\z~A', $nip);
    Le test consistait à exécuter le bout de code 1 seule fois plusieurs fois (10 100 1000 10000 ...) pour coller au plus prés de la situation réelle.

    Le résultat est sans appel. La différence entre les deux codes est insignifiante (de l'ordre de 10-5 voire 10-6 de seconde), soit en faveur du premier quand la chaîne est correcte, soit en faveur du second quand la chaîne est incorrecte. Mais quoi qu'il en soit la différence est minime au point que les tendances peuvent parfois s'inverser.

    Pour le premier bout de code, j'ai essayé de remplacer str_replace(' ', '', $nip) par strtr($nip, array(' ', '')) mais le coût de la création du tableau n'est pas amorti dans le cas d'un remplacement unique. Suivant l'usage, on peut aussi changer l'ordre des tests (on obtient un petit gain dans le cas où la taille de la chaîne ne correspond pas), mais on reste toujours dans les mêmes eaux.

    Si on fait un test bête et méchant en répétant chaque bout de code plusieurs fois (en les mettant dans un boucle), on reste toujours dans le même ordre de grandeur. À noter qu'à partir d'une dizaine d'itérations, la regex devient plus rapide (~2X) comme si le plus coûteux avait été, passez-moi l'expression, de sortir l'engin.
    Brachygobius xanthozonus
    Ctenobrycon Gymnocorymbus

  16. #16
    Nouveau membre du Club
    Femme Profil pro
    Technicien réseau
    Inscrit en
    Octobre 2014
    Messages
    108
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Doubs (Franche Comté)

    Informations professionnelles :
    Activité : Technicien réseau
    Secteur : Santé

    Informations forums :
    Inscription : Octobre 2014
    Messages : 108
    Points : 30
    Points
    30
    Par défaut
    Merci rawsrc et CosmoKnacki pour vos réponses,

    Le 28/11/14 je n'avais pas trop tester votre code rawsrc, je comptais y tester aujourd'hui.
    J'ai corrigé la requête qui permet la sélection comme vous l'avez marqué précédemment, j'ai essayé ensuite de comprendre le nouveau code.
    Mais je vous avoue que j'ai un petit peux de mal avec le nouveau code, qui a na rien a voir avec celui que j'avais fait auparavant.

    Le problème est toujours le même niveau HTML tout fonctionne mais niveau PHP, il ne réussi pas a aller chercher les valeurs dans la base de données, alors que la requête est exactement la même que celle que j'ai dans mon code.. :/

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    <?php
     
    include '../include/infirst.inc';
    include '../include/myfuncts.inc';
    include '../include/my_sgbd.inc';
    include '../include/jquery_footer.js';
     
    // vérification de la présence du cookie de l'utilisateur
    Entete();
    Titre_Page("Message");
    Haut_TCorps();
     
    $appli          = isset($_POST['abonne_destinataire']) ? $_POST['abonne_destinataire'] : '';
    $type_msg       = isset($_POST['TYPE_MSG'])            ? $_POST['TYPE_MSG']            : '';
    $type_msg1      = isset($_POST['TYPE_MSG1'])           ? $_POST['TYPE_MSG1']           : '';
    $hl7_IMS_ABONNE = isset($_POST['hl7_IMS_ABONNE'])      ? $_POST['hl7_IMS_ABONNE']      : '';
    $nip            = isset($_POST['NIP'])                 ? $_POST['NIP']                 : '';
    $nda            = isset($_POST['NDA'])                 ? $_POST['NDA']                 : '';
     
    // fonction d'échappement
    $hsc = function($p) { return htmlspecialchars($p); };
     
    // liste des abonnés destinataires
    $sql     = 'SELECT RECEIVING_APPLICATION FROM hl7_IMS_ABONNE order by 1';
    $data = exec_select( 'ORACLE8', 'TCPAGE', $sql,'', $trace=true );
    $abonnes = '';
    foreach ($data as $v)
    {
        $selected = ($v['RECEIVING_APPLICATION'] === $appli) ? ' selected="selected"' : '';
        $value    = $hsc($v['RECEIVING_APPLICATION']);
        $abonnes .= '<option'.$selected.' value="'.$value.'">'.$value.'</option>';
    }
     
    // liste des types de message
    $sql   = 'SELECT RECEIVING_APPLICATION FROM hl7_IMS_ABONNE order by 1';
    $data  = exec_select('ORACLE8', 'TCPAGE', $sql, '', $trace = true );
    $types = '';
    foreach ($data as $v)
    {
        $selected = ($v['TYPE_MSG'] === $type_msg) ? ' selected="selected"' : '';
        $value    = $hsc($v['TYPE_MSG']);
        $types   .= '<option'.$selected.' value="'.$value.'">'.$value.'</option>';
    }
     
    // sous-messages
    $ssmsg = '';
    if (strtoupper($type_msg) === 'MSG')
    {
        $data = array('', 'M1', 'M2', 'M6', 'M8', 'M9');
        $msg1 = '';
        foreach ($data as $v)
        {
            $selected = ($v === $type_msg1) ? ' selected="selected"' : '';
            $msg1    .= '<option'.$selected.' value="'.$v.'">'.$v.'</option>';
        }
     
        $ssmsg = <<<html
    <select name="TYPE_MSG1" id="TYPE_MSG1" onchange="submit()">
        {$msg1}
    </select>
    html;
    }
     
    $validate_digits_and_length =
        function($data, $len) use ($hsc)
        {
            $data = array_filter(array_map('trim', explode("\n", $data)));
            foreach ($data as $i => $num)
            {
                echo '<p>Le numéro de dossier "'.$hsc($num).'" ',
                     ((ctype_digit((string)$num) && (strlen($num) === $len))
                         ? 'est valide.</p>'
                         : '(saisi en n°'.++$i.') fait moins ou plus de '.$len.' caractères</p>');
            }
        }
    ?>
    <h1><center>Réemission des messages</center></h1><br>
    <p>Pour quelles applications voulez vous réemettre :</p>
    <form method="post" id="Application" action="test4.php">
        <select  id="abonne" name="abonne_destinataire" onchange="submit()">
            <?= $abonnes ?>
        </select><br>
        <p>Vous avez sélectionné l'application : <?= $hsc($appli) ?><br><br>
        <p>Quel type de message ou collection (MSG ou LST) voulez vous réemettre : <br><br>
            <select  id="TYPE_MSG" name="TYPE_MSG" onchange="submit()">
                <?= $types ?>
            </select><br><br>La valeur que vous avez sélectionné est : <?= $type_msg ?><br><br>
            <?= $ssmsg ?>
            <br><br>
            <?php
            if ($type_msg1 === 'M1')
            {
                echo <<<html
            Le(s) NIP que vous voulez rejouer sont :
            <center><textarea id="NIP" name="NIP" rows="3" cols="50">{$hsc($nip)}</textarea></center>
    html;
                $validate_digits_and_length($nip, 12);
            }
            else
            {
                echo <<<html
            Le(s) NDA que vous voulez rejouer sont :
            <center><textarea id="NDA" name="NDA" rows="3" cols="50">{$hsc($nda)}</textarea></center>
    html;
                $validate_digits_and_length($nda, 9);
            }            
            ?>
        </p>
        <center><input type="submit" name="valid" value="Sauver" style="width:100px"></center>
    </form>
    Merci d'avance

  17. #17
    Expert éminent sénior
    Avatar de rawsrc
    Homme Profil pro
    Dev indep
    Inscrit en
    Mars 2004
    Messages
    6 142
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Dev indep

    Informations forums :
    Inscription : Mars 2004
    Messages : 6 142
    Points : 16 545
    Points
    16 545
    Billets dans le blog
    12
    Par défaut
    Citation Envoyé par cahuet-200 Voir le message
    mais niveau PHP, il ne réussi pas a aller chercher les valeurs dans la base de données, alors que la requête est exactement la même que celle que j'ai dans mon code.. :/
    Là on ne peut rien pour toi, tu dois trouver ce qui a changé dans ton environnement d'exécution depuis la version originale.

  18. #18
    Nouveau membre du Club
    Femme Profil pro
    Technicien réseau
    Inscrit en
    Octobre 2014
    Messages
    108
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Doubs (Franche Comté)

    Informations professionnelles :
    Activité : Technicien réseau
    Secteur : Santé

    Informations forums :
    Inscription : Octobre 2014
    Messages : 108
    Points : 30
    Points
    30
    Par défaut
    D'accord merci beaucoup, je vais peut être repartir déja dans un premier temps sur mon ancien code afin de trouver déjà la faille qu'il peut y avoir avec le pattern ..

    Mais j'ai une question,
    Pourquoi mon pattern ne fonctionne t'il pas correctement, sachant qu'il ne devrait me sortir que des chiffres et que lorsque je lui met des lettres ils les prend bien en compte et ne me les mets pas en erreur ?

    Merci d'avance

  19. #19
    Expert éminent Avatar de CosmoKnacki
    Homme Profil pro
    Justicier interdimensionnel
    Inscrit en
    Mars 2009
    Messages
    2 848
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Charente Maritime (Poitou Charente)

    Informations professionnelles :
    Activité : Justicier interdimensionnel

    Informations forums :
    Inscription : Mars 2009
    Messages : 2 848
    Points : 6 535
    Points
    6 535
    Par défaut
    Le problème est que tu utilises bien l'instruction preg_match pour effectuer un test, mais que nulle part tu n'utilises le résultat de ce test. Donc que le résultat du test soit true ou false, la suite du code est exécutée.

    Concrètement, un test avec preg_match (comme n'importe quel test) s'effectue de cette manière:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    if (preg_match($lapattern, $lachaine)) {
       // si le test réussi
    } else {
      // si le test échoue
    }
    Maintenant dans l'état actuel des choses, tu te retrouves avec deux codes non fonctionnels. Quitte à t'investir dans la correction/adaptation de l'un des deux, autant choisir celui qui est le mieux conçu, même si tu dois passer du temps pour en comprendre la logique, tu as tout à y gagner.

    Trouver ce qui ne fonctionne pas dans un code n'a rien de sorcier, utilises var_dump() pour afficher la valeur d'une variable ou le résultat d'un test et vois si c'est bien la valeur attendue; si ce n'est pas le cas, remonte le dans le code jusqu'à trouver l'origine du problème.
    Brachygobius xanthozonus
    Ctenobrycon Gymnocorymbus

  20. #20
    Nouveau membre du Club
    Femme Profil pro
    Technicien réseau
    Inscrit en
    Octobre 2014
    Messages
    108
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Doubs (Franche Comté)

    Informations professionnelles :
    Activité : Technicien réseau
    Secteur : Santé

    Informations forums :
    Inscription : Octobre 2014
    Messages : 108
    Points : 30
    Points
    30
    Par défaut
    D'accord je vient donc de tester ce que vous m'aviez dit de faire, et je récupère bien le résultat que je tape dans le var_dump
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    						$TYPE_MSG1 = $_POST['TYPE_MSG1'];
    			echo "</br></br>";
     
    			if($TYPE_MSG1 == 'M1')
    			{
    				if (isset($_POST['NIP']))
    				{		
    					$NIP=$_POST['NIP'];
    				}else {
    					$NIP = '';
    				}
     
    				echo " Le(s) NIP que vous voulez rejouer est : ";
    				echo "<center><textarea id='NIP' name='NIP' rows='3' cols = '50'>";
    				echo $NIP;
    				echo "</textarea></center>";
     
    				//on découpe la chaîne en fonction des espaces rencontrés (eclatement d'une chaine)
    				$result = preg_match('/^([0-9]{12}\s*)*$/', $NIP);
    				var_dump($result);
    				//on découpe la chaîne en fonction des espaces rencontrés
    				$listNumPatient = preg_split('/[\s]+/', $NIP);
    				var_dump($listNumPatient);
    			    $i = 1;
    			    $lenghtNumPatient = 12;
     
    			    foreach ($listNumPatient as $numPatient) 
    				{
    				    if ($numPatient != '') 
    				    {
    				    	// La longueur actuelle est numDossier
    				        $actualLength = strlen($numPatient);
    				        // si la longueur de numDossier < 12 OU si la longueur de numDossier > 12
    				        if ($actualLength != $lenghtNumPatient ) 
    					    {
    				        	echo '<p>Le numéro de dossier "' . $numPatient . '" (saisi en n°' . $i . ') fait moins ou plus de ' . $lenghtNumPatient . ' caractères</p>';
    				        } else 
    				        {
    				            echo '<p>Le numéro de dossier "' . $numPatient . '" est valide.</p>';
    				        }
    			        	$i++;
    				    }
    				}
    			}
    Je suis tout a fait d'accord dans ce que vous dites, il faut d'abord je me concentre sur un code plutôt que les deux en même temps, et c'est se que je fais d'ailleurs en gardant mien tout d'abord même si il est pas "top" pour certain, je le comprend plus facilement que l'autre.

    Est ce bien ce qu'il fallait faire comme test ?

    Merci encore

+ Répondre à la discussion
Cette discussion est résolue.
Page 1 sur 2 12 DernièreDernière

Discussions similaires

  1. Ce forum ne concerne que les scripts de CMS en langage PHP
    Par Community Management dans le forum EDI, CMS, Outils, Scripts et API
    Réponses: 0
    Dernier message: 14/03/2007, 19h30
  2. autoriser que les chiffres dans un champ
    Par ph_anrys dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 31/08/2006, 17h17
  3. [VBA-E]ComboBox + RowSource ne concerne que les lignes ?
    Par ouskel'n'or dans le forum Macros et VBA Excel
    Réponses: 11
    Dernier message: 10/04/2006, 15h29
  4. un input qui accepte que les chiffres ?
    Par VerrNum dans le forum Général JavaScript
    Réponses: 5
    Dernier message: 27/03/2006, 14h28
  5. un champ n'accepte que les chiffres....
    Par fadex dans le forum Général JavaScript
    Réponses: 11
    Dernier message: 19/10/2005, 15h18

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo