Foros del Web » Programando para Internet » PHP »

Procesar un formulario que marca todos los checkbox

Estas en el tema de Procesar un formulario que marca todos los checkbox en el foro de PHP en Foros del Web. Tengo un formulario que consiste basicamente en una larga lista de checkbox. El formulario tiene incorporado un script java (hecho en dreamweaver) que me da ...
  #1 (permalink)  
Antiguo 02/03/2006, 20:52
 
Fecha de Ingreso: mayo-2004
Ubicación: Bolivia
Mensajes: 48
Antigüedad: 19 años, 11 meses
Puntos: 2
Procesar un formulario que marca todos los checkbox

Tengo un formulario que consiste basicamente en una larga lista de checkbox.

El formulario tiene incorporado un script java (hecho en dreamweaver) que me da la opcion de marcar y desmarcar todos los checkbox.

El problema es a la hora de procesar el formulario, pues todos los campos checkbox deben tener el mismo nombre para procesar el formulario, pero no se como tomar los valores de los campos y procesarlos.

Usualmente yo proceso los formularios en php con <? if (!$HTTP_POST_VARS){ .... etc.

Pido su ayuda para ello.

Transcribo una version muy resumida del formulario.

<HTML>
<HEAD>
<TITLE>Registro</TITLE>
<SCRIPT language="JavaScript" type="text/javascript">
<!--
<!-- Begin
function checkAll(field) {
for (i = 0; i < field.length; i++)
field[i].checked = true;
}

function uncheckAll(field) {
for (i = 0; i < field.length; i++)
field[i].checked = false;
}
// End -->

function MM_findObj(n, d) { //v4.01
var p,i,x; if(!d) d=document; if((p=n.indexOf("?"))>0&&parent.frames.length) {
d=parent.frames[n.substring(p+1)].document; n=n.substring(0,p);}
if(!(x=d[n])&&d.all) x=d.all[n]; for (i=0;!x&&i<d.forms.length;i++) x=d.forms[i][n];
for(i=0;!x&&d.layers&&i<d.layers.length;i++) x=MM_findObj(n,d.layers[i].document);
if(!x && d.getElementById) x=d.getElementById(n); return x;
}

function MM_validateForm() { //v4.0
var i,p,q,nm,test,num,min,max,errors='',args=MM_valida teForm.arguments;
for (i=0; i<(args.length-2); i+=3) { test=args[i+2]; val=MM_findObj(args[i]);
if (val) { nm=val.name; if ((val=val.value)!="") {
if (test.indexOf('isEmail')!=-1) { p=val.indexOf('@');
if (p<1 || p==(val.length-1)) errors+='- '+nm+' must contain an e-mail address.\n';
} else if (test!='R') { num = parseFloat(val);
if (isNaN(val)) errors+='- '+nm+' must contain a number.\n';
if (test.indexOf('inRange') != -1) { p=test.indexOf(':');
min=test.substring(8,p); max=test.substring(p+1);
if (num<min || max<num) errors+='- '+nm+' must contain a number between '+min+' and '+max+'.\n';
} } } else if (test.charAt(0) == 'R') errors += '- '+nm+' is required.\n'; }
} if (errors) alert('The following error(s) occurred:\n'+errors);
document.MM_returnValue = (errors == '');
}
//-->
</script>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"></HEAD>

<BODY>
<p>&nbsp;</p>
<form action="proceso.php" method=post enctype="multipart/form-data" name=form0 id="form0">
<p>Formulario Necesario </p>
<p><input name="list1" type="checkbox" id="01" value="1" checked>Opcion 1</p>
<p><input name="list1" type="checkbox" id="02" value="2" checked>Opcion 2</p>
<p><input name="list1" type="checkbox" id="03" value="2" checked>Opcion 3</p>
<input name="on" type="button" id="on" value="Todas" onClick="checkAll(document.form0.list1)">
<input name="off" type="button" id="off" value="Ninguna" onClick="uncheckAll(document.form0.list1)">
</p>
<p><input name="Submit" type="submit" class="texto" value="Enviar">
</p>
</form>
<?
if (!$HTTP_POST_VARS){
?>
<br>
</body>
</html>
  #2 (permalink)  
Antiguo 03/03/2006, 04:49
Avatar de JorgitoAlfajor  
Fecha de Ingreso: enero-2006
Mensajes: 152
Antigüedad: 18 años, 3 meses
Puntos: 1
Para recuperar en el script php los valores de los checkbox seleccionados tenés que ponerle como nombre a todos los input algo como "nombre[]", con los corchetes, para que puedas recuperarlo en el script php como un array. Pero si le pones ese nombre a todos los checkbox creo que el script de javascript no va a funcionar. Yo probaría poniéndole a todos los checkbox el mismo id (en tu caso list1) y en name pondria list[] o algo así. Luego en el script proceso.php:

Código PHP:
<?
$check_seleccionados 
$HTTP_POST_VARS['list'];
foreach (
$check_seleccionados as $check) {
//recorrido del array de todos los checkbox seleccionados
}
?>
Saludos.
__________________
¿Se me entiende la letra?
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 09:42.