Problème cases à cocher, récupération dans mail envoyé

Eléphanteau du PHP | 14 Messages

21 août 2007, 22:15

Premièrement, merci de votre temps passé sur mon problème.

Je suis d'accord avec tout ce que vous dites, mais...

La raison pour laquelle je n'ai pas utilisé de tableau dans le champ hidden "$CHOIX[]" est que j'avais d'abords essayé de cette façon, mais ca ne fonctionnait pas jusqu'à ce que je fasse comme maintenant... (vous me direz, ca ne marche pas beaucoup mieux ^^).

Donc.. je vais d'abord essayé de déplacer ma boucle qui est pour le moment vers les ligne 210. Si ca ne fonctionne pas, je suivrai le conseil de mere-teresa et si ca ne marche pas toujours pas, je me tire une balle :p ...

Je vous tiens au courant dès demain. ;)

Edit : j'ai du nouveau ^^

Si je place la boucle avant la partie du formulaire concernant les checkbox, le var_dump me renvoi quelque chose.. d'étrange, mais quelque chose...

Code : Tout sélectionner

<?php $choix = ''; for ($i = 1; $i <= 8; $i++) { $vn = 'case' . $i; if (isSet($_POST[$vn])) { // si l'index existe $choix .= ' - ' . $_POST[$vn] . "\n"; // avec '.=' on ajoute la variable à la suite dans $choix } } ?> <tr> <td class="td_form" width="170">Type de bien :</td> <td class="td_form" width="253"> <P> <input type="checkbox" name="case1" value="Appartement">&nbsp;Appartement <input type="checkbox" name="case2" value="Maison">&nbsp;Maison <input type="checkbox" name="case3" value="Terrain">&nbsp;Terrain <input type="checkbox" name="case4" value="Immeuble">&nbsp;Immeuble<br /> <input type="checkbox" name="case5" value="Garage">&nbsp;Garage <input type="checkbox" name="case6" value="Investissement">&nbsp;Investissement <input type="checkbox" name="case7" value="Co-propri&eacute;t&eacute;">&nbsp;Co-propri&eacute;t&eacute; <input type="checkbox" name="case8" value="Autre">&nbsp;Autre <input type="hidden" name="CHOIX" value="<?php echo $choix; ?>"><br />

Code : Tout sélectionner

array(9) { ["CIVILITE"]=> string(8) "Monsieur" ["NOM"]=> string(25) "--- champ obligatoire ---" ["EMAIL"]=> string(22) "--- email invalide ---" ["TEL"]=> string(25) "--- champ obligatoire ---" ["case5"]=> string(6) "Garage" ["case6"]=> string(14) "Investissement" ["CHOIX"]=> string(4) "s:0:" ["MSG"]=> string(0) "" ["VALIDER"]=> string(7) "Valider" }
Edit 2 :
Si je clique 2 fois sur valider, alors le var_dump m'affiche bien le contenu de $_POST['CHOIX'] ... on avance...

Edit 3 :
En fait ce qu'il se passe :
Je fais exprès de ne pas remplir les champs obligatoire du formulaire pour qu'il ne soit pas envoyé, afin de tester...
Je clic une première fois, la variable $choix se rempli du contenu des cases cochées. (echo $choix; fonctionne).
Je clic une seconde fois, c'est $_POST['CHOIX'] qui se rempli avec le contenu de $choix. (le var_dump fonctionne).
Mais pourquoi ?

Modérateur PHPfrance
Modérateur PHPfrance | 6037 Messages

22 août 2007, 09:43

Là tu as comme retour un tableau sérialisé (avec la fonction serialize()), d'où le résultat bizarre.
Soit tu n'utilises pas le tableau pour $_POST['choix'] (et chaque choix continue à avoir son propre nom) et tu ôtes serialize(), soit tu utilises ce tableau, et tu devras désérialiser plus tard, quand tu auras besoin de récupérer tous les choix.
Règle n°2 du webmaster : Toujours commencer par le HTML qu'on veut obtenir....toujours ! :priere:
J'aime apprendre de nouvelles choses.

Eléphanteau du PHP | 14 Messages

22 août 2007, 21:28

Oui, j'ai remarqué ca entre temps, j'ai donc ôté la fonction serialize, et il n'y a plus de résultat bizzard.
Par contre je dois toujours valider 2 fois de suite pour remplir $_POST['CHOIX'].. je ne comprend pas.. on y est presque...
Malheureusement, je n'ai pas eu le temps de rechercher aujourd'hui car j'ai eu un accident de voiture ce matin en allant bosser et j'étais un peu chamboulé... je retest ca demain...

Eléphanteau du PHP | 14 Messages

11 oct. 2007, 00:05

Alors.. après quelques souci perso et autres joyeusetés, je me suis remis dans ce petit script qui me pose tant de problèmes...
J'ai retenue la dernière solution de Mere-theresa, avec un "vrai" tableau...

Mon code est donc maintenant celui là :
déclaration en début de script :

Code : Tout sélectionner

$choix = $_POST['CHOIX'];
Puis ensuite mes cases à cocher du formulaire :

Code : Tout sélectionner

<?php //$choix = ''; for ($i = 1; $i <= 8; $i++) { $vn = $choix[$i]; if (isSet($vn)) {// si l'index existe $choix = ' - ' . $vn . "\n"; // avec '.=' on ajoute la variable à la suite dans $choix } } //mais cette boucle ne sert apparement à rien... echo "<tr>"; echo "<td class='td_form' width='170'>Type de bien :</td>"; echo "<td class='td_form' width='253'>"; echo "<P>"; echo "<input type='checkbox' name='choix[]' value='Appartement'>&nbsp;Appartement"; echo "<input type='checkbox' name='choix[]' value='Maison'>&nbsp;Maison"; echo "<input type='checkbox' name='choix[]' value='Terrain'>&nbsp;Terrain"; echo "<input type='checkbox' name='choix[]' value='Immeuble'>&nbsp;Immeuble<br />"; echo "<input type='checkbox' name='choix[]' value='Garage'>&nbsp;Garage"; echo "<input type='checkbox' name='choix[]' value='Investissement'>&nbsp;Investissement"; echo "<input type='checkbox' name='choix[]' value='Co-propri&eacute;t&eacute;'>&nbsp;Co-propri&eacute;t&eacute;"; echo "<input type='checkbox' name='choix[]' value='Autre'>&nbsp;Autre"; echo "<input type='hidden' name='CHOIX' value='$choix'><br />"; echo $choix; ?>
Le var_dump me retourne :
array(8) {
["CIVILITE"]=>
string(8) "Monsieur"
["NOM"]=>
string(4) "test"
["EMAIL"]=>
string(13) "[email protected]"
["TEL"]=>
string(10) "0123456789"
["choix"]=>
array(3) {
[0]=>
string(6) "Garage"
[1]=>
string(14) "Investissement"
[2]=>
string(14) "Co-propriété"
}
["CHOIX"]=>
string(0) ""
["MSG"]=>
string(103) "test testtest testtest etsttgetsvcs testvetstetstst et
testteststste
test etstetstetsttest etsts etst"
["VALIDER"]=>
string(7) "Valider"
}
Mais dans le mail que je reçois, je n'ai aucune info concernant les cases cochées.... !
Rien n'est enregistré dans le champ HIDDEN... :(

J'ai également essayé de cette façon apr désespoire :

Code : Tout sélectionner

echo "<tr>"; echo "<td class='td_form' width='170'>Type de bien :</td>"; echo "<td class='td_form' width='253'>"; echo "<P>"; echo "<input type='checkbox' name='choix[]' value='Appartement'>&nbsp;Appartement"; echo "<input type='checkbox' name='choix[]' value='Maison'>&nbsp;Maison"; echo "<input type='checkbox' name='choix[]' value='Terrain'>&nbsp;Terrain"; echo "<input type='checkbox' name='choix[]' value='Immeuble'>&nbsp;Immeuble<br />"; echo "<input type='checkbox' name='choix[]' value='Garage'>&nbsp;Garage"; echo "<input type='checkbox' name='choix[]' value='Investissement'>&nbsp;Investissement"; echo "<input type='checkbox' name='choix[]' value='Co-propri&eacute;t&eacute;'>&nbsp;Co-propri&eacute;t&eacute;"; echo "<input type='checkbox' name='choix[]' value='Autre'>&nbsp;Autre"; echo "<input type='hidden' name='$choix' value='choix[]'><br />"; echo $choix; ?>
Rien ne passe dans le champ HIDDEN et donc par le mail...

Au secours ! :shock: