Ver Mensaje Individual
  #5 (permalink)  
Antiguo 22/09/2009, 15:24
Avatar de cesarpunk
cesarpunk
 
Fecha de Ingreso: enero-2008
Ubicación: Lima
Mensajes: 943
Antigüedad: 16 años, 11 meses
Puntos: 9
Respuesta: ¿Array y Ajax?

osea tus checkboxes son dinamicos verdad? entonces deberias tener algo como esto:

<input name="id_genero[]" type="checkbox" value="<?php echo $id_genero; ?>">

ahi todo bien....

Nota: Yo por ahi tengo un truquito por culpa de ajax.. que es la de la contabilizacion de checkbox.... debido a que los checkbox son dinamicos no entiendo hasta ahora porque mi bucle no contabiliza cuando hay solo un checkbox pero si me contabiliza cuando hay mas de uno.

Lo que debes hacer es que antes de tu while pongas una variable $cantidad=0 y dentro de tu while lo vayas acumulando.... el resultado lo pones en un textbox (opculto) que te saque el total de checkbox.... entonces a ese textbox lo vas a llamar 'cantidadcheck'

Y en tu funcion ajax vas a hacer lo siguiente: (este ejemplo es solo para los checkboxes luego le agregas los demas datos que desees... y no olvidarse del textbox que tiene la cantidad de checks)


Código:
function EnviaDatos(){
var c = document.getElementById('divresultado');
var cantidadcheck = document.frm.cantidadcheck.value;

var checkboxes = new Array();
	var arrClaves = new Array();
	j=0;ff=0;
	
	if(cantidadcheck=='1'){
		var arr_uno = document.frm["id_genero[]"].value;
		arrClaves[j]=arr_uno;
		checkboxes[ff]="&id_genero[]="+arrClaves[j];
		
		if(!document.frm["id_genero[]"].checked){
			alert("Debe seleccionar los checkbox.");
			return false;	
		}
	}
	else{
	
		selectcheck=false;
		
		for(i=0;i < document.frm["id_genero[]"].length; i++){
			if(document.frm["id_genero[]"][i].checked){
	
				var arr_uno = document.frm["id_genero[]"][i].value;
				arrClaves[j]=arr_uno;
				checkboxes[ff]="&id_genero[]="+arrClaves[j];
				ff++;
				j++;
				selectcheck=true;	
			}
		}
		
		if(!selectcheck){
			alert("Debe seleccionar los checkbox.");
			return false;
		}

	}
ajax=nuevoAjax();
	c.innerHTML = '<img src="images/sending.gif">';
	ajax.open("POST", "script.php",true);
	ajax.onreadystatechange=function(){
		if (ajax.readyState==4) {
			c.innerHTML = ajax.responseText
		}
	}
	ajax.setRequestHeader("Content-Type","application/x-www-form-urlencoded");
	ajax.send("checkboxes="+checkboxes+"&control=enviado");
}
Lo que hago es preguntar por la cantidad de checkbox.... si es uno, solo mando un valor simple en el array 'checkboxes', pero si son mas armo el array y lo mando al array 'checkboxes'

Pero lo curioso es que en mi script de php solo recibire el dato:

Código PHP:
$genero_id=$_POST['id_genero'];

//para recibirlos debemos recorrer el array

for( $i 0$i count($genero_id); $i ++){
     
$genero=explode(',',$genero_id[$i]);
     echo 
$genero[0];

Con esto capturamos todos los checkboxes dinamicos marcados
__________________
Quitenme la vida pero no la bebida.