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 :

structuration de condition imbriquée [PHP 5.3]


Sujet :

Langage PHP

  1. #1
    Membre éprouvé Avatar de redoran
    Homme Profil pro
    Développeur-Amateur
    Inscrit en
    Juin 2010
    Messages
    1 346
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : Algérie

    Informations professionnelles :
    Activité : Développeur-Amateur
    Secteur : Santé

    Informations forums :
    Inscription : Juin 2010
    Messages : 1 346
    Points : 1 031
    Points
    1 031
    Par défaut structuration de condition imbriquée
    Salam ;

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    .............
    elseif (isset($_POST['xxx']) ) 
    {
         $fonction = verif_fonction($_POST['xxx']);
         if  ($fonction===false) {
         $msg_erreur='opération incorrecte.';
         }
    }
    elseif {
    ........
    ........
     
    }
    j'arrive pas a inclure la deuxième condition dans le elseif !!!
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    elseif (!isset($_POST['xxx']) && deuxième condition( if  ($fonction===false) {
    $msg_erreur='opération incorrecte.';
    }))

  2. #2
    Membre éprouvé Avatar de redoran
    Homme Profil pro
    Développeur-Amateur
    Inscrit en
    Juin 2010
    Messages
    1 346
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : Algérie

    Informations professionnelles :
    Activité : Développeur-Amateur
    Secteur : Santé

    Informations forums :
    Inscription : Juin 2010
    Messages : 1 346
    Points : 1 031
    Points
    1 031
    Par défaut
    je voulais faire :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    ........
    .............
    elseif (isset($_POST['xxx']) && ($fonction = verif_fonction($_POST['xxx']); $fonction===false  )) 
    {
        $msg_erreur='opération incorrecte.';
     
    }
    elseif { même condition du premier elseif avec des paramètres différents
    ........
    ........
     
    }
    je sais y'a certains qui vont dire faut revoir tutoriel

  3. #3
    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 : 48
    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
    Bonjour,

    tu dois factoriser tes conditions identiques.
    Après faut faire gaffe à ne pas tomber dans la spéléo.

  4. #4
    Membre éprouvé Avatar de redoran
    Homme Profil pro
    Développeur-Amateur
    Inscrit en
    Juin 2010
    Messages
    1 346
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : Algérie

    Informations professionnelles :
    Activité : Développeur-Amateur
    Secteur : Santé

    Informations forums :
    Inscription : Juin 2010
    Messages : 1 346
    Points : 1 031
    Points
    1 031
    Par défaut
    Re;
    tu dois factoriser tes conditions identiques.
    c'est adire !!!! en langage plus simple.

    commentaire du code ci-dessus:
    • j'ai la $_POST['xxx'] issue du post du formulaire,
    • je vérifier la variable avec : $fonction = verif_fonction($_POST['xxx']);
    • si la vérification retourne false j'affiche le message d'erreur.
    • si la vérification retourne vrai je passe au bloc suivant elseif.
    • tous ça doit être dans le elseif()

  5. #5
    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 : 48
    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
    Quelque chose comme ça :
    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
    if () {
       if () {
     
       }
       elseif () {
     
       }
       [elseif () { } ]
       [else { } ]
    }
    elseif () {
     
    }
    [elseif () { } ]
    [else { } ]
    Bref, si tu as besoin d'autre chose, c'est que ta logique de test est sûrement incorrecte.
    Comme je l'ai dit, le problème de cette approche c'est que tu peux tomber très vite dans la spéléo vu le nombre de niveaux que tu peux atteindre.

    EDIT: Enfin, tu ne peux pas atteindre un autre elseif une fois qu'une condition en amont a bien été passée. Ce que tu peux atteindre c'est une fonction et c'est tout. Regardes if elseif else

  6. #6
    Expert confirmé
    Avatar de Doksuri
    Profil pro
    Développeur Web
    Inscrit en
    Juin 2006
    Messages
    2 477
    Détails du profil
    Informations personnelles :
    Âge : 54
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Juin 2006
    Messages : 2 477
    Points : 4 688
    Points
    4 688
    Par défaut
    depuis quand on peut mettre du code dans les conditions d'un if ?
    => $fonction = verif_fonction($_POST['xxx']); $fonction===false
    (ou alors c'est possible depuis toujours, et j'ai rate quelque chose)

    pourquoi ne fais-tu pas comme tu nous l'a decrit ?
    Code Php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    if(isset($_POST['xxx'])) {
     if(verif_fonction($_POST['xxx']) == false) {
      $msg_erreur='opération incorrecte.';
     } else {
      //ton code si c'est bon
     }
    }
    faire les choses pas-a-pas... ne pas chercher midi a quatorze heures

  7. #7
    Membre éprouvé Avatar de redoran
    Homme Profil pro
    Développeur-Amateur
    Inscrit en
    Juin 2010
    Messages
    1 346
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : Algérie

    Informations professionnelles :
    Activité : Développeur-Amateur
    Secteur : Santé

    Informations forums :
    Inscription : Juin 2010
    Messages : 1 346
    Points : 1 031
    Points
    1 031
    Par défaut
    depuis quand on peut mettre du code dans les conditions d'un if ?
    => $fonction = verif_fonction($_POST['xxx']); $fonction===false
    (ou alors c'est possible depuis toujours, et j'ai rate quelque chose)
    oui c'était juste pour expliqué , ensuite j'ai argumenté par un commentaire désolé pour ce massacre...
    je l'ai fait sa marche très bien , mais j'arrive pas a passé au contrôle de deuxième champs avec elseif , je sort complétement du contrôle du formulaire ( aucune actions n'est exécutée).
    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
     
    ......
    elseif (isset($_POST['xxx'])) 
    	{
    	      $fonction = verif_fonction($_POST['xxx']);
    	      if  ($verif===false) {
    	           $msg_erreur='opération incorrecte';
    	       }
     
    	}
    elseif (isset($_POST['yyy'])) 
    	{
    	     $fonction = verif_fonction($_POST['yyy']);
    	     if  ($verif===false) {
    	          $msg_erreur='opération incorrecte';
    	      }
     
    	}
    ..........

  8. #8
    Rédacteur

    Avatar de Torgar
    Homme Profil pro
    Développeur Web
    Inscrit en
    Août 2007
    Messages
    2 334
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Août 2007
    Messages : 2 334
    Points : 8 040
    Points
    8 040
    Par défaut
    Heuuu et si tu remplaces ton elseif par un if tout simplement ?

    Tu check la première variable et affecte un message d'erreur, puis tu check ta deuxième variable et ainsi de suite.

    Du genre :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    Si (Exist(var_1))
        Si (pas Verif(var_1))
            Message : "Erreur"
    FinSi
     
    Si (Exist(var_2))
        Si (pas Verif(var_2))
            Message : "Erreur"
    FinSi
    Tu peux aussi combiner les deux conditions Exist() et Verif()Ou alors j'ai mal compris le problème...

  9. #9
    Membre éprouvé Avatar de redoran
    Homme Profil pro
    Développeur-Amateur
    Inscrit en
    Juin 2010
    Messages
    1 346
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : Algérie

    Informations professionnelles :
    Activité : Développeur-Amateur
    Secteur : Santé

    Informations forums :
    Inscription : Juin 2010
    Messages : 1 346
    Points : 1 031
    Points
    1 031
    Par défaut
    Re ; Torgar : une idée ta raison dans le principe + l'intervention de Doksuri :
    faire les choses pas-a-pas... ne pas chercher midi a quatorze heures
    alors j'ai cherché midi a quatorze heures et je suis arrivé a cette solution:
    une fois le formulaire de simulation est validé,
    j'affecte la première variable $_POST['a'] dans la fonction verif_fonction pour être validé et le résultat retourné sera dans $resulta = verif_fonction($_POST['a']); ainsi de suite pour les autres champs...
    et la condition sera :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    .........
    elseif ( $resulta===false) 
    	{
    	$erreurs_msg['a']='message d'erreur a';
    	}
    elseif ( $resultb===false) 
    	{
    	$erreurs_msg['b']='message d'erreur b';
    	}
     
    ..............
    je ne sait pas si l'idée est bonne , le système marche bien

  10. #10
    Membre expert Avatar de RunCodePhp
    Profil pro
    Inscrit en
    Janvier 2010
    Messages
    2 962
    Détails du profil
    Informations personnelles :
    Localisation : Réunion

    Informations forums :
    Inscription : Janvier 2010
    Messages : 2 962
    Points : 3 947
    Points
    3 947
    Par défaut
    je ne sait pas si l'idée est bonne , le système marche bien
    Peut être, mais correspond t-il vraiment à ce que tu recherches à faire, ça, ce n'est pas si sûr.

    A savoir qu'une erreur de logique ne provoque pas forcément une erreur (coté Php ou MySQL j'entends), et c'est peut être les plus compliquées à détecter.


    Quand on fait des : if, elseif, elseif, etc ...
    tout n'est pas vérifié, du moins pas forcément. Une seule peu l'être.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    if ($resulta === false)  {
        $erreurs_msg['a'] = 'message d\'erreur a';
    }
    elseif ($resultb === false)  {
        $erreurs_msg['b'] = 'message d\'erreur b';
    }
    elseif ($resultc === false)  {
        $erreurs_msg['c'] = 'message d\'erreur b';
    }
    Dans ce bloc, si la 1ère alternative retourne VRAI (que $resulta vaut FALSE), toutes les autres alternatives ne seront jamais évaluées, donc aucun des traitements ne seront effectués.
    Ca veut dire qu'ici on ne saura pas si $resultb vaut FALSE tout comme $resultc vaut FALSE.


    Admettons que l'on procède ainsi :
    (de manière radicalement différente, maisaucune comparaison possible car cela n'effectue pas la même chose).
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    if ($resulta === false)  {
        $erreurs_msg['a'] = 'message d\'erreur a';
    }
     
    if ($resultb === false)  {
        $erreurs_msg['b'] = 'message d\'erreur b';
    }
     
    if ($resultc === false)  {
        $erreurs_msg['c'] = 'message d\'erreur b';
    }
    Ici cette fois chaque variable sera vérifiée, et par conséquent on va obtenir les diiférentes erreurs stockées dans $erreurs_msg;


    Au passage on peu mettre plusieurs paramètres dans un isset().
    Exemple :
    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
    if (isset($_POST['a'], $_POST['b'], $_POST['c'])) {
        $resulta = $_POST['a'];
        $resultb = $_POST['b'];
        $resultc = $_POST['c'];
     
        if ($resulta === false)  {
            $erreurs_msg['a'] = 'message d\'erreur a';
        }
     
        if ($resultb === false)  {
            $erreurs_msg['b'] = 'message d\'erreur b';
        }
     
        if ($resultc === false)  {
            $erreurs_msg['c'] = 'message d\'erreur c';
        }
    }
    Il faudrait décrire ce que tu veux faire (sans code) pour qu'on sache quelle serait les alternatives à faire.
    Sans ça on ne peu pas deviner malheureusement.

  11. #11
    Membre éprouvé Avatar de redoran
    Homme Profil pro
    Développeur-Amateur
    Inscrit en
    Juin 2010
    Messages
    1 346
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : Algérie

    Informations professionnelles :
    Activité : Développeur-Amateur
    Secteur : Santé

    Informations forums :
    Inscription : Juin 2010
    Messages : 1 346
    Points : 1 031
    Points
    1 031
    Par défaut
    Re ; RunCodePhp:
    Quand on fait des : if, elseif, elseif, etc ...
    tout n'est pas vérifié, du moins pas forcément. Une seule peu l'être.

    Dans ce bloc, si la 1ère alternative retourne VRAI (que $resulta vaut FALSE), toutes les autres alternatives ne seront jamais évaluées, donc aucun des traitements ne seront effectués.
    Ca veut dire qu'ici on ne saura pas si $resultb vaut FALSE tout comme $resultc vaut FALSE.
    là j'ai testé est sa marche exemple :
    Run , je reviens a un formulaire avec champs de type numérique.
    verif_fonction($varsimul) : fonction qui vérifier le contenu de l'input si c'est numérique > 0
    champs a , champs b , champs c
    mise en œuvre du code:
    • valider le formulaire ( $_POST['a'] , $_POST['b'] , $_POST['c']...)
    • la $_POST['a'] est vérifier par la fonction , si le champs a est vide ou de type alphanumérique le message d'erreur est bien retourné.
    • si le champs a est un nombre entier naturel (>0) le contrôle passe au champs b.
    • la $_POST['b'] est vérifier par la fonction , si le champs b est vide ou de type alphanumérique le message d'erreur est bien retourné.

    • si le champs b est un nombre entier naturel (>0) le contrôle passe au champs c.
    • idem pour le champs c.

    ensuite j'ai refais le même teste mais cette fois si en laissant le champs b vide et les autres bien remplis alors le contrôle s’effectue directement sur le champs b.
    en résumé le code vérifier chaque bloc.

  12. #12
    Membre expert Avatar de RunCodePhp
    Profil pro
    Inscrit en
    Janvier 2010
    Messages
    2 962
    Détails du profil
    Informations personnelles :
    Localisation : Réunion

    Informations forums :
    Inscription : Janvier 2010
    Messages : 2 962
    Points : 3 947
    Points
    3 947
    Par défaut
    Le problème c'est que les derniers que tu as mis ne correspondent pas à la description que tu fais.

    Quand on fait else if () et que celui-ci est VRAI, les else if suivant ne sont pas vérifiés, la dessus faut être clair.

    L'autre truc, c'est qu'à aucun moment tu explique qu'est-ce qui doit être fait selon ces divers vérifications.
    C'est pourtant essentiel, c'est cela qui conditionne quels seront les vérifications à faire.

    Je vais ici décrire juste 1 seul cas, qui en assez courant, peut être le plus.

    Admettons qu'on veuille insérer dans une table toutes les données reçues.
    -> que toutes ces données existent , sans exception.
    -> que toutes les données saisies soient des nombres entiers (de 0 à n, peu importe n). Si 1 seule données n'est pas conforme : pas d'insertion.
    -> A chaque erreur détectée un message de retour sera stocké afin d'afficher toutes les erreurs détectées.

    Et ici on pourra difficilement intégrer des elseif() (ça n'ira pas)
    Il faudra faire comme ceci :
    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
    $erreurs_msg = array();
    if (isset($_POST['a'], $_POST['b'], $_POST['c'])) {
        $resulta = $_POST['a'];
        $resultb = $_POST['b'];
        $resultc = $_POST['c'];
     
        // flag pour savoir si tout est correcte (VRAI)
        $erreur = false;
     
        if (verif_fonction($resulta) === false)  {
            $erreur = true;
            $erreurs_msg['a'] = 'message d\'erreur a';
        }
     
        if (verif_fonction($resultb) === false)  {
            $erreur = true;
            $erreurs_msg['b'] = 'message d\'erreur b';
        }
     
        if (verif_fonction($resultc) === false)  {
            $erreur = true;
            $erreurs_msg['c'] = 'message d\'erreur c';
        }
     
        // On effectue l'insertion car toutes les données sont correctes, sans exception
        if ($erreur === FALSE) {
            // Insertion
        }
    }
     
     
    // Affichage des erreurs éventuelles
    foreach ($erreurs_msg as $erreur) {
        echo $erreur.'<br />';
    }
    Essai de décrire les choses ainsi, qu'est ce qui doit être fait.

  13. #13
    Membre éprouvé Avatar de redoran
    Homme Profil pro
    Développeur-Amateur
    Inscrit en
    Juin 2010
    Messages
    1 346
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : Algérie

    Informations professionnelles :
    Activité : Développeur-Amateur
    Secteur : Santé

    Informations forums :
    Inscription : Juin 2010
    Messages : 1 346
    Points : 1 031
    Points
    1 031
    Par défaut
    RunCodePhp:
    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
     
    if (isset($_POST['a'], $_POST['b'], $_POST['c'])) {
        $resulta = $_POST['a'];
        $resultb = $_POST['b'];
        $resultc = $_POST['c'];
     
        if ($resulta === false)  {
            $erreurs_msg['a'] = 'message d\'erreur a';
        }
     
        if ($resultb === false)  {
            $erreurs_msg['b'] = 'message d\'erreur b';
        }
     
        if ($resultc === false)  {
            $erreurs_msg['c'] = 'message d\'erreur c';
        }
    }
    avec cette méthode après avoir validé le formulaire les 3 messages d’erreurs s'affiche a la fois. !!!!
    par contre je cherche a les affichés un par un selon le champs , donc le elseif m'arrange bien sauf que j'arrive pas a donnée le focus par php au champs concerné.

  14. #14
    Membre expert Avatar de RunCodePhp
    Profil pro
    Inscrit en
    Janvier 2010
    Messages
    2 962
    Détails du profil
    Informations personnelles :
    Localisation : Réunion

    Informations forums :
    Inscription : Janvier 2010
    Messages : 2 962
    Points : 3 947
    Points
    3 947
    Par défaut
    avec cette méthode après avoir validé le formulaire les 3 messages d’erreurs s'affiche a la fois. !!!!
    J'étais surement en cours de rectification, car il n'allait pas au début.
    (Pas évident de faire ça "en live" sans tester)

    Maintenant ça devrait être bon.


    Mais décris plutôt ce que tu veux faire, quels traitements doivent avoir lieu selon telle ou telle condition.
    C'est ça qui conditionne tout, et non pas le code. Le code lui vient après.
    Sans cela c'est du vent, ça ne rime à rien.

  15. #15
    Membre éprouvé Avatar de redoran
    Homme Profil pro
    Développeur-Amateur
    Inscrit en
    Juin 2010
    Messages
    1 346
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : Algérie

    Informations professionnelles :
    Activité : Développeur-Amateur
    Secteur : Santé

    Informations forums :
    Inscription : Juin 2010
    Messages : 1 346
    Points : 1 031
    Points
    1 031
    Par défaut
    Ok RunCodePhp , peut être que je me suis mal exprimé je vais testé ta proposition

  16. #16
    Membre éprouvé Avatar de redoran
    Homme Profil pro
    Développeur-Amateur
    Inscrit en
    Juin 2010
    Messages
    1 346
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : Algérie

    Informations professionnelles :
    Activité : Développeur-Amateur
    Secteur : Santé

    Informations forums :
    Inscription : Juin 2010
    Messages : 1 346
    Points : 1 031
    Points
    1 031
    Par défaut
    Salam ; RunCodePhp:
    Mais décris plutôt ce que tu veux faire, quels traitements doivent avoir lieu selon telle ou telle condition.
    C'est ça qui conditionne tout, et non pas le code. Le code lui vient après.
    Sans cela c'est du vent, ça ne rime à rien.
    dans mon simulateur par exemple: j'ai 04 champs numériques , une fois le formulaire validé , le script vérifier le premier champs:
    si le champs est vide ou contient une valeur alphanumérique le script s’arrête et renvoi un message d'erreur a l'utilisateur.
    si le champs est bien renseigné le script passe a la vérification du deuxième champs ainsi de suite jusqu’à la fin.
    Et ici on pourra difficilement intégrer des elseif() (ça n'ira pas)
    Il faudra faire comme ceci :
    merci d'avoir m’orientai plutôt dire me rappelé que j'ai vue ce cas dans
    PHP : Le tutoriel pour grands débutants pressés
    page 18 correction du TP 3.
    ...C'est ça qui conditionne tout, et non pas le code. Le code lui vient après...
    j’apprends toujours des choses avec vous .
    merci RunCodePhp

  17. #17
    Membre expert Avatar de RunCodePhp
    Profil pro
    Inscrit en
    Janvier 2010
    Messages
    2 962
    Détails du profil
    Informations personnelles :
    Localisation : Réunion

    Informations forums :
    Inscription : Janvier 2010
    Messages : 2 962
    Points : 3 947
    Points
    3 947
    Par défaut
    dans mon simulateur par exemple: j'ai 04 champs numériques , une fois le formulaire validé , le script vérifier le premier champs:
    si le champs est vide ou contient une valeur alphanumérique le script s’arrête et renvoi un message d'erreur a l'utilisateur.
    si le champs est bien renseigné le script passe a la vérification du deuxième champs ainsi de suite jusqu’à la fin.
    Voilà le déroulement correspondant parfaitement à un if/elseif/elseif.../else (un switch/case/beak d'ailleurs).
    Fallait le donner dès le début.

    Donc au niveau du code c'est Ok, rien à dire.


    Mais, maintenant si on prend les chose dans sa globalité (le contexte, etc ...), est-il judicieux de procéder ces vérifs ainsi ?

    Admettons qu'un utilisateur se trompe 3 fois, les 3 derniers champs.
    Que ce passe t-il ?
    Du faite que le script est prévu de s'arrêter dès une erreur, puis prévoit de renvoyer un message d'erreur que pour l'erreur détectée provoquera des aller/retours successifs s'il y a plusieurs erreurs (autant d'aller/retour qu'il y aura d'erreurs).
    De même que l'utilisateur ne sera pas au courant des autres erreurs éventuelles.

    Faire cela de temps à autre, à mon sens pourquoi pas.
    Mais généraliser ce principe là comme par exemple dans un espace Admin (où en général il y a énormément de formulaires car ce n'est que de la saisie de données, configs, etc ...) ceci peut très vite agacer les utilisateurs (voire soit même).


    En somme, le code est parfaite juste, rien à dire, mais pour le coté pratique, ça reste à voir.
    Cela histoire d'aller jusqu'au bout.

  18. #18
    Expert confirmé
    Avatar de Doksuri
    Profil pro
    Développeur Web
    Inscrit en
    Juin 2006
    Messages
    2 477
    Détails du profil
    Informations personnelles :
    Âge : 54
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Juin 2006
    Messages : 2 477
    Points : 4 688
    Points
    4 688
    Par défaut
    pour completer le point de vue de RunCodePhp,
    je dirais que tes if, elsif etc... faudrait les faire en JS. comme ca, l'utilisateur sait "en live" ce qui ne va pas.
    puis, faire une verif globale en php.
    s'il y a des erreur, re-afficher le formulaire avec les donnees que l'utilisateur avait saisit.

  19. #19
    Membre éprouvé Avatar de redoran
    Homme Profil pro
    Développeur-Amateur
    Inscrit en
    Juin 2010
    Messages
    1 346
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : Algérie

    Informations professionnelles :
    Activité : Développeur-Amateur
    Secteur : Santé

    Informations forums :
    Inscription : Juin 2010
    Messages : 1 346
    Points : 1 031
    Points
    1 031
    Par défaut
    Re ; RunCodePhp:
    (un switch/case/beak d'ailleurs)
    franchement parler j'ai pas réussi a le faire même en delphi c'était mon casse tête ( pour comparé une valeur j'arrive a le faire).... et j'avais honte de le publié
    si tu peut me donné un exemple avec mon cas serait souhaitable.
    Admettons qu'un utilisateur se trompe 3 fois, les 3 derniers champs.
    Que ce passe t-il ?
    là le script ne s’arrête pas au sens propre du mot mais si l'utilisateur se trompe 5 fois sur le même champ alors il reste sur le même champ jusqu'à la saisie d'une valeur valide pourquoi ? ce contrôle est très important pour valider la qualité de l'information saisie.
    De même que l'utilisateur ne sera pas au courant des autres erreurs éventuelles.
    si j'ai bien compris , c'est un algorithme qui contrôle champs par champ donc impossible d'omission.
    ceci peut très vite agacer les utilisateurs
    ici c'est une application professionnel qui nécessite cette rigueur.
    Doksuri:
    je dirais que tes if, elsif etc... faudrait les faire en JS. comme ca, l'utilisateur sait "en live" ce qui ne va pas.
    oui j'ai laissé le js comme un premier contrôle , mais avec le code php je contrôle la saisie et j'avise l'utilisateur ave u message d'erreur contenant le type d'erreur et le champ concerné.
    s'il y a des erreur, re-afficher le formulaire avec les donnees que l'utilisateur avait saisit.
    c'est bon c'est fait sauf pour le champ select dont le contenu est issu d'une requête que j'ai pas pu le faire !!!

  20. #20
    Membre expert Avatar de RunCodePhp
    Profil pro
    Inscrit en
    Janvier 2010
    Messages
    2 962
    Détails du profil
    Informations personnelles :
    Localisation : Réunion

    Informations forums :
    Inscription : Janvier 2010
    Messages : 2 962
    Points : 3 947
    Points
    3 947
    Par défaut
    là le script ne s’arrête pas au sens propre du mot mais si l'utilisateur se trompe 5 fois sur le même champ alors il reste sur le même champ jusqu'à la saisie d'une valeur valide pourquoi ? ce contrôle est très important pour valider la qualité de l'information saisie.
    L'exemple que je donnais n'était pas de se tromper sur le même champ, mais de se tromper sur différents champs, ce n'est pas du tout pareil.

    ici c'est une application professionnel qui nécessite cette rigueur.
    Et bien justement, l'exemple de code que j'ai mis qui eux prévoient de vérifier toutes les données d'une traite est plus professionnel que de le faire une par une car plus pratique, donc gain de temps pour les utilisateurs.

    Si dans "professionnel" tu restreins cela à la fiabilité des vérifications, les 2 solutions sont égales, les vérifications sont toutes deux aussi fiables.
    C'est juste la manière de faire qui diffère.

    Dans les 2 cas le traitement au bout ne se fera QUE si toutes les données sont conformes.
    Bref ... une application professionnelle c'est certes la fiabilité du logiciel, mais ça l'est aussi s'il est pratique, intuitif, rapide, etc ...


    Es-tu certain de bien percevoir les avantages et inconvénients de ces 2 façons de procéder ?


    si tu peut me donné un exemple avec mon cas serait souhaitable.
    Exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    if (isset($_POST['a'], $_POST['b'], $_POST['c'])) {
        $resulta = $_POST['a'];
        $resultb = $_POST['b'];
        $resultc = $_POST['c'];
     
        switch (TRUE) {
            case ($resulta === false) : $erreurs_msg['a'] = 'message d\'erreur a';
            break;
            case ($resultb === false) : $erreurs_msg['b'] = 'message d\'erreur b';
            break;
            case ($resultc === false) : $erreurs_msg['c'] = 'message d\'erreur c';
            break;
        }
    }

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

Discussions similaires

  1. Conditions imbriquées en SHELL
    Par seanbean dans le forum Linux
    Réponses: 2
    Dernier message: 21/10/2010, 11h47
  2. Conditions imbriquées (checkbox/textfield)
    Par ganguill dans le forum Langage
    Réponses: 4
    Dernier message: 04/05/2010, 17h09
  3. [XL-2007] Conditions imbriquées difficiles
    Par dodo28 dans le forum Excel
    Réponses: 1
    Dernier message: 25/08/2009, 09h38
  4. Comment formuler les conditions imbriquées
    Par itzik92 dans le forum IHM
    Réponses: 2
    Dernier message: 01/10/2008, 00h16
  5. Somme sur conditions imbriquée dans une requête
    Par aleximan dans le forum Requêtes et SQL.
    Réponses: 8
    Dernier message: 25/01/2008, 19h05

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