par
Truc » 22 juil. 2006, 23:14
C'est la forme tableau des cases qui ne passe pas en javascript.
Le formulaire doit être construit sans l'ajout de [] pour l'attribut name et un id pour chaque case. Puis avant la validation on ajoute à l'aide du javascript les [] manquant pour récupérer un tableau pour le traitement PHP.
<INPUT type="checkbox" name="secteur" id='secteur_0' value="3">Diois<br>
<INPUT type="checkbox" name="secteur" id='secteur_1' value="1">Drôme Provençale<br>
<INPUT type="checkbox" name="secteur" id='secteur_2' value="4">Valence<br>
<INPUT type="checkbox" name="secteur" id='secteur_3' value="2">Vercors<br>
<input type=button value="Tout cocher" onClick="this.value=check(this.form.secteur,this.value)"><br>
<INPUT type="checkbox" name="type" id='type_0' value="2">Appartement<br>
<INPUT type="checkbox" name="type" id='type_1' value="4">Château<br>
<INPUT type="checkbox" name="type" id='type_2' value="1">Maison<br>
<INPUT type="checkbox" name="type" id='type_3' value="5">Terrain<br>
<input type=button value="Tout cocher" onClick="this.value=check(this.form.type,this.value)">
J'ai aussi ajouté un autre paramètre à la fonction check() qui récupère la valeur du bouton => évite la variable supplémentaire "checkflag" qui doit être différente pour les 2 groupes de cases.
La fonction JS donne donc:
function check(field,valeur) {
if (valeur == "Tout cocher") {
for (i = 0; i < field.length; i++) {
field[i].checked = true;}
return "Tout décocher"; }
else {
for (i = 0; i < field.length; i++) {
field[i].checked = false; }
return "Tout cocher"; }
}
Le boutons de validation qui sur le click transforme les attributs "name":
<input type=submit value="valider" onclick="tableau('secteur',this.form.secteur);tableau('type',this.form.type);">
Pour finir la fonction qui ajoute les [] :
function tableau(nom,groupe)
{
var lg = groupe.length;
for(i=0;i<lg;i++)
{
var name=nom+'_'+i;
document.getElementById(name).name +="[]"; // ajout des [] a l'attribut name lors de la validation
}
}
Il ne doit rien manquer...
C'est la forme tableau des cases qui ne passe pas en javascript.
Le formulaire doit être construit sans l'ajout de [] pour l'attribut name et un id pour chaque case. Puis avant la validation on ajoute à l'aide du javascript les [] manquant pour récupérer un tableau pour le traitement PHP.
[php]<INPUT type="checkbox" name="secteur" id='secteur_0' value="3">Diois<br>
<INPUT type="checkbox" name="secteur" id='secteur_1' value="1">Drôme Provençale<br>
<INPUT type="checkbox" name="secteur" id='secteur_2' value="4">Valence<br>
<INPUT type="checkbox" name="secteur" id='secteur_3' value="2">Vercors<br>
<input type=button value="Tout cocher" onClick="this.value=check(this.form.secteur,this.value)"><br>
<INPUT type="checkbox" name="type" id='type_0' value="2">Appartement<br>
<INPUT type="checkbox" name="type" id='type_1' value="4">Château<br>
<INPUT type="checkbox" name="type" id='type_2' value="1">Maison<br>
<INPUT type="checkbox" name="type" id='type_3' value="5">Terrain<br>
<input type=button value="Tout cocher" onClick="this.value=check(this.form.type,this.value)">[/php]
J'ai aussi ajouté un autre paramètre à la fonction check() qui récupère la valeur du bouton => évite la variable supplémentaire "checkflag" qui doit être différente pour les 2 groupes de cases.
La fonction JS donne donc:
[php]function check(field,valeur) {
if (valeur == "Tout cocher") {
for (i = 0; i < field.length; i++) {
field[i].checked = true;}
return "Tout décocher"; }
else {
for (i = 0; i < field.length; i++) {
field[i].checked = false; }
return "Tout cocher"; }
}[/php]
Le boutons de validation qui sur le click transforme les attributs "name":
[php]<input type=submit value="valider" onclick="tableau('secteur',this.form.secteur);tableau('type',this.form.type);">[/php]
Pour finir la fonction qui ajoute les [] :
[php]function tableau(nom,groupe)
{
var lg = groupe.length;
for(i=0;i<lg;i++)
{
var name=nom+'_'+i;
document.getElementById(name).name +="[]"; // ajout des [] a l'attribut name lors de la validation
}
}[/php]
Il ne doit rien manquer...