Foros del Web » Programando para Internet » PHP »

[SOLUCIONADO] Procesar "checkbox array"

Estas en el tema de Procesar "checkbox array" en el foro de PHP en Foros del Web. Hola a todos. Vengo con una consulta que he intentado encontrarle solución y por lo que he visto en google, no debería de tener error, ...
  #1 (permalink)  
Antiguo 03/02/2015, 06:37
 
Fecha de Ingreso: enero-2013
Mensajes: 12
Antigüedad: 11 años, 3 meses
Puntos: 0
Procesar "checkbox array"

Hola a todos.
Vengo con una consulta que he intentado encontrarle solución y por lo que he visto en google, no debería de tener error, asi que ya no se que modificar para que el codigo funcione como quiero.
Primeramente creia que funcionaba bien, lo habia testeado por varios días y paecia no tener problemas, hasta que quiero trabajar solo con un elemento, les cuento

Tengo un form que genera de forma dinamica una lista con los usuarios del sistema, cada usuario tiene un checkbox con el valor de id para ser pasado posteriormente, este es el codigo:
Código HTML:
<tr>
	<td align="left" valign="center"><?php echo $row['nombre']; ?></td>
	<td align="left" valign="center"><?php echo $region['nombre_region']; ?></td>
	<td align="center" valign="center"><?php echo $cant_asig; ?></td>
	<td align="center" valign="center"><input type="checkbox" name="id_usuarios[]" value="<?php echo $row['login']; ?>" checked /> </td>
</tr><?php
}
?><tr>
	<td align="center" valign="center" colspan = "3">
	<input type="submit" name="asignar" value="Asignar solicitudes" />
		<input type="hidden" name="cant_sol" value="<?php echo $cant_sol; ?>" />
		<input type="hidden" name="indice" value="<?php echo $indice; ?>" />
		<input type="hidden" name="query2" value="<?php echo $query2; ?>" /></td>
</tr> 
y este es el codigo que procesa todo despues:

Código PHP:
if(isset($_POST["asignar"])){
        
$cant_sol=$_POST['cant_sol'];
        
$query2=$_POST['query2'];
        
$indice=$_POST['indice'];
        
$cant_repartir=$_POST['repartir'];
        if (
$cant_sol != && $cant_repartir!=&& $cant_repartir<=$cant_sol){
            if(!empty(
$_POST['id_usuarios'])){
                foreach(
$_POST['id_usuarios'] as $clave => $valor){
                    
$arr_login[$clave]=$valor;
                    
$arr_asig[$clave]=0;
                    
$query1="Select DISTINCT nombre_region From ref_regiones Inner Join usuarios ON ref_regiones.cod_region = usuarios.cod_region where usuarios.login =".$valor."";
                    
$resultado1=mysqli_query($conn$query1) or die (mysqli_error($conn));
                    while(
$rw=mysqli_fetch_array($resultado1)){
                        
$arr_regiones[$clave]=$rw['nombre_region'];
                    }
                }
                
var_dump($_POST['id_usuarios']);
                
var_dump($arr_login);
                
var_dump($arr_asig);
                for(
$i=0$i<$cant_repartir$i++){
                    
asort($arr_asig);
                    
$id=key($arr_asig);
                    
$region=$arr_regiones[$id];
                    
$user $arr_login[$id];
                    
$insertada=false;
                    
$resultado2=mysqli_query($conn$query2) or die (mysqli_error($conn));
                    while(
$row=mysqli_fetch_array($resultado2)){
                        if(
$row['region']==$region && $arr_asig[$id]<&& $insertada==false){
                                 
$sql="Update solicitudes Set encargado=".$user." where id_solicitud=".$row['id_solicitud']."";
                            
$update=mysqli_query($conn$sql) or die (mysqli_error($conn));
                            
$arr_asig[$id]++;
                            
$insertada=true;
                        }
                    }
                        }
                    }
                }
}


El problema es, que al seleccionar solo un usuario, y al seleccionar más tambien ocurre esto:

-El array que recoge de $_POST['id_usuarios'] contiene los elementos seleecionados, nngun problema ahi:

Cita:
Iniciado por var_dump($_POST['id_usuarios'])
array (size=1)
0 => string '7984030' (length=7)
-Pero los otros arrays, , se llenan con todos los datos del array de checkbox, seleccionados o no, ademas de agregar el elemento que recogio del $_POST.

Cita:
Iniciado por var_dump($arr_login)
array (size=11)
1 => string '10115841' (length=8)
2 => string '11333567' (length=8)
3 => string '12109705' (length=8)
4 => string '12215530' (length=8)
5 => string '12802027' (length=8)
6 => string '14154631' (length=8)
7 => string '15027745' (length=8)
8 => string '15870042' (length=8)
9 => string '7984030' (length=7)
10 => string '9886882' (length=7)
0 => string '7984030' (length=7)
Cita:
Iniciado por var_dump($arr_asig)
array (size=11)
1 => int 8
2 => int 7
3 => int 6
4 => int 6
5 => int 7
6 => int 6
7 => int 7
8 => int 7
9 => int 0
10 => int 0
0 => int 0
hasta ahora no me habia generado problemas porque al pasar lso elementos, el $arr_asig cambiaba a 0 los valores y trabajo con los que tienen menor valor, pero ahora probe pasando un solo elemento y teniendo otro con valor 0 y me genero todo este problema a la hora de asignar los problemas a cada usuario.

y ya probe usando "unset()" pensando que podrían ser datos residuales, pero sigue pasando el problema.

Si alguien sabe como solucionar esto, o tiene algun consejo, se lo agradecere
gracias por el tiempo

Etiquetas: checkbox, mysql, procesar, select, sql, usuarios
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 17:46.