PHP ne convertit pas automatiquement plusieurs informations de cases à cocher portant le même nom en un tableau comme le fait ASP, ce qui entraîne certains inconvénients à utiliser. Mais il existe encore une solution, qui consiste à utiliser javascript pour effectuer le prétraitement. Plusieurs cases à cocher portant le même nom existent toujours sous forme de tableaux en JavaScript, donc avant de soumettre le formulaire, vous pouvez utiliser JavaScript pour combiner les informations des cases à cocher dans un tableau de caractères et les attribuer aux éléments masqués du formulaire, puis utiliser PHP La fonction d'explosion analyse ce tableau, afin que les informations de la case à cocher puissent être transférées. Vous trouverez ci-dessous des exemples.
Supposons qu'il existe un tel formulaire :
<form name="form1" id="form1" method="post" action="myphp.php" onSubmit="return Checker()">
<input type="checkbox" nom="item" value="1">1<br>
<input type="checkbox" nom="item" value="2">2<br>
<input type="checkbox" name="item" value="3">3<br>
<input type="checkbox" name="item" value="4">4<br>
<type d'entrée="caché" nom="éléments" valeur="">
<input type="soumettre" valeur="Soumettre">
</form>
Ce formulaire comporte quatre cases à cocher dont les noms sont tous des éléments. Lorsque l'utilisateur clique sur le bouton Soumettre, la fonction Checker sera appelée, et si le Checker renvoie vrai, le formulaire sera soumis. Le formulaire ne sera pas soumis. La fonction Checker ici est la fonction de prétraitement que nous voulons écrire. Ajoutez le javascript suivant dans la section d'en-tête du HTML :
<script language="javascript">
<!--
fonction Vérificateur()
{
form1.items.value = "";
if ( !form1.item.length ) // Il n'y a qu'une seule case à cocher, form1.item.length = undefined
{
si (form1.items.checked)
form1.items.value = form1.item.value;
}
autre
{
pour ( je = 0 ; je < form1.item.length ; i++ )
{
if (form1.item(i).checked) // Il y a une case cochée dans la case à cocher {
form1.items.value = form1.item(i).value;
pour ( j = i + 1 ; j < form1.item.length ; j++ )
{
si (form1.item(j).checked)
{
form1.items.value += " "; //Utiliser des espaces comme séparateurs form1.items.value += form1.item(j).value;
}
}
casser;
}
}
}
renvoie vrai ;
}
-->
</script>
Utilisez
cette instruction dans myphp.php :
$items = éclater(" ", $HTTP_POST_VARS["items"]);
Ces options peuvent être séparées en tableaux. A noter que la valeur de l'option ne peut pas contenir de délimiteurs (ici, des espaces).