Foros del Web » Programando para Internet » PHP »

[SOLUCIONADO] PHP OO Activar checkbox de acuerdo a resultado de base de datos

Estas en el tema de Activar checkbox de acuerdo a resultado de base de datos en el foro de PHP en Foros del Web. Hola, tengo una duda al cómo prender/apagar una serie de checkboxes que tengo. Al mandar los datos para guardar en la tabla utilizo esta instrucción: ...
  #1 (permalink)  
Antiguo 30/05/2014, 16:55
Avatar de Landa11  
Fecha de Ingreso: febrero-2014
Ubicación: En algún lugar de mi oficina
Mensajes: 148
Antigüedad: 10 años, 2 meses
Puntos: 1
Exclamación Activar checkbox de acuerdo a resultado de base de datos

Hola, tengo una duda al cómo prender/apagar una serie de checkboxes que tengo.

Al mandar los datos para guardar en la tabla utilizo esta instrucción:

Código HTML:
Ver original
  1. <input type='hidden' name='panel' value='0'/>
  2. <input type='checkbox' name='panel' value='1'/>

y si se selecciona se agrega el valor 1, de lo contrario se agrega el valor 0. Pero lo que quiero realizar es que al mandar a llamar a lo datos desde la BD estos checkboxes se prendan o apaguen según su valor.

He buscado alternativas en PHP, Javascript pero no he podido implementarlo pues es la primera vez que manejo este tipo de opciones.

Código PHP:
Ver original
  1. if ($resultado !== false) {
  2.     $datos = mysql_fetch_assoc( $resultado );
  3. }
  4.  
  5. //Suponiendo que el campo que representa el checkbox es un entero entre 1 y 0
  6. if ($datos['datoActivo'] === '1') {
  7.    $checked = 'checked="checked" ';
  8. } else {
  9.     $checked = ' ';
  10. }

Código Javascript:
Ver original
  1. var checkbox = document.getElementsByTagName("input");
  2. for (var i in checkbox)
  3. checkbox[i].value = checkbox[i].checked ? 1 : 0;

Espero me puedan auxiliar con sus conocimientos y sacarme de este pequeño bache en el que ando y posteriormente posteo mi código para que lo vean.

Muchas Gracias!!!!
__________________
Ayudando a la gente con nuestros códigos para poder tener el conocimiento adecuado y ser libres!
  #2 (permalink)  
Antiguo 30/05/2014, 17:08
Avatar de Alexis88
Philosopher
 
Fecha de Ingreso: noviembre-2011
Ubicación: Tacna, Perú
Mensajes: 5.552
Antigüedad: 12 años, 5 meses
Puntos: 977
Respuesta: Activar checkbox de acuerdo a resultado de base de datos

Esta parte:

Código PHP:
Ver original
  1. if ($datos['datoActivo'] === '1') {
  2.    $checked = 'checked="checked" ';
  3. } else {
  4.     $checked = ' ';
  5. }

La haría así:

Código PHP:
Ver original
  1. $checked = $datos['datoActivo'] == '1' ? 'checked' : '';

Y luego imprimo el valor de $checked en el checkbox:

Código HTML:
Ver original
  1. <input type = "checkbox" name = "panel" value = "1" <?=$checked?> />

Saludos
__________________
«Juro por mi vida y mi amor por ella, que jamás viviré para el provecho de otro hombre, ni le pediré a otro hombre que viva para el mío».

Ayn Rand
  #3 (permalink)  
Antiguo 31/05/2014, 09:30
Avatar de Landa11  
Fecha de Ingreso: febrero-2014
Ubicación: En algún lugar de mi oficina
Mensajes: 148
Antigüedad: 10 años, 2 meses
Puntos: 1
Respuesta: Activar checkbox de acuerdo a resultado de base de datos

Hola amigo Alexis88 gracias por la ayuda en ese último post, ya le hice unas modificaciones y sirve de maravilla pues ya cuando tengo mi dato "1" en la base de datos , mi checkbox se prende...

Pero ahora el problema es que cuando mando un dato vacío me manda un error en el guardado:

Notice: Undefined index: menu_princ

Y sé que no tengo un valor "0" para agregar por lo cual me manda en el error.

Este es el código y le agregué el dato de value para ver si le podía dar un valor pero no lo acepta:

Código PHP:
Ver original
  1. //Validar menu_princ
  2. $consulta_menu_princ = "SELECT menu_princ FROM datos WHERE user = '".$_POST['user']."'";
  3. $variable_menu_princ = mysql_query($consulta_menu_princ);
  4.  
  5. if($variable_menu_princ !== false)
  6. {
  7.     $datos = mysql_fetch_assoc($variable_menu_princ);
  8. }
  9.  
  10. if ($datos ['menu_princ'] === '1')
  11. {
  12.    $checked = 'checked="checked" ';
  13. }
  14. else
  15. {
  16.     $checked = 'value="0"';
  17. }
  18. $checked = $datos['menu_princ'] == '1' ? 'checked' : '';

Podrías ayudarme a resolver ese dato? Te lo agradecería mucho!!!!!
__________________
Ayudando a la gente con nuestros códigos para poder tener el conocimiento adecuado y ser libres!
  #4 (permalink)  
Antiguo 31/05/2014, 11:49
Avatar de Alexis88
Philosopher
 
Fecha de Ingreso: noviembre-2011
Ubicación: Tacna, Perú
Mensajes: 5.552
Antigüedad: 12 años, 5 meses
Puntos: 977
Respuesta: Activar checkbox de acuerdo a resultado de base de datos

¿Te refieres a cuando lo guardas? Entonces muéstranos el código que utilizas para guardar los datos.
__________________
«Juro por mi vida y mi amor por ella, que jamás viviré para el provecho de otro hombre, ni le pediré a otro hombre que viva para el mío».

Ayn Rand
  #5 (permalink)  
Antiguo 31/05/2014, 11:52
Avatar de Landa11  
Fecha de Ingreso: febrero-2014
Ubicación: En algún lugar de mi oficina
Mensajes: 148
Antigüedad: 10 años, 2 meses
Puntos: 1
Respuesta: Activar checkbox de acuerdo a resultado de base de datos

Ya lo solucioné amigo, le agregué un hidden para que los valores que no se seleccionaban se mandaran con el dato "0".

Código HTML:
Ver original
  1. <td align='center'>
  2. <input type='hidden' name='cam1' value='0'/>
  3. <input type='checkbox' name='cam1' value='1' ".$checked12."/>
  4. </td>

Muchas gracias por la ayuda y creo que daremos el tema como solucionado

Cuento con tu ayuda para próximas dudas y dejo el código ya con mis modificaciones

Código PHP:
Ver original
  1. $consulta_cam1 = "SELECT cam1 FROM datos WHERE user = '".$_POST['user']."'";
  2. $variable_cam1 = mysql_query($consulta_cam1);
  3.  
  4. if($variable_cam1 !== false)
  5. {
  6.     $cambio12 = mysql_fetch_assoc($variable_cam1);
  7. }
  8.  
  9. if($cambio12 ['cam1'] === '1')
  10. {
  11.     $checked12 = 'checked="checked"';
  12. }
  13. else
  14. {
  15.     $checked12 = '';
  16. }
  17. $checked12 = $cambio12['cam1'] == '1' ? 'checked' : '';
__________________
Ayudando a la gente con nuestros códigos para poder tener el conocimiento adecuado y ser libres!
  #6 (permalink)  
Antiguo 31/05/2014, 12:08
 
Fecha de Ingreso: mayo-2014
Mensajes: 13
Antigüedad: 9 años, 11 meses
Puntos: 1
Respuesta: Activar checkbox de acuerdo a resultado de base de datos

bueno yo lo haria de la siguiente manera

Código PHP:
Ver original
  1. if($datos ['menu_princ'] == '1'):
Código HTML:
Ver original
  1. <input type='checkbox' name='cam1' value='1' checked />
Código PHP:
Ver original
  1. endif;

o utilizas un switch =)
  #7 (permalink)  
Antiguo 31/05/2014, 12:09
Avatar de Alexis88
Philosopher
 
Fecha de Ingreso: noviembre-2011
Ubicación: Tacna, Perú
Mensajes: 5.552
Antigüedad: 12 años, 5 meses
Puntos: 977
Respuesta: Activar checkbox de acuerdo a resultado de base de datos

¡Enhorabuena! Aunque no era necesario usar un campo oculto para asignar otro valor, también lo podrías hacer en PHP y en una sola línea.

Código PHP:
Ver original
  1. $dato = isset($_POST['cam1']) && !is_null($_POST['cam1']) ? $_POST['cam1'] : 0;

Saludos
__________________
«Juro por mi vida y mi amor por ella, que jamás viviré para el provecho de otro hombre, ni le pediré a otro hombre que viva para el mío».

Ayn Rand
  #8 (permalink)  
Antiguo 31/05/2014, 12:11
Avatar de Landa11  
Fecha de Ingreso: febrero-2014
Ubicación: En algún lugar de mi oficina
Mensajes: 148
Antigüedad: 10 años, 2 meses
Puntos: 1
Respuesta: Activar checkbox de acuerdo a resultado de base de datos

Voy a ver que tal queda y creo que suena mejor que el campo oculto!!!!!

Gracias por ese dato.
__________________
Ayudando a la gente con nuestros códigos para poder tener el conocimiento adecuado y ser libres!

Etiquetas: checkboxes, php+base+de+datos
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 05:50.