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 variables issues d'une boucle


Sujet :

Langage PHP

  1. #1
    Futur Membre du Club
    Homme Profil pro
    Technicien Help Desk
    Inscrit en
    Juin 2014
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Technicien Help Desk
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2014
    Messages : 9
    Points : 5
    Points
    5
    Par défaut Récupérer des variables issues d'une boucle
    Bonjour.
    Nouveau sur le forum car nouveau en PHP.

    Mon problème est dans le titre.

    Voici le contexte:
    Je cherche à créer un catalogue de matériel en ligne avec bdd mysql.
    Dans le menu de mon catalogue le visiteur choisit dans une liste déroulante une catégorie, puis une sous-categorie dans une seconde liste.
    Cette sous-catégorie définit des groupes de cases à cocher qui correspondent à des filtres.
    Ex: Pour la sous-catégorie "PC" on a un groupe de cases dont le nom est "Processeur" avec des cases qui s'appellent "Core i5", "Atom", etc..., un autre groupe appelé "Mémoire" avec les cases "4Go", "8Go", etc...

    Comme les noms de mes cases à cocher sont issus de ma base j'applique un while et un fetch pour les récupérer:
    à chaque boucle PHP génère un champ input de type checkbox dont le name et l'id sont du coup une variable issue de mon while.

    Problème: je veux récupérer les valeurs des cases cochées dans un $_POST pour executer une autre requête SQL, mais quand je sors de ma boucle, ma variable ($conf['id']) reste bloquée sur la dernière valeur parcourue.
    Rien de plus normal me direz-vous! Mais comment puis-je faire pour sortir ces variables de ma boucle???
    Je précise que je débute en php et que je n'ai pas de formation de développeur!

    Si quelqu'un a une piste je suis preneur!
    Voici mon code:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    <?php
    $config = $bdd->query("SELECT configurations.id, configuration, id_critere, id_modele
    	FROM configurations
    	JOIN criteres
    	ON configurations.id_critere = criteres.id
    	WHERE criteres.critere='".$crit['critere']."'
    	GROUP BY configuration");
    while ($conf = $config->fetch()){
    ?>
    <input type="checkbox" name="<?php echo $conf['id']; ?>" id="<?php echo $conf['id']; ?>" /><label for="<?php echo $conf['id']; ?>"><?php echo $conf['configuration']; ?></label>
    <?php } $config->closeCursor(); ?>
    Je précise que la variable $crit['critere'] est issue d'une précédente boucle while dans laquelle celle-ci est imbriquée.

  2. #2
    Membre éprouvé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2012
    Messages
    631
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Août 2012
    Messages : 631
    Points : 1 220
    Points
    1 220
    Par défaut
    bonjour,

    l'attribut name du checkbox doit être suivi de []
    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    <input type="checkbox" name="choix[]" id="<?php echo $conf['id']; ?>" value="<?php echo $conf['id']; ?>" /><label for="<?php echo $conf['id']; ?>"><?php echo $conf['configuration']; ?></label>

    après tu parcours avec une boucle le array $_POST['choix'] pour récupérer les cases cochées

  3. #3
    Futur Membre du Club
    Homme Profil pro
    Technicien Help Desk
    Inscrit en
    Juin 2014
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Technicien Help Desk
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2014
    Messages : 9
    Points : 5
    Points
    5
    Par défaut
    bonjour

    je n'ai pas accès à mon code pendant le week-end
    je testerai ta solution lundi et te donnerai le résultat

    merci

  4. #4
    Futur Membre du Club
    Homme Profil pro
    Technicien Help Desk
    Inscrit en
    Juin 2014
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Technicien Help Desk
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2014
    Messages : 9
    Points : 5
    Points
    5
    Par défaut
    Petite question:
    la boucle pour parcourir le array c'est un foreach?
    je peux la faire àl'extérieur de mon while ou je dois la faire forcément à l'intérieur?

  5. #5
    Membre éprouvé

    Homme Profil pro
    Développeur informatique
    Inscrit en
    Décembre 2007
    Messages
    979
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Décembre 2007
    Messages : 979
    Points : 1 256
    Points
    1 256
    Par défaut Un peu compliqué je pense, mais faisable
    Bonjour,

    il vous faut un SELECT pour les categories, et autant de SELECT que de sous-categories:


    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
    $categoriesArr = << un tableau associatif >>;
    $categoriesStr = '<select id="cat-select">';
    $sousCategoriesStr = '';
     
    foreach($categoriesArr as $k => $v) {
     
        // Ajout categorie
        $categoriesStr .= '<option value="' . $k . '">' . $v . '</option>';
     
        // Ajout sous-categories
        $sousCategoriesArr = << un tableau associatif de la sous-categorie courante >>;
        $sousCategoriesStr .= '<select id="sous-cat-'.$k.'">';
        foreach($sousCategoriesArr as $sk => $sv) {
          $categoriesStr .= '<option value="' . $sk . '">' . $sv . '</option>';
        }
        $sousCategoriesStr .= '</select>';
    }
     
    $categoriesStr .= '</select>';
    Tu aura besoin d'un petit bout de code javascript pour changer les sous-categories dynamiquement:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     $('#cat-select').on('change', function(){ ...afficher la SELECT de la sous catégorie.. });

    ++
    AlloSchool, votre école sur internet.

  6. #6
    Futur Membre du Club
    Homme Profil pro
    Technicien Help Desk
    Inscrit en
    Juin 2014
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Technicien Help Desk
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2014
    Messages : 9
    Points : 5
    Points
    5
    Par défaut on s'en approche
    Salut armel.

    J'ai testé ton bout de code. J'arrive bien à récupérer les valeurs de mes checkbox hors de mon while. En fait ça me crée un tableau numéroté dont toutes les valeurs son "on" (car checkbox). Mais je vois pas comment avec ça récupérer les id des checkox cochées (ces id correspondent aux id des entrées de ma tables et j'en ai besoin pour lancer ma requête SQL).

    Pour mr_samourai: la question des catégories et sous_categories a déjà été résolue, c'est vraiment ces checkbox qui posent problème!!!

  7. #7
    Membre éprouvé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2012
    Messages
    631
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Août 2012
    Messages : 631
    Points : 1 220
    Points
    1 220
    Par défaut
    si tu récupères "on" comme valeur d'une case à cocher c'est que l'attribut value du checkbox n'est pas renseigné car par défaut les checkboxs renvoient On si elles sont cochées.
    Pour modifier la valeur d'une case à cocher il faut donner une valeur à l'attribut value du checkbox:
    Code html : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    <input type="checkbox" name="choix[]" id="<?php echo $conf['id']; ?>" value="<?php echo $conf['id']; ?>" /><label for="<?php echo $conf['id']; ?>"><?php echo $conf['configuration']; ?></label>

    pour récupérer les ids il suffit de parcourir le tableau $_POST['choix']:
    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    //var_dump($_POST['choix'] );
    foreach( $_POST['choix'] as $id ){
     
    //echo $id;
    }

  8. #8
    Futur Membre du Club
    Homme Profil pro
    Technicien Help Desk
    Inscrit en
    Juin 2014
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Technicien Help Desk
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2014
    Messages : 9
    Points : 5
    Points
    5
    Par défaut
    Bingo! en ajoutant un value à ma checkbox ça marche!
    Merci beaucoup.
    Me reste plus qu'à lancer ma requête.

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

Discussions similaires

  1. [PHP 5.3] Récupérer des données issues d'une requête http GET
    Par Pierrea4564 dans le forum Langage
    Réponses: 2
    Dernier message: 24/09/2013, 08h15
  2. [MySQL] Récupérer des variables hors d'une fonction
    Par piero-la-lune dans le forum PHP & Base de données
    Réponses: 6
    Dernier message: 26/02/2008, 10h30
  3. Réponses: 4
    Dernier message: 09/08/2006, 15h14
  4. [MySQL] Récupérer 2 variables issues d'une boite liste
    Par alain31tl dans le forum PHP & Base de données
    Réponses: 6
    Dernier message: 26/03/2006, 04h17
  5. [SQL] Récupérer des variables de formulaire dans une requête SQL
    Par psychoBob dans le forum PHP & Base de données
    Réponses: 3
    Dernier message: 22/11/2005, 18h44

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