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 :

Calcul de la longueur d'une chaîne [PHP 5.0]


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 Calcul de la longueur d'une chaîne
    Bonjour a tous,

    Mon problème est que j'aimerais pouvoir calculer la longueur de ma chaine NDA qui est composé que de numéro entre 0 et 9, et donc la la longueur de la chaine doit être égale à 9, si elle est supérieur ou inférieur alors ce n'est pas un NDA.

    J'ai essayer d'utiliser strlen, mais en fonction de mon problème je ne voit pas comment faire, c'est pour cela que je me permets d'écrire une nouvelle discussion afin de résoudre mon problème !

    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
     
    $NDA = $_POST['NDA'];
    echo "  <FORM method='post' id='Application' action='test.php'> \n";
     
    echo " Le(s) NIP que vous voulez rejouer est : ";
    echo "<center><textarea id='NDA' name='NDA' rows='3' cols = '50'>";
    echo $NDA;
    echo "</textarea></center>";
    echo "<center><input type='submit' name='valid' value='Sauver' style='width:100px'></center>";           
     
    $pattern = '/^([a-zA-Z0-9\s*]+)*$/';
     
    $result = preg_match ($pattern, $NDA);
    var_dump($result);
    if($result === 0 || $result === false){
      echo 'erreur dans la saisie des numéros de dossiers';
    } else {
    //on découpe la chaîne en fonction des espaces rencontrés
          $listeNDA = preg_split('/[\s]+/',$NDA);
          var_dump($listeNDA);
     
    //le dernier item est vide car la chaîne se termine par un espace ce qui crée une entrée
     
               foreach($listeNDA as $numDossier){
                if($numDossier != ''){
                  //insertion en BDD par exemple
                  echo '<p>'.$numDossier.'</p>';
                }
               }
    }
    echo "  </FORM>";
    ?>
    J'ai aussi une erreur peut importante je pense, qui affiche :
    Notice: Undefined index: NDA in /var/www/html/Reemission/TEST/pages/test.php.
    Merci d'avance

    Cordialement Cahuet

  2. #2
    Membre expert
    Avatar de Spartacusply
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mai 2011
    Messages
    1 723
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mai 2011
    Messages : 1 723
    Points : 3 275
    Points
    3 275
    Par défaut
    Ben si ton erreur est a minima importante puisqu'elle signifie que $_POST['NDA'] n'existe pas...

  3. #3
    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 : 54
    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 220
    Points
    91 220
    Billets dans le blog
    20
    Par défaut
    elle signifie que $_POST['NDA'] n'existe pas...
    Ce qui semble logique vu que quand le formulaire s'affiche, on a pas forcément encore eu le temps de le soumettre !

  4. #4
    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
    Comment puis je faire alors pour corriger cette erreur ?
    Car je ne vois pas trop le problème dans mon code.

    Merci pour vos réponses,
    Cordialement

  5. #5
    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 : 54
    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 220
    Points
    91 220
    Billets dans le blog
    20
    Par défaut
    Ben le problème est pourtant simple : lorsque tu arrives sur ta page la première fois, tu n'as pas encore rempli le formulaire donc $_POST['NDA'] ne peut pas exister.
    Il faut donc vérifier si cette valeur existe.
    Une petite recherche sur isset ou empty répondra à tes questions.
    De toute façon, faire l'affichage du formulaire et son traitement sur la même page est rarement une bonne idée...

  6. #6
    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 vais regarder sa de suite alors, merci de votre réponse aussi rapide !
    Et j'ai une question pk faire l'affichage du formulaire et son traitement sur la même page est rarement une bonne idée ??

    Cordialement

  7. #7
    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 : 54
    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 220
    Points
    91 220
    Billets dans le blog
    20
    Par défaut
    Bah le fait d'avoir dû ouvrir une discussion devrait te donner un élément de réponse !
    Si l'affichage et le traitement se faisaient sur des pages différentes, tu crois que tu aurais eu le problème ?

  8. #8
    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
    Oui vue comme ça c'est logique ..

    voila mon nouveau code corrigé grâce à vous :

    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
    <?php 
    echo "  <FORM method='post' id='Application' action='test.php'> \n";
    if (isset($_POST['NDA'])){
    $NDA=$_POST['NDA'];
    }
    else{
    	$NDA='';
    }
    echo " Le(s) NIP que vous voulez rejouer est : ";
    echo "<center><textarea id='NDA' name='NDA' rows='3' cols = '50'>";
    echo $NDA;
    echo "</textarea></center>";
    echo "<center><input type='submit' name='valid' value='Sauver' style='width:100px'></center>";
    $pattern = '/^([a-zA-Z0-9\s*]+)*$/';
    $result = preg_match ($pattern, $NDA);
    var_dump($result);
    if($result === 0 || $result === false){
    	echo 'erreur dans la saisie des numéros de dossiers';
    }else{
    	//on découpe la chaîne en fonction des espaces rencontrés
    	$listeNDA = preg_split('/[\s]+/',$NDA);
    	var_dump($listeNDA);
    	//le dernier item est vide car la chaîne se termine par un espace ce qui crée une entrée
    	foreach($listeNDA as $numDossier){
    	        if($numDossier != ''){
    	              //insertion en BDD par exemple
    	              echo '<p>'.$numDossier.'</p>';
    	        }
    	}
    }
    echo "  </FORM>";
    ?>
    J'en revient donc à mon problème principal du coup ou j'aimerais pouvoir calculer la longueur de ma chaine NDA qui est composé que de numéro entre 0 et 9, et donc la la longueur de la chaine doit être égale à 9, si elle est supérieur ou inférieur alors ce n'est pas un NDA. :/

  9. #9
    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 : 54
    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 220
    Points
    91 220
    Billets dans le blog
    20
    Par défaut
    Ton pattern, il sort d'où ? Ca correspond en rien à tes critères...

  10. #10
    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
    Mon pattern sert a utiliser tout les chiffres ainsi que tout les caractères.
    Je ne comprend pas pourquoi ils correspondent a rien

  11. #11
    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 : 54
    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 220
    Points
    91 220
    Billets dans le blog
    20
    Par défaut
    Citation Envoyé par Bovino
    Ca correspond en rien à tes critères...
    C'est pas tout à fait pareil.
    Citation Envoyé par cahuet-200
    J'en revient donc à mon problème principal du coup ou j'aimerais pouvoir calculer la longueur de ma chaine NDA qui est composé que de numéro entre 0 et 9
    Citation Envoyé par cahuet-200
    Mon pattern sert a utiliser tout les chiffres ainsi que tout les caractères.
    Faut savoir ce que tu veux...

    Tu sais qu'il existe des cours sur les expressions régulières.

  12. #12
    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
    Oui alors excusez moi, mon pattern devrait juste me servir alors pour les chiffres je suis d'accord !
    Qu'est ce que je peux mettre dans mon pattern ? pour qu'il soit juste et plus fiable
    cela : $pattern = '/^([0-9\s*]+)*$/'; ?

  13. #13
    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 : 54
    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 220
    Points
    91 220
    Billets dans le blog
    20
    Par défaut
    Un petit indice : lis les réponses déjà données...

  14. #14
    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
    oui en effet excusez moi je n'avais pas relever que vous aviez mis la solution !

    Donc ça donnerais sa ? je ne sais pas si il faut mettre les simple cotes ainsi que le slash $pattern = '/#^\d{9}$#/';

  15. #15
    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 Bovino en tout cas pour toutes les réponses que vous m'avez apporté !

    J'ai corriger le problème de pattern, mais le problème reste le même comment je peux faire pour qu'a chaque numéro que l'utilisateur écrit dans le textarea, un calcul de longueur de chaine s'effectue.

    Afin de savoir si la chaine est = 9 alors c'est bien un NDA autrement ce n'est pas bon et ce pour toute les valeurs que l’utilisateur rentrera....

    Doit je le faire lorsque le tableau array est rempli et donc de calculer que chaque chaine soit égale a 9 ?

    Merci d'avance !

    Cordialement Cahuet

  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 Problème résolu
    Bonjour a tous,
    Après maintes recherches effectué sur les sites, et en demandant sur plusieurs forum,
    La solution a été trouvé. Je met donc le code ci dessous afin d'aider les personnes qui pourrait avoir le même problème que moi :

    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
     
    <?php 
     
     
    echo "  <FORM method='post' id='Application' action='test.php'> \n";
    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>";
    echo "<center><input type='submit' name='valid' value='Sauver' style='width:100px'></center>";			
     
    $pattern = '#^(\d{9}\s*)+$#';
     
    	$result = preg_match ($pattern , $NDA);
    	var_dump($result);
     
    	if($result === 0 || $result === false)
    	{
    	  echo 'erreur dans la saisie des numéros de dossiers(9 chiffres)';
    	}else 
    	{
     
    	//on découpe la chaîne en fonction des espaces rencontrés (eclatement d'une chaine)
    	      $listeNDA = preg_split('/[\s]+/',$NDA);
    	      var_dump($listeNDA);
     
    	//le dernier item est vide car la chaîne se termine par un espace ce qui crée une entrée
     
    	           foreach($listeNDA as $numDossier)
    	           {
    	            if($numDossier != '')
    	            {
    		          //insertion en BDD par exemple
    	              echo '<p>'.$numDossier.'</p>';
    	            }
    	           }
    	}
     
     
     
    echo "  </FORM>"; 
     
     
    ?>
    Merci pour l'aide,
    Cordialement cahuet !

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Question sur la longueur d'une chaîne et les label
    Par AsmCode dans le forum VB 6 et antérieur
    Réponses: 2
    Dernier message: 18/01/2008, 16h41
  2. [RegEx] comment identifier la longueur d'une chaîne avec regexsr
    Par amine84 dans le forum Langage
    Réponses: 2
    Dernier message: 11/10/2007, 12h26
  3. Réponses: 9
    Dernier message: 02/05/2007, 14h59
  4. Limiter la longueur d'une chaîne de caractères
    Par stars333 dans le forum Langage
    Réponses: 5
    Dernier message: 28/03/2007, 23h34
  5. Réponses: 2
    Dernier message: 11/07/2006, 14h52

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