Probleme avec for/checkbox/foreach :(

Petit nouveau ! | 4 Messages

19 avr. 2009, 04:07

bonjour
je suis bloquée sur un GROS problème...Voila je suis en prépa dans une fac de "l'image"...et donc en prépa on touche un peu a tout...et la je suis en PHP et j'y comprend rien je dois rendre pour lundi un formulaire...Mais qui dit formulaire dit "result" et c'est justement lui qui me pause problème...Le PHP n'étant pas ma spécialité je deviens fou et je sature je comprend pas mon erreur :'(
si qqn pouvait m'aider...
Donc dans mon form j'ai du faire un tableau avec des checkbox qui est:
$sites=array("site1"=>"Site Agence de voyages","site2"=>"Site Comité Régional de tourime du Haut-Languedoc","site3"=>"Site Association sportive de Nogent","site4"=>"Site Club hippique de Nogent","site5"=>"Site Crédit Agricole","site6"=>"Site Crédit Lyonnais","site7"=>"Site Resto Bonne Bouffe");
foreach était imposée donc j'ai fais ça:
      foreach ($sites as $value){ 
		echo '<input type="checkbox" name="activites[]" id="activite" value="'.$sites.'">';
        echo $value.'<br />';
      }

tous s'affiche correctement...donc on coche ses fichu case et apres dans le result pour lire ses case j'ai fais se code
echo "<h1><p class='modif'>Impression en utilisant une boucle:</p></h1>";
for ( $i=0; $i<count($act); $i++) {
echo " ".$act[$i]."<br />";
}
} else {
echo "rien de s&eacute;lectionn&eacute;<br />";
}
et la il m'affiche "array" alors que moi je veux les phrase sélectionné dans le tableau du form...et je suis désespéré :'(


merci d'avance


HELP!!!
Modifié en dernier par twiggy le 19 avr. 2009, 14:17, modifié 1 fois.

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 10684 Messages

19 avr. 2009, 11:06

Modération :
twiggy, afin d'améliorer la lisibilité de ton message,
pense à utiliser les balises [code] ou [php] (selon le langage utilisé).

Elles sont disponibles au-dessus de la zone de saisie de ton message
lorsque tu postes un nouveau message.

Des indications sont disponibles sur la manière de mettre en forme vos messages dans la FAQ



Ton problème vient de la valeur que tu passes dans tes cases à cocher. En effet, $sites est un tableau. Si tu regardes le code source HTML généré, tu verras que toutes tes cases ont pour valeur Array() difficile dès lors de savoir laquelle a été cochée quand tu recois cette valeur ;)

Tu peux soit spécifier le libellé ($value) dans l'attribut valeur, soit utilisé la clé du tableau associatif. Pour cela, il te faut dans ton foreach, non seulement récupérer les valeurs, mais également les clés associées : foreach ($table as $key => $value).

En supposant ensuite que dans ton traitement $act corresponde bien à $_POST['activites'] (ou $_GET le cas échéant) ça devrait fonctionner :)
Ce n'est pas en améliorant la bougie que l'on a inventé l'ampoule...

Petit nouveau ! | 4 Messages

19 avr. 2009, 14:22

Merci Ryle pour ta réponse^^
alors j'ai compris se que tu m'a dis dans la théorie...Je ne sais pas comment l'appliquer en fait:(
se que j'ai fais ne marche toujours pas:(
voila mon code changer dans le forme
      
      foreach ($sites as $key => $value){ 
		echo '<input type="checkbox" name="activites[]" id="activite" value="'.$sites.'">';
        echo $value.'<br />';
      }
      
et effectivement $act correspond bien a " $_POST['activites'] "
merci de m'avoir aidé

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 10684 Messages

19 avr. 2009, 14:51

Bah oui, mais ça sert à rien de récupérer la clé du tableau, si tu continues à utiliser $sites comme valeur de ta checkbox ;)
foreach ($sites as $key => $value){  
        echo '<input type="checkbox" name="activites[]" id="activite" value="'.$key.'">'; 
        echo $value.'<br />'; 
}
Ce n'est pas en améliorant la bougie que l'on a inventé l'ampoule...

Petit nouveau ! | 4 Messages

19 avr. 2009, 15:34

Ryle merci encore pour ton aide vraiment!
Effectivement Array a disparu mais un autre problème est la:'( :'(:'(:'(:'(:'(:'(:'(:'(:'(:'(
En fait maintenant il me met maintenant dans le résult:
site3
site4
site5

(par exemple)
alors qu'il aurait du me mettre le nom des sites:(
je suis désolé je sais que je suis vraiment mauvais mais on a un qu'un cours de 3h sur le PHP et on dois rendre se truc alors qu'on la même pas vu:( merci encore:(

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 10684 Messages

19 avr. 2009, 18:02

Hmm... bizare.... site3, site4 et site5 correspondent aux clés de ton tableau, et c'est justement les clé de ton tableau que tu as spécifié dans l'attribut value de tes cases à cocher si tu as repris mon code....

Tu peux donc soit changer la valeur et mettre celle que tu veux ($value par exemple) ou simplement quand tu récupères la valeur site3, retrouver dans ton tableau la valeur qui lui est associée :)
Ce n'est pas en améliorant la bougie que l'on a inventé l'ampoule...

Petit nouveau ! | 4 Messages

19 avr. 2009, 23:10

quand je veux mettre $value dans result ça me marque: erreur
:'(