Page 1 sur 1
pb de checkbox et de include
Posté : 16 sept. 2005, 16:03
par philoult
bonjour,
j'ai plusieurs checkbox dont on peut en valider plusieurs, et le resultat me permet d'afficher plusieurs page htm diferent dans une même page avec une fonction include.
Voici le code des checkbox de la page 1:
<input name="option[]" type="checkbox" id="option" value="coloc"> colocation
<input name="option[]" type="checkbox" id="option" value="passhbgt"> passerelle hébergement
<input name="option[]" type="checkbox" id="option" value="osm"> autre OSM</p>
ensuite le form envoi le resultat dans la page2
dont voici le code qui marche avec 1seul choix:
if($option) {
for ($i=0; $i<count($option); $i++) {
include "ajcoloc.htm";
}
}
Moi ce que je voudrais c'est si l'on choisi plusieurs checkbox dans la page1
que cela m'affiche dans la page2 les fichiers corespondants.
exemple la checkbox coloc correspond au fichier coloc.htm
la checkbox osm correspond au fichier osm.htm
etc etc etc.
mais j'y arrive pas.
Je pense qu'il faut rajouter des if mais mes essais ne sont pas du tout concluant.
Kiki veut bien m'aider??
Merci
Posté : 16 sept. 2005, 16:09
par Cyrano
Dans ta page 2, il faudrait commencer par récupérer la valeur envoyée depuis le formulaire.
$option = $_POST['option'];
Et là tu peux utiliser la variable option.
Posté : 16 sept. 2005, 16:11
par philoult
oui oui ça je le fait bien j'ai oublier de vous le noter.
Posté : 16 sept. 2005, 16:16
par Cyrano
Alors essaye ça:
<?php
if($option)
{
for ($i=0; $i<count($option); $i++)
{
include $option[$i].".htm";
}
}
?>
Posté : 16 sept. 2005, 16:19
par philoult
mais à quel moment tu definis quel fichier correspond à quel reponse de checkbox?
comment tu definis $i
Posté : 16 sept. 2005, 16:53
par Cyrano
$i est l'index du tableau. Ce tableau ne contient que les cases qui ont été cochées. Donc $option[$i] correspond successivement à $option[0], $option[1], etc... jusqu'à ce qu'on ait atteint la fin du tableau. Or la valeur (attribut value de la balise <input ) correspond au nom du fichier. Il suffit donc de faire une concaténation de cette valeur avec l'extension ".htm"
Reprenons ton exemple:
<input name="option[]" type="checkbox" id="option" value="coloc"> colocation
<input name="option[]" type="checkbox" id="option" value="passhbgt"> passerelle hébergement
<input name="option[]" type="checkbox" id="option" value="osm"> autre OSM</p>
Si on coche les trois cases, ce que je t'ai suggéré comme code va donc faire l'inclusion successive de $option[0].".htm", $option[1].".htm" et $option[2].".htm", ce qui va correspondre une fois traduit par PHP à l'inclusion de coloc.htm, passhbgt.htm et osm.htm
Posté : 18 sept. 2005, 21:01
par Reiji
Code : Tout sélectionner
<input name="option[]" type="checkbox" id="option" value="coloc"> colocation
Ca serai pas plutot

:
Code : Tout sélectionner
<input name="option" type="checkbox" id="option" value="coloc"> colocation
Posté : 18 sept. 2005, 21:05
par Cyrano
Non
Reiji, parce que plusieurs champs du formulaire ont le même nom : en ajoutant les crochets [], on va récupérer automatiquement un tableau indexé comme je l'ai expliqué plus haut.
Si tu ne mets pas ces crochets, ton code html sera invalide et les résultats ne correspondront pas. Donc pour un champ unique, on ne met pas les crochets, pour plusieurs champs correspondant au même type de données dont on veut avoir 0 à n possibilités, on ajoutera les crochets

Posté : 18 sept. 2005, 21:09
par Truc
Je me permet de te répondre:
Oui et Non, en effet on peut faire les 2 manières sauf que lorsque l'on ajoute des [] ça va crée un tableau contenant les "values" des cases cochées donc il suffira de parcourir le tableau pour savoir quelles cases ont été cochées.
Si on ne met pas de [] il faudra donner un nom différent a toutes les cases a cocher donc plus fastidieux pour récuperer les cases cochées sur la page de traitement du formulaire.
Tu me dis si je me trompe Cyrano 
Posté : 18 sept. 2005, 21:16
par Reiji
Je me permet de te répondre:
Oui et Non, en effet on peut faire les 2 manières sauf que lorsque l'on ajoute des [] ça va crée un tableau contenant les "values" des cases cochées donc il suffira de parcourir le tableau pour savoir quelles cases ont été cochées.
Si on ne met pas de [] il faudra donner un nom différent a toutes les cases a cocher donc plus fastidieux pour récuperer les cases cochées sur la page de traitement du formulaire.
Tu me dis si je me trompe Cyrano 
Ah ouais, je connaissais pas cette synthaxe merci de l'info
