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 :

Récupérer des cases a cocher dans une boucle ''for''


Sujet :

Langage PHP

  1. #1
    Membre habitué
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juin 2018
    Messages
    119
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Thaïlande

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Juin 2018
    Messages : 119
    Points : 168
    Points
    168
    Par défaut Récupérer des cases a cocher dans une boucle ''for''
    bonjour (je suis nouveau, donc si j'utilise a tord ce forum, n’hésitez pas a me corriger, merci)

    je suis en train d'apprendre php,

    sur une première page php j'ai des cases a cocher:

    Code html : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    <p>indiquez ce que vous aimez : <br />
     
    		<input type="checkbox" name="food[]" value="frite" id="frite" /> <label for="frite">frite</label><br />
     
    		<input type="checkbox" name="food[]" value="steak" id="steak" /> <label for="steak">steak</label><br />
     
    		<input type="checkbox" name="food[]" value="epinard" id="epinard" /> <label for="epinard">epinard</label><br />
     
    		<input type="checkbox" name="food[]" value="ravioli" id="ravioli" /> <label for="ravioli">ravioli</label>
    </p>

    et j'aimerai recuperer a l'aide d'une boucle la/les cases coches sur une 2eme page php cible. avec une boucle foreach j'y parvient, mais j'aimerai le faire avec une boucle ''for'' (juste pour m'entrainer) mais alors la je rame depuis 2 jours....

    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    <p>
    	<?php 
    	if (isset($_POST['food']) AND is_array($_POST['food']))
    	{
    		for($food=0; $food<4; $food++)
        	{
            	echo $food . ' <br />';
        	}
    	}
    	else
    	{
    		echo 'il faut cocher une case au moins';
    	}
    	?>
    </P>

    si quelqu'un peut me corriger...... sur ce coup la je suis nul, je sais.... désolé.... merci.

  2. #2
    Membre extrêmement actif
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Avril 2018
    Messages
    537
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Administrateur de base de données

    Informations forums :
    Inscription : Avril 2018
    Messages : 537
    Points : 634
    Points
    634
    Par défaut
    Bonjour

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    for($i=0; $i < count($food); $i++)
    {
        echo $food[$i] . ' <br />';
    }

  3. #3
    Membre habitué
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juin 2018
    Messages
    119
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Thaïlande

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Juin 2018
    Messages : 119
    Points : 168
    Points
    168
    Par défaut
    merci pour votre reponse,

    malheureusement cela ne marche toujours pas, j'ai coder ainsi:

    code php:

    Code PHP : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    <p>
    	<?php 
    	if(isset($_POST['food']) AND is_array($_POST['food']))
    	{
    		for($i=0; i < count($food); $i++)
    		{
    		    echo $food[i] . ' <br />';
    		}
    	}
    	else
    	{
    		echo 'cochez au moins une case';
    	}
    	?>
    </p>

    cela affiche : ''cochez au moins une case"..... ?? (quel que soit le nombre de case que je coche !!!)

  4. #4
    Membre expert
    Avatar de Dendrite
    Femme Profil pro
    Développeuse informatique
    Inscrit en
    Juin 2008
    Messages
    2 129
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 58
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeuse informatique
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Juin 2008
    Messages : 2 129
    Points : 3 628
    Points
    3 628
    Billets dans le blog
    8
    Par défaut
    Bonjour. $_POST['food'] est une variable (qu'il connait).
    $food? D'où sort-elle ? Et tu n'as pas de message d'erreur qui te dit en anglais qu'il ne connaît pas $food ? Il faut les activer.
    Question subsidiaire : pourquoi tiens-tu à tester que $_POST['food'] est un array ? Quelle chance as-tu qu'un input "checkbox[]" ne soit produise pas un array ?

    Je te propose donc ceci, qui fonctionnera si tu ajoutes des items à ta checkbox :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    <?php 
    if (! empty($_POST['food']))
    {
      for($i=0; $i<count($_POST['food']); $i++)
      {
        echo $_POST['food'][$i] . ' <br />';
      }
    }
    else
    {
      echo 'il faut cocher une case au moins';
    }
    ?>
    Traduire ainsi :
    Si la variable existe et contient vraiment quelque chose
    pour i égal 0, i inférieur au nombre de lignes dans le tableau, incrémente
    affiche la valeur de chaque ligne
    Sinon
    affiche il faut cocher.

    question pédagogique : à ton avis, combien vaudra i après la boucle ?

  5. #5
    Membre habitué
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juin 2018
    Messages
    119
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Thaïlande

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Juin 2018
    Messages : 119
    Points : 168
    Points
    168
    Par défaut
    merci pour les clairs explications dentrite,

    apres la boucle i devrait valoir 3, puisqu'il y a 4 lignes et que la premiere correspond a 0....???

    excuse moi encore pour mon ignorance, mais que signifie ''rajouter des items a ma checkbox'' ?

  6. #6
    Membre expert
    Avatar de Dendrite
    Femme Profil pro
    Développeuse informatique
    Inscrit en
    Juin 2008
    Messages
    2 129
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 58
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeuse informatique
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Juin 2008
    Messages : 2 129
    Points : 3 628
    Points
    3 628
    Billets dans le blog
    8
    Par défaut
    Fais echo $i; après la boucle...
    rajouter des items a ma checkbox
    Ben si côté formulaire, tu rajoutes "salade, tomates, oignons" ? Ton code restera réutilisable côté récupération de formulaire... Le meilleur code est souvent le moins figé. Tu n'auras pas toute ta vie 4 choix gravés dans le marbre. Tu avais mis 4 en dur, et bonjourAjax t'a proposé un code plus souple.

  7. #7
    Membre habitué
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juin 2018
    Messages
    119
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Thaïlande

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Juin 2018
    Messages : 119
    Points : 168
    Points
    168
    Par défaut
    oui d'accord, ca y est j'ai compris pour les items a rajouter, merci.

    par contre sans rajouter le : cela indique 'il faut cocher une case au moins' (le else de la condition quoi).

    et si je le rajoute comme ca :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    <?php 
    	if (! empty($_POST['food']))
    	{
    	  for($i=0; $i<count($_POST['food']); $i++)
    	  {
    	    echo $_POST['food'][$i] . ' <br />';
    	    echo '$i';
    	  }
    	}
    	else
    	{
    	  echo 'il faut cocher une case au moins';
    	}
    	?>
    cela indique toujours : 'il faut cochet une case au moins'' (quel que soit le nombre de cases cocher bien sur).

    alors je l'ai rajouter comme ca:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    <?php 
    	if (! empty($_POST['food']))
    	{
    	  for($i=0; $i<count($_POST['food']); $i++)
    	  {
    	    echo $_POST['food'][$i] . ' <br />';
    	  }
    	}
    	else
    	{
    	  echo 'il faut cocher une case au moins';
    	}
    	?>
    	<?php echo '$i'; ?>
    et la ca me marque; ''il faut cocher une case au moins $i".

  8. #8
    Invité
    Invité(e)
    Par défaut
    Bonjour,



    Pour les array, il faut privilégier la méthode foreach :
    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    <?php 
    	if ( !empty($_POST['food']) )
    	{
    	  foreach( $_POST['food'] as $i => $food )
    	  {
    	    echo $i . ' : ' . $food . ' <br />';
    	  }
    	}
    	else
    	{
    	  echo 'il faut cocher au moins une case';
    	}
    ?>

  9. #9
    Membre habitué
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juin 2018
    Messages
    119
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Thaïlande

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Juin 2018
    Messages : 119
    Points : 168
    Points
    168
    Par défaut
    bah... peu importe non ??? on peu tres bien ecrire:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    $variable="je suis gentil"; 
    $variable='je suis gentil';
    par contre si on insert des guillemets ou apostrophes l'un dans l'autre ils doivent etre inverse:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    $variable="je suis un 'gentil' garçon";
    $variable='je suis un "gentil" garçon';
    (attention avec les apostrophe: $variable='j\'aime etudier';)

    a la suite d'echo:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    echo 'mon texte $variable bla bla';
    mais pour plus de clarté on peu faire ressortir la variable avec:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    echo 'mon text ' . $variable . ' bla bla';
    si tout compris....????

  10. #10
    Invité
    Invité(e)
    Par défaut
    Faux.

    Il faut LIRE les tutos.

  11. #11
    Membre habitué
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juin 2018
    Messages
    119
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Thaïlande

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Juin 2018
    Messages : 119
    Points : 168
    Points
    168
    Par défaut
    bonjour jreaux 62;

    oui j'ai reussit (en copiant sur forum qui traitait un cas similaire ).

    c'est juste que je voulais le faire avec une boucle for afin de m'entrainer.... mais peut etre ce n'est pas possible ???

  12. #12
    Membre expert
    Avatar de Dendrite
    Femme Profil pro
    Développeuse informatique
    Inscrit en
    Juin 2008
    Messages
    2 129
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 58
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeuse informatique
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Juin 2008
    Messages : 2 129
    Points : 3 628
    Points
    3 628
    Billets dans le blog
    8
    Par défaut
    Non, tu n'as pas tout compris. Va voir le lien de Jreaux...

    Et tu ne m'as pas dit ce que donne ton APRES la boucle...
    Creuse petite taupe, creuse encore !

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    //c'est ici, que i teste la valeur pour savoir s'il peut entrer
    for($i=0; $i<count($_POST['food']); $i++)
    {
      echo $_POST['food'][$i] . ' <br />';
      //c'est ici, avant de sortir de la boucle, que $i s'incrémente
    }
     
    //Donc au dernier tour, il vaut 4 à la sortie, retourne tester et se fait "jeter"...

  13. #13
    Membre habitué
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juin 2018
    Messages
    119
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Thaïlande

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Juin 2018
    Messages : 119
    Points : 168
    Points
    168
    Par défaut
    excusez moi, mais j'ai fait tous les tutos (dont certains de developpez.net) que j'ai pu trouver sur google depuis 2 jours, et il n'y en a pas un qui donne la solution a ma question .... (a part avec une boucle foreach bien sur....)

  14. #14
    Invité
    Invité(e)
    Par défaut
    1- Le code avec la boucle for est correcte.

    S'il y a une erreur, elle est ailleurs

    2- Tu n'apprendras rien si tu crois déjà tout savoir.

    LIS les liens qu'on te donne !


  15. #15
    Membre habitué
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juin 2018
    Messages
    119
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Thaïlande

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Juin 2018
    Messages : 119
    Points : 168
    Points
    168
    Par défaut
    oui dentrite,

    j'ai donc ecrit cela:

    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
     
    <p>
    	<?php 
    	if (! empty($_POST['food']))
    	{
    	  for($i=0; $i<count($_POST['food']); $i++)
    	  {
    	    echo $_POST['food'][$i] . ' <br />';
    	    echo $i;
    	  }
    	}
    	else
    	{
    	  echo 'il faut cocher une case au moins';
    	}
    	?>
     
    </p>
    et cela marque : ''il faut cocher au moins une case" (j'ai bien sur coche plusieurs case)....:

  16. #16
    Invité
    Invité(e)
    Par défaut
    1- Montre le formulaire, avec la balise <form.......>

    2- montre le résultat de :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    var_dump($_POST['food']);

  17. #17
    Membre habitué
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juin 2018
    Messages
    119
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Thaïlande

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Juin 2018
    Messages : 119
    Points : 168
    Points
    168
    Par défaut
    ah d'accord, merci beaucoup jreaux62, je vais donc consulter ces liens.

    merci beaucoup a tous .

  18. #18
    Membre expert
    Avatar de Dendrite
    Femme Profil pro
    Développeuse informatique
    Inscrit en
    Juin 2008
    Messages
    2 129
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 58
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeuse informatique
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Juin 2008
    Messages : 2 129
    Points : 3 628
    Points
    3 628
    Billets dans le blog
    8
    Par défaut
    Ton problème est plus complexe que l'on pourrait penser au premier abord, en fait...
    Tu as une checkbox multiple, et tu voudrais signifier à l'utilisateur qu'il est obligé de cocher au moins une case.

    Pour n'importe quel autre cas, c'est très simple :

    Tu procèdes en 2 temps
    1) Côté client : poser l'attribut "required" sur l'élément de formulaire. Tout utilisateur qui n'a pas désactivé son javascript se verra "bloqué" tant qu'il n'a pas coché au moins un truc.

    2) Côté serveur : vérifier en plus, côté PHP, comme tu tentes de le faire, que la variable POST['truc'] n'est pas empty... car des clients peuvent désactiver leur javascript.

    Mais, manque de pot, pour une checkbox multiple, il semble que le simple 1 ne fonctionne pas côté HTML... Ce qu'il faut taper comme recherche, c'est "required multiple checkbox html5"

  19. #19
    Membre habitué
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juin 2018
    Messages
    119
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Thaïlande

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Juin 2018
    Messages : 119
    Points : 168
    Points
    168
    Par défaut
    voila la balise <form> au complet:


    Code html : 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
     
    <form action="conditionstests.php" method="post">
     
    <p>
    	<label for="leprenom">indiquez votre prenom</label> : <input type="text" name="prenom" id="leprenon" />
    </p>
     
    <p>
    	<label for="lecommentaire">merci d'ecrir ici votre opinion, et vas te faire cuire un oeuf ah ah aha !!</label> : <br />
    	<textarea name="commentaire" rows="8" cols="45" id="lecommentaire" /></textarea>
    </p>
     
    <p>indiquez ce que vous aimez : <br />
     
    		<input type="checkbox" name="frite" id='frite' /> <label for="frite">frite</label><br />
     
    		<input type="checkbox" name=steak" id='steak' /> <label for="steak">steak</label><br />
     
    		<input type="checkbox" name="epinard" id='epinard' /> <label for="epinard">epinard</label><br />
     
    		<input type="checkbox" name="ravioli" id='ravioli' /> <label for="ravioli">ravioli</label>
    </p>
     
    <p>
    	<input type="submit" value="Valider" />
    </p>
     
    </form>

    sur la page cible j'ai
    Code html : 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
     
    <p>Je sais comment tu t'appelles, hé hé. Tu t'appelles <?php echo $_POST['prenom']; ?> !</p>
     
    <p>
    	<?php
            if (isset ($_POST['commentaire']))
            {
                    echo 'voila ce que j\'ai a dire : ' . $_POST['commentaire'] . ' ! ';
            }
            else
            {
                    echo 'donnez votre avis';
            }
            ?>
    </p>
     
    <p>
    	<?php 
            if (! empty($_POST['food']))
            {
              for($i=0; $i<count($_POST['food']); $i++)
              {
                echo $_POST['food'][$i] . ' <br />';
                echo $i;
              }
            }
            else
            {
              echo 'il faut cocher une case au moins';
            }
            ?>
     
    </p>

    tout fonctionne tres bien, je recuperer le nom et commentaire sans aucun probleme, il n'y a que les cases a cocher qui bug. mais si je fait une boucle foreach ca marche a merveil ! c'est juste une question de curiosite de la faire avec une for. mais si cela ne se fait pas et bien j'ai la reponse a ma question. je ne veux pas vous faire perdre plus de temps. votre aide est deja plus que tres gentille, merci.

  20. #20
    Invité
    Invité(e)
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <input type="checkbox" name="frite" id='frite' />
    Ce code est faux !

    Ce n'est pas ce que tu as écrit dans ton 1er message !!

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <input type="checkbox" name="food[]" value="frite" id="frite" />
    Ce code est correct.

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

Discussions similaires

  1. Réponses: 3
    Dernier message: 02/12/2016, 15h07
  2. Réponses: 6
    Dernier message: 10/01/2013, 11h07
  3. [Batch] Modification des paramètres d'entrée dans une boucle FOR
    Par reppier dans le forum Scripts/Batch
    Réponses: 2
    Dernier message: 15/06/2009, 15h23
  4. declarer des functions de boutons dans une boucle for
    Par superleon dans le forum ActionScript 3
    Réponses: 1
    Dernier message: 06/06/2009, 12h24
  5. [PHP 5.2] Case à cocher dans une boucle
    Par philippef dans le forum Langage
    Réponses: 3
    Dernier message: 10/12/2008, 02h19

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