PHP no convierte automáticamente la información de varias casillas de verificación con el mismo nombre en una matriz como lo hace ASP, lo que genera algunos inconvenientes de uso. Pero todavía hay una solución, que es utilizar javascript para realizar el preprocesamiento. Todavía existen varias casillas de verificación con el mismo nombre en forma de matrices en JavaScript, por lo que antes de enviar el formulario, puede usar JavaScript para combinar la información de las casillas de verificación en una matriz de caracteres y asignarla a los elementos ocultos en el formulario, y luego utilizar PHP La función de explosión analiza esta matriz para que se pueda transferir la información de la casilla de verificación. A continuación se muestran ejemplos.
Supongamos que existe un formulario de este tipo:
<form name="form1" id="form1" método="post" action="myphp.php" onSubmit="return Checker()">
<tipo de entrada="casilla de verificación" nombre="elemento" valor="1">1<br>
<tipo de entrada="casilla de verificación" nombre="elemento" valor="2">2<br>
<tipo de entrada="casilla de verificación" nombre="elemento" valor="3">3<br>
<tipo de entrada="casilla de verificación" nombre="elemento" valor="4">4<br>
<tipo de entrada="oculto" nombre="elementos" valor="">
<tipo de entrada="enviar" valor="Enviar">
</formulario>
Este formulario tiene cuatro casillas de verificación cuyos nombres son todos elementos. Cuando el usuario hace clic en el botón Enviar, se llamará la función del Verificador y, si el Verificador devuelve verdadero, se enviará el formulario. El formulario no se enviará. La función Checker aquí es la función de preprocesamiento que queremos escribir. Agregue el siguiente javascript en la sección de encabezado de HTML:
<script language="javascript">
<!--
función corrector()
{
form1.items.value = "";
if (!form1.item.length) // Solo hay una casilla de verificación, form1.item.length = indefinido
{
si (formulario1.elementos.marcados)
formulario1.elementos.valor = formulario1.elemento.valor;
}
demás
{
para (i = 0; i <form1.item.length; i++)
{
if (form1.item(i).checked) // Hay una casilla marcada en la casilla de verificación {
form1.items.value = form1.item(i).valor;
para (j = i + 1; j <form1.item.length; j++)
{
si (formulario1.elemento(j).marcado)
{
form1.items.value += " "; //Utiliza espacios como separadores form1.items.value += form1.item(j).value;
}
}
romper;
}
}
}
devolver verdadero;
}
-->
</script>
Utilice
esta declaración en myphp.php:
$items = explode(" ", $HTTP_POST_VARS["items"]);
Estas opciones se pueden separar en matrices. Cabe señalar que el valor de la opción no puede contener delimitadores (aquí, espacios).