Foros del Web » Programando para Internet » PHP »

Problema con checkbox dinamicos

Estas en el tema de Problema con checkbox dinamicos en el foro de PHP en Foros del Web. Buenas tardes miren este es el asunto que me tiene buelto loco. Resulta que tengo en mi base de datos una tabla de categorias en ...
  #1 (permalink)  
Antiguo 20/10/2011, 13:21
 
Fecha de Ingreso: diciembre-2009
Ubicación: Santiago, Chile
Mensajes: 143
Antigüedad: 14 años, 4 meses
Puntos: 2
Problema con checkbox dinamicos

Buenas tardes miren este es el asunto que me tiene buelto loco. Resulta que tengo en mi base de datos una tabla de categorias en la cual tendo 22 categorias almacenadas y con las categorias genero un grupo de checkbox 1 por categorias y al momento de registrarse un nuevo usuario selecciona las categorias de su interes. todo bien asta aca. las categorias seleccionadas por el usuario quedan almacenadas en el registro de la tabla usuarios;
usuarios grpCategorias nombre direccion telefono
224 2,3,4,5,6,7 XXXXXX XXXXXXX XXXXXX

el problema esta cuando el usuario ingresa a su cuenta para editar su perfil la idea es generar todos los checkbox y dejar checados los que selecciono el usuario con anterioridad.
con el sigiente codigo php genero los checkbox
Código PHP:
Ver original
  1. <?                         //aca se traen de la base los datos de la tabla usuario para checar el seleccionado
  2.              
  3.               $clUsuarios  = new Usuarios();
  4.              
  5.               $Res= $clUsuarios->UsuarioInfo($idCliente);
  6.              
  7.               if(count($Res) > 0)
  8.                
  9.                 {
  10.                
  11.                 foreach($Res as $cate)
  12.                
  13.                 {
  14.                                                        
  15.                
  16.                 $indicar = explode(",",$cate["grpCategorias"]);
  17.              
  18.               foreach($indicar as $campo)
  19.            
  20.             {
  21.        
  22.         // echo $campo;
  23.        
  24.         //aca se traen los datos de las categorias para generar los checkbox
  25.        
  26.         $clCategorias = new Categorias();
  27.        
  28.         $resCategorias = $clCategorias->ListarCategorias();
  29.                                              
  30.        
  31.          echo "<tr><td rowspan='".count($resCategorias)."' valign='top'> INTERESES</td>";
  32.          
  33.          if(count($resCategorias) > 0)
  34.            
  35.             {
  36.            
  37.             foreach($resCategorias as $cat)
  38.            
  39.             {
  40.                                                        
  41.            
  42.             $indi = $cat["idCategoria"];
  43.            
  44.             /*aca se generan los checkbox y dentro de cada checkbox va un   if ($campo == $indi) {echo "checked";} para dejar checado la seleccion del usuario*/
  45.            
  46.             echo"<td>
  47.            
  48.             <input id='checkbox' name='ArregloCategorias[]' type='checkbox' value='".$cat["idCategoria"]."'";?>
  49.            
  50.             <?  if ($campo == $indi) {echo "checked";}?><?php echo"></td><td>".$cat["nombre"]."</td></tr>";
  51.                                                        
  52.                                                        
  53.            
  54.            }
  55.            
  56.             }
  57.            
  58.             }
  59.            
  60.             }
  61.            
  62.             }
  63.  
  64. ?>
y dejo seleccionado el que el usuario checo con anterioridad pero el problema es que me duplica la cantidad de checkbox por la cantidad de opciones que selecciono el usuario es decir si el usuario selecciono dos checkbox con alteriosidad el codigo me genera dos veces la lista de checkbox y si selecciono las 22 categorias me genera 22 lista de checkbox.
espero aver esplicado bien el problema que tengo y que me puedan dar una idea de donde estoy fallando ya que esto me tiene buelto loco de antemano gracias
  #2 (permalink)  
Antiguo 20/10/2011, 13:33
Avatar de andresdzphp
Colaborador
 
Fecha de Ingreso: julio-2011
Ubicación: $this->Colombia;
Mensajes: 2.749
Antigüedad: 12 años, 9 meses
Puntos: 793
Respuesta: Problema con checkbox dinamicos

Tienes un montón de código innecesario, puedes hacer algo así:

Código PHP:
Ver original
  1. <?php
  2. $indicar = explode(",",$cate["grpCategorias"]);
  3.  
  4. foreach ($Res as $cate) {
  5.     if (in_array($cate, $indicar)) {
  6.         //Los imprimo seleccionados
  7.     } else {
  8.         //Los imprimo sin seleccionar
  9.     }
  10. }

Tomalo de ejemplo no es para copiar al pie de la letra.

Saludos.
__________________
Si sabemos como leer e interpretar el manual será mucho más fácil aprender PHP. En lugar de confiar en ejemplos o copiar y pegar - PHP
  #3 (permalink)  
Antiguo 20/10/2011, 13:57
 
Fecha de Ingreso: diciembre-2009
Ubicación: Santiago, Chile
Mensajes: 143
Antigüedad: 14 años, 4 meses
Puntos: 2
Respuesta: Problema con checkbox dinamicos

gracias andresdzphp voy a ver como anda con lo que me pasaste aver si lo puedo adaptar a lo que tengo y salir de esto cualquier cosa te aviso ok
  #4 (permalink)  
Antiguo 20/10/2011, 14:24
 
Fecha de Ingreso: diciembre-2009
Ubicación: Santiago, Chile
Mensajes: 143
Antigüedad: 14 años, 4 meses
Puntos: 2
Respuesta: Problema con checkbox dinamicos

Gracias otra ves andresdzphp: lo solucione me funciona perfecto acá esta el codigo como quedo por si a algen le sirve a futuro
Código PHP:
Ver original
  1. <?                        
  2.                                           $clUsuarios  = new Usuarios();
  3.                                             $Res= $clUsuarios->UsuarioInfo($idCliente);
  4.                                              
  5.                                                  
  6.                                                 if(count($Res) > 0)
  7.                                                 {
  8.                                                     foreach($Res as $cate)
  9.                                                     {
  10.                                                        
  11.                                                         $indicar = split(",",$cate["grpCategorias"]);
  12.                                                            
  13.                                                             //echo"".$indicar."";
  14.                                                        
  15.                                                        
  16.                                                      
  17.                                                     }
  18.                                                 }
  19.         // echo "<tr><td rowspan='4' valign='top'> INTERESES</td>";
  20.                                                
  21.                                                 $clCategorias = new Categorias();
  22.                                                 $resCategorias = $clCategorias->ListarCategorias();
  23.                                              
  24.                                                  echo "<tr><td rowspan='".count($resCategorias)."' valign='top'> INTERESES</td>";
  25.                                                 if(count($resCategorias) > 0)
  26.                                                 {
  27.                                                     foreach($resCategorias as $cat)
  28.                                                     {
  29.                                                        
  30.                                                         $indi = $cat["idCategoria"];
  31.                                                            
  32.                                                             echo"<td>
  33.                                 <input id='checkbox' name='ArregloCategorias[]' type='checkbox' value='".$cat["idCategoria"]."'";?>
  34.                                 <? if (in_array($indi, $indicar)) {echo "checked";}?><?php echo"></td><td>".$cat["nombre"]."</td></tr>";
  35.                                                        
  36.                                                        
  37.                                                      
  38.                                                     }
  39.                                                 }
  40.                                                ?>
  #5 (permalink)  
Antiguo 20/10/2011, 14:27
Avatar de andresdzphp
Colaborador
 
Fecha de Ingreso: julio-2011
Ubicación: $this->Colombia;
Mensajes: 2.749
Antigüedad: 12 años, 9 meses
Puntos: 793
Respuesta: Problema con checkbox dinamicos

Una recomendación no uses la función split

Cita:
Esta función ha sido declarada OBSOLETA desde PHP 5.3.0. Su uso está totalmente desaconsejado.
Saludos.
__________________
Si sabemos como leer e interpretar el manual será mucho más fácil aprender PHP. En lugar de confiar en ejemplos o copiar y pegar - PHP
  #6 (permalink)  
Antiguo 20/10/2011, 14:37
 
Fecha de Ingreso: diciembre-2009
Ubicación: Santiago, Chile
Mensajes: 143
Antigüedad: 14 años, 4 meses
Puntos: 2
Respuesta: Problema con checkbox dinamicos

Cita:
Iniciado por andresdzphp Ver Mensaje
Una recomendación no uses la función split



Saludos.
Ok gracias la cambie por explode

Etiquetas: checkbox, dinamicos, registro, tabla, 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 12:20.