sélection cases à cocher

donatello
Invité n'ayant pas de compte PHPfrance

31 mai 2005, 02:30

Bonjour,
j'essaye d'écrire un script qui analyse des cases à cocher.
Si une case a été cochée par l'utilisateur, cette case est mise dans une variable. Dans le cas contraire, on ne fait rien.Mon code:
function envoi() {
var a = new Array()
for (i=0; i<= document.forms.length; i++) {
if (document.forms.elements[0].checked=true) {
a = document.forms.elements[0].checked //mon problème
}
}


Mon problème est que je ne sais pas comment écrire "mettre dans la var a uniquement les cases qui sont cochées".

Si je devais transcrire cette idée, j'écrirais:

a = document.forms.elements[0].checked = true


Mais biensûr, ce n'est pas correct puisqu'il y a deux égalités. Comment puis-je coder cette ligne?

Eléphant du PHP | 149 Messages

31 mai 2005, 09:28

Essaie ça:

a = document.forms.elements[0].value

Mais je ne suis pas sûr du tout! :wink:
"Si tu travailles avec un marteau-piqueur pendant un tremblement de terre, désynchronise-toi, sinon tu travailles pour rien."
JC Vandamme.

Mammouth du PHP | 19672 Messages

31 mai 2005, 09:29

Mouais, c'est curieux, à regarder ton script, tu ne teste que le permier élément de plusisuers formulaires: essaye comme ça (sans garantie)
function envoi()
{
	var a = new Array()
	var j = 0;
	var nb_elts = document.forms.length;
	for (i=0; i<= nb_elts; i++)
	{
		if (document.forms.elements[i].checked=true)
		{
			a[j] = document.forms.elements[i].value;
			j++;
		}
	}
} 
Codez en pensant que celui qui maintiendra votre code est un psychopathe qui connait votre adresse :axe:

Invité
Invité n'ayant pas de compte PHPfrance

31 mai 2005, 10:39

tu ne teste que le permier élément de plusisuers formulaires
c'est parcequ'il n'y a qu'un élément dans chaque formulaire (donc chaque annonce): une case à cocher

Mammouth du PHP | 19672 Messages

31 mai 2005, 11:08

Ok, je vois, alors il faudrait ajouter un élément identifiant le formulaire en plus de la case à cocher: Utiliser l'id de l'article par exemple préfixé par "form" et tu l'envoies en paramètre de la fonction. Exemple: Ton article a pour id AX123, ton formulaire doit être j'imagine construit dynamiquement, donc tu fais:
<form id="form_<?php echo($rox['id']); ?>" action="...etc..
Et dans ton élément onchange, tu envoies le paramètre
onchange=envoi(form_<?php echo($rox['id']); ?>)
modifie la fonction comme ceci maintenant:
function envoi(nom_form)
{
    var a = new Array();
    var f = new Array();
    var j = 0;
    var nb_elts = document.forms.length;
    for (i=0; i<= nb_elts; i++)
    {
        if (document.forms[nom_form].elements[i].checked=true)
        {
            a[j] = document.forms.elements[i].value;
            f[j] = nom_form;
            j++;
        }
    }
}
Comme ça, tu as deux tableaux parallèles avec le nom du formulaire et l'élément coché. On doit aussi pouvoir simplifier avec un tableau à deux dimensions, je sais pas trop en JavaScript.
Codez en pensant que celui qui maintiendra votre code est un psychopathe qui connait votre adresse :axe:

Invité
Invité n'ayant pas de compte PHPfrance

31 mai 2005, 11:10

c'est étrange mais ce code coche une case à cocher si elle ne l'est pas à l'origine...

Invité
Invité n'ayant pas de compte PHPfrance

31 mai 2005, 11:13

sorry, mon message est arrivé après ton dernier post.

Mammouth du PHP | 19672 Messages

31 mai 2005, 11:52

Je viens de réaliser une erreur dans mon code, corriger comme suit:
function envoi(nom_form)
{
    var a = new Array();
    var f = new Array();
    var j = 0;
    var nb_elts = document.forms[nom_form].length;
    for (i=0; i<= nb_elts; i++)
    {
        if (document.forms[nom_form].elements[i].checked=true)
        {
            a[j] = document.forms.elements[i].value;
            f[j] = nom_form;
            j++;
        }
    }
}
Codez en pensant que celui qui maintiendra votre code est un psychopathe qui connait votre adresse :axe: