6 votes

Utilisez des crochets dans le nom de la case à cocher lors de l'utilisation de PHP et JavaScript?

Je dois un formulaire avec des cases à cocher comme ceci :

Fast Food
Table Service
Cafétéria

lorsque j'utilise les crochets dans le nom (type[]), mon php fonctionne :

$type=$_POST['type'];

echo "les types sont : ";
for ($counter = 0; $counter < sizeof($type); $counter += 1) {
    echo "".$type[$counter];
}

mais mon javascript ne fonctionne pas :

var f = document.addform;
for (var i=0; i

`

cependant, si je retire les crochets :

Fast Food

alors le PHP ne fonctionne pas mais le javascript si.

qu'est-ce qui se passe ici? que devrais-je utiliser?

merci.

`

9voto

Quentin Points 325526

PHP a un système inhabituel pour gérer plusieurs contrôles de formulaire avec le même nom, il s'attend à ce que les noms incluent [] mais ne les utilise pas dans le nom de la variable.

JavaScript n'a pas ce problème. La propriété aura toujours les crochets.

Bien sûr, les crochets ont une signification spéciale en JS, donc vous ne pouvez pas utiliser la notation point pour accéder à la propriété.

f['type[]'][i].checked

3voto

Mewp Points 4475

En javascript, vous pourriez utiliser f['type[]'] au lieu de f.type. Ce n'est que php qui change [] en array.

2voto

Narcissus Points 1741

Bien sûr, vous pouvez également mettre une 'clé' entre crochets, aussi (c'est-à-dire donner à chaque champ un nom unique réel). Quelque chose comme 'type[1]', 'type[2]' and 'type[3]'. PHP le met toujours dans un tableau (indexé par ces nombres) et JS peut y accéder aussi.

0voto

ATOzTOA Points 9045

Vous pouvez toujours utiliser document.getElementsByName() car il prend une chaîne de caractères comme argument.

Comme ceci:

var f = document.getElementsByName("type[]");
for (var i=0; i < f.length; i++){
    if(f[i].checked == true){
        break;
    }
    if(i == (f.length-1)){
        alert("Aucune catégorie saisie!");
        valable=false;
    }
}

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X