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:
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.
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:
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:
$('#cat-select').on('change', function(){ ...afficher la SELECT de la sous catégorie.. });
++