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 :

Boucles foreach imbriquées: affichage non désiré


Sujet :

Langage PHP

  1. #1
    Membre averti Avatar de renaud26
    Homme Profil pro
    Webmaster
    Inscrit en
    Mars 2003
    Messages
    1 365
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Côtes d'Armor (Bretagne)

    Informations professionnelles :
    Activité : Webmaster

    Informations forums :
    Inscription : Mars 2003
    Messages : 1 365
    Points : 436
    Points
    436
    Par défaut Boucles foreach imbriquées: affichage non désiré
    Bonjour à tous,

    Soit cet extrait de formulaire :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    $nb_sites = 2;
    <input name="prenom">
    <input name="nom">
    for($i=0;$i<$nb_sites;$i++){
    <input name="nom_site[]">
    <input name="url_site[]">
    }
    <input type="hidden" name="nb_sites" value="$nb_sites">
    Puis un petit contrôle après validation :

    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
     
    $err = array();
    if($_POST['prenom'] == ''){
    $err['prenom'] = "manque prénom";
    }
    if($_POST['nom'] == ''){
    $err['nom'] = "manque nom";
    }
     
    for($i=0;$i<$_POST['nb_sites'];$i++){
    if($_POST['nom_site'][$i] == ''){
    $err['nom_site'][$i] = "Manque nom site N° ($i+1)";
    }
    if($_POST['url_site'][$i] == ''){
    $err['url_site'][$i] = "Manque URL site N° ($i+1)";
    }
    }
    return $err;
    Puis affichage des erreurs :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    foreach($err as $k => $v){
    	echo "<li style='color:#FF0000'><b>". $v . "</b></li>";
    		if(is_array($v)){
    			foreach($v as $k1 => $v1){
    					echo "<li style='color:#FF0000'><b>". $v1 . "</b></li>";
    			}
    		}
    	}
    Les erreurs s'affichent :

    .manque prénom
    .manque nom
    .Array
    .manque nom site N° 1
    .Array
    .manque URL site N ° 1
    .Array
    .manque nom site N° 2
    .Array
    .manque URL site N ° 2


    La liste des erreurs est OK, mais comment ne pas afficher ce "Array" qui fait désordre ? Effectivement, si je fais un print_r($err) j'ai bien :

    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
     
    [prenom] => manque prénom
    [nom] => manque nom
    [nom_site] => Array
        (
                [0] => manque nom site N° 1
                [1] => manque nom site N° 2
     
         )
     
    [url_site] => Array
          (
                [0] => manque URL site N° 1 
                [1] => manque URL site N° 2
           )
    Ce qui est normal. Je veux juste ne pas afficher "Array" !
    Désolé d'avoir été un peu long, mais je voulais expliquer au mieux.
    Merci d'avance du tuyau.

  2. #2
    Membre chevronné
    Avatar de ska_root
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2005
    Messages
    1 203
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Service public

    Informations forums :
    Inscription : Août 2005
    Messages : 1 203
    Points : 1 839
    Points
    1 839
    Par défaut
    Bonsoir,

    il suffit de retirer la ligne qui l'affiche et de la placer apres la condition...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    foreach($err as $k => $v){
    	// celle-ci => echo "<li style='color:#FF0000'><b>". $v . "</b></li>";
    		if(is_array($v)){
    			foreach($v as $k1 => $v1){
    					echo "<li style='color:#FF0000'><b>". $v1 . "</b></li>";
    			}
    		}else {
                          echo "<li style='color:#FF0000'><b>". $v . "</b></li>";
                    }
    	}

  3. #3
    Membre averti Avatar de renaud26
    Homme Profil pro
    Webmaster
    Inscrit en
    Mars 2003
    Messages
    1 365
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Côtes d'Armor (Bretagne)

    Informations professionnelles :
    Activité : Webmaster

    Informations forums :
    Inscription : Mars 2003
    Messages : 1 365
    Points : 436
    Points
    436
    Par défaut
    Bien vu, bien joué, bravo, merci.


    Et bonne journée.

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

Discussions similaires

  1. usage ou non usage du mot cle YIELD dans une boucle foreach
    Par new_wave dans le forum Framework .NET
    Réponses: 17
    Dernier message: 14/10/2014, 11h24
  2. boucles foreach imbriqué (tableau 3 colonnes)
    Par claire34 dans le forum Langage
    Réponses: 8
    Dernier message: 02/12/2010, 18h46
  3. Réponses: 5
    Dernier message: 29/08/2010, 12h20
  4. boucles foreach imbriquées!
    Par jalam dans le forum C#
    Réponses: 12
    Dernier message: 16/07/2007, 18h08
  5. Réponses: 1
    Dernier message: 25/05/2007, 14h28

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