Foros del Web » Programando para Internet » PHP »

[SOLUCIONADO] Problema con checkbox e ingreso de varias filas en la bd

Estas en el tema de Problema con checkbox e ingreso de varias filas en la bd en el foro de PHP en Foros del Web. Hola, Estoy desarrollando una app, tengo una tabla dinamica que carga cada fila al hacer click en un boton. Cada fila tiene unos campos input. ...
  #1 (permalink)  
Antiguo 30/07/2015, 13:01
Avatar de wolfmoon  
Fecha de Ingreso: octubre-2007
Mensajes: 189
Antigüedad: 16 años, 6 meses
Puntos: 2
Problema con checkbox e ingreso de varias filas en la bd

Hola,

Estoy desarrollando una app, tengo una tabla dinamica que carga cada fila al hacer click en un boton. Cada fila tiene unos campos input. Uno de ellos es un checkbox de verificación, no obligatorio. Simplemente verifica si el usuario es administrador o no.

Los campos checkbox: <input name="variable[]" />

En el controlador recupero los datos:

Código PHP:
Ver original
  1. $variable1 = $this->input->post('variable1');
  2.  $variable2 = $this->input->post('variable2');
  3.  $variable3 = $this->input->post('variable3');
  4.  $variable4 = $this->input->post('variable4');
  5.  
  6. //Luego:
  7.  
  8. foreach($variable2 as $key => $n ) {
  9.  
  10. $arrData[] = array(
  11.              'variable1'      =>      $variable1[$key],
  12.              'variable2'      =>      $variable2[$key],
  13.              'variable3'      =>      $variable3[$key],
  14.              'variable4'      =>      $variable4[$key],
  15.              // aqui recupero los valores de los checkbox
  16.              'variable'        =>      isset($this->input->post('variable')[$key]) ? $this->input->post('variable')[$key] : "0",
  17.            );
  18. }

El problema que tengo es que me recupera mal los valores de los checkbox. Por ejemplo, para dos registros:

- Si no se selecciona ningun checkbox en los registros, obtengo los valores correctamente.
- Si selecciono en ambos registros los checkbox tambien obtengo los valores correctamente.
- Pero si selecciono el segundo registro y el primero lo dejo vacio, obtengo el valor checkeado en el primero registro, y el segundo registro me marca vacio.

No se si me he explicado bien....

Lo pongo en php porque aunque estoy trabajando con codeigniter me parece que es de PHP en general. Gracias.

Última edición por wolfmoon; 30/07/2015 a las 13:07
  #2 (permalink)  
Antiguo 30/07/2015, 13:21
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años
Puntos: 2534
Respuesta: Problema con checkbox e ingreso de varias filas en la bd

El problema es que los valores se agregan dinámicamente, y dada la notación de array[] no es posible determinar un orden.

Para eso es recomendable usar un índice en común entre todos los campos relacionados:
Código HTML:
Ver original
  1. <input name="foo[1]">

Como puedes ver ahí estoy usando el índice 1, y si existen más elementos compartiendo el mismo índice todo tendrá coherencia.

En caso de omitir algún valor sencillamente se omitirá en el array y los demás índices seguirán en orden.

Consulta el siguiente manual: http://www.php.net/variables.external
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #3 (permalink)  
Antiguo 31/07/2015, 06:24
Avatar de wolfmoon  
Fecha de Ingreso: octubre-2007
Mensajes: 189
Antigüedad: 16 años, 6 meses
Puntos: 2
Respuesta: Problema con checkbox e ingreso de varias filas en la bd

Hola pateketrueke, gracias por la respuesta.

Tuve que asignar el indice que trae cada item del array al input checkbox. Quedandome:

variable[1], variable[2], etc

De esta forma funciona correctamente.

Lo que no entiendo muy bien es porque al resto de los input(text, email, etc) no les hace falta añadirle el indice. Y en este caso si. Igualmente me ocurre con un input.hidden. El cual me recupera un id, y también he tenido que añadirles los indices.
  #4 (permalink)  
Antiguo 31/07/2015, 07:18
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años
Puntos: 2534
Respuesta: Problema con checkbox e ingreso de varias filas en la bd

Cita:
Lo que no entiendo muy bien es porque al resto de los input(text, email, etc) no les hace falta añadirle el indice.
Eso lo aprendes leyendo una referencia de HTML, pues es un comportamiento propio del navegador.

Los valores "booleanos" como los de un checkbox o radio jamás se toman en cuenta si no están seleccionados.

Entonces, al sólo usar [] sin índices relacionados quedan huecos y al recorrer todos los campos se descuadra la información.
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #5 (permalink)  
Antiguo 31/07/2015, 09:54
Avatar de wolfmoon  
Fecha de Ingreso: octubre-2007
Mensajes: 189
Antigüedad: 16 años, 6 meses
Puntos: 2
Respuesta: Problema con checkbox e ingreso de varias filas en la bd

Cita:
Iniciado por pateketrueke Ver Mensaje
Eso lo aprendes leyendo una referencia de HTML, pues es un comportamiento propio del navegador.

Los valores "booleanos" como los de un checkbox o radio jamás se toman en cuenta si no están seleccionados.

Entonces, al sólo usar [] sin índices relacionados quedan huecos y al recorrer todos los campos se descuadra la información.
Perfecto!!! Me queda claro. Gracias.

Etiquetas: bd, checkbox, filas, ingreso, registro, tabla, variable
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 19:23.