Foros del Web » Programando para Internet » PHP »

¿como cargar checkbox dinámico?

Estas en el tema de ¿como cargar checkbox dinámico? en el foro de PHP en Foros del Web. Hola compañeros... Hoy tengo un problema que antes de acudir a vosotros he intentado solucionar durante 2 días... y nada! Tengo un formulario de registro ...
  #1 (permalink)  
Antiguo 31/08/2011, 10:45
sidneyendis
Invitado
 
Mensajes: n/a
Puntos:
Pregunta ¿como cargar checkbox dinámico?

Hola compañeros...

Hoy tengo un problema que antes de acudir a vosotros he intentado solucionar durante 2 días... y nada!

Tengo un formulario de registro donde el problema lo tengo con los "checkbox", nunca he trabajado con ellos y mi idea era que cuando estuviese selecionado, en el campo de la tabla de la BD (base de datos) marcase "1", y cuando no estuviese seleccionado, marcase "0".

Los "checkbox" los obtengo de forma dinámica de la siguiente forma:
Código PHP:
<?php
                    $tablainstalaciones 
mysql_query("SELECT * FROM instalaciones ORDER BY nombreinstalacion ASC"); // Seleccionamos las actividades de la tabla actividades
                     
while ($registroinstalacion mysql_fetch_array($tablainstalaciones)) { // Abrimos zona de repetición 
                    
?>
                    <div style="width:50%; float:left; " >
                        <input name="instalacion_empresa" class="element checkbox" type="checkbox"  value="<?php echo $registroinstalacion['idinstalacion']; ?>" />
                          <label class="choice" for="element_5_1"><?php echo $registroinstalacion ['nombreinstalacion']; ?></label> 
                    </div>
                   <?php
                    
// termina la zona de repeticion
                    
mysql_free_result($tablainstalaciones); // se libera la memoria usada por la tabla
                   
?>
Con ese código me aparecen todos los "checkbox" (aprox. 20 registros) que se encuentran en la tabla "instalaciones". El problema está al hacer el "INSERT INTO", realmente no se si se carga de este modo pero todos los demás datos los cargo así.
Mi intención es insertar el "1" (seleccionado) o el "0" (no seleccionado) en otra tabla que está relacionada con una tabla principal, es decir, cojo los nombres de las instalaciones desde la tabla "instalaciones", pero quiero cargarlos en la tabla "profesionales_instalaciones" que esta a su vez, está relacionada con una tabla principal denominada "profesionales"

Pues si no os he liado mucho esa es mi cuestión, realmente no se por donde empezar y no he encontrado ningún tutorial que lo explique.

Os agradecería mucho vuestra ayuda. Un gran saludo y gracias anticipadas!
  #2 (permalink)  
Antiguo 31/08/2011, 10:51
Avatar de h2swider  
Fecha de Ingreso: julio-2007
Ubicación: Ciudad de Buenos Aires
Mensajes: 932
Antigüedad: 17 años, 4 meses
Puntos: 194
Respuesta: ¿como cargar checkbox dinámico?

Intenta esto:

Código PHP:
<input name="instalacion_empresa" class="element checkbox" type="checkbox"  value="<?php echo $registroinstalacion['idinstalacion']; ?>
<?php echo (isset($registroinstalacion['idinstalacion']) && $registroinstalacion['idinstalacion'])?' checked="checked"':null?>/>
__________________
Codifica siempre como si la persona que finalmente mantedra tu código sea un psicópata violento que sabe donde vives
  #3 (permalink)  
Antiguo 31/08/2011, 11:04
sidneyendis
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: ¿como cargar checkbox dinámico?

Hola "h2swider", gracias por tu ayuda!!

mmm... ese código sería para indicar que esta seleccionado con "checked" ¿verdad?

mi duda es.... para subirlo a la BD... ¿es mediante INSERT INTO? o hay algún otro metodo?

un saludo!
  #4 (permalink)  
Antiguo 31/08/2011, 11:13
sidneyendis
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: ¿como cargar checkbox dinámico?

Lo comento porque por ejemplo para subir cualquier otro dato "estatico" lo hago d ela siguiente forma
Código PHP:
$state false;
         if (
$_POST['action'] == "add"
         {   
            
$que "INSERT INTO tabla (campo) ";
               
$que.= "VALUES ('".$_POST['name_del_input']."') ";
            
$res mysql_query($que$conexion) or die(mysql_error());
            
$state true;
         } 
Pero de forma dinámica... no se como hacerlo, es decir, si hay 20 registros.... ¿como lo indico en el código?

Siento mi torpeza...

Un saludo
  #5 (permalink)  
Antiguo 31/08/2011, 11:18
Avatar de h2swider  
Fecha de Ingreso: julio-2007
Ubicación: Ciudad de Buenos Aires
Mensajes: 932
Antigüedad: 17 años, 4 meses
Puntos: 194
Respuesta: ¿como cargar checkbox dinámico?

el checkbox tiene un comportamiento algo diferente al resto de los inpux, de estar chequeado manda su "value", de no estar chequeado, no manda nada

Entonces para poder insertar el valor podrías hacer algo como esto, estarías insertando todos los seleccionados

Código PHP:
foreach($_POST['instalacion_empresa'] as $key => $value){
insert into..

También seria innecesario cambiar el name, agregando corchetes, así indicas que estas pasando un array
Código PHP:
name="instalacion_empresa[]" 
Pero no puedes saber los que No fueron seleccionados, ya que esos POST no se envían.

Saludos!
__________________
Codifica siempre como si la persona que finalmente mantedra tu código sea un psicópata violento que sabe donde vives

Última edición por h2swider; 31/08/2011 a las 11:36
  #6 (permalink)  
Antiguo 31/08/2011, 18:47
sidneyendis
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: ¿como cargar checkbox dinámico?

Garcias "h2swider", me funciono perfectamente!

A ver si tu me puedes ayudar con una última cosita,

Como he dicho antes tengo 2 tablas relacionadas;
  1. profesionales
  2. profesionales_instalaciones

El campo en relación es el siguiente;
profesionales.idempresa con profesionales_instalaciones.id_empresa_ins

Mi duda es... ¿al ingresar los datos en profesionales_instalaciones, como indico en el campo "id_empresa_ins" que tiene que ser igualito a el campo "idempresa" de la tabla profesionales y encima de cierto registro?

Gracias nuevamente. Un saludo!! Te debo una grande jeje
  #7 (permalink)  
Antiguo 31/08/2011, 19:22
Avatar de hasdpk  
Fecha de Ingreso: agosto-2011
Ubicación: $spain->city( 'Arucas' );
Mensajes: 1.800
Antigüedad: 13 años, 2 meses
Puntos: 297
Respuesta: ¿como cargar checkbox dinámico?

Si realmente las tienes relacionadas, la base de datos no te dejará meter datos que no existan en la otra tabla.
  #8 (permalink)  
Antiguo 01/09/2011, 02:11
sidneyendis
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: ¿como cargar checkbox dinámico?

Hola "hasdpk", gracias por tu participación,

Exactamente, solo me deja meter datos del campo relacionado de la tabla principal, es decir, en ese campo tengo por ejemplo, los ID de las empresas, y supongamos que tengo los siguientes ID; 1,3,4,9... Entonces en el campo que tengo relacionado de la tabla secundaria solo me deja meter; 1,3,4 o 9.

A lo que me refiero, y que seguramente no me he explicado bien, es como lo hago para que lo inserte automáticamente, yo cuando estoy en "phpmyadmin" si inserto un nuevo registro en la tabla "secundaria", puedo seleccionar manualmente uno de los ID arriba especificados, pero mi intención es que sea automático.

Un saludo
  #9 (permalink)  
Antiguo 01/09/2011, 02:21
Avatar de vgonga1986  
Fecha de Ingreso: marzo-2008
Ubicación: País de Pandereta
Mensajes: 1.021
Antigüedad: 16 años, 8 meses
Puntos: 253
Respuesta: ¿como cargar checkbox dinámico?

Automático para qué id? No puedes hacerlo automático, porque tiene varios valores. Tendrás que sacar el valor de algún lado para luego poder insertarlo, digo yo.

Si tienes hecho un select a la tabla profesionales y quieres utilizar el mismo id que tienes en idempresa, simplemente añádelo en el insert into:
Código MySQL:
Ver original
  1. INSERT INTO profesionales_instalaciones (id_empresa_ins, mas_campos) VALUES ($id, $mas_valores)

Es decir, una clave externa se debe tratar exactamente igual que cualquier otro valor, sólo tienes que tener en cuenta que las restricciones de la base de datos te van a limitar los valores que pueda tomar.

Un saludo.
__________________
¿Alguna pregunta, duda, acotación, nota, cuestión, reparo, comentario, demanda, crítica, interpretación, objeción, interrogante, discrepancia, observación, réplica, disquisición, apostilla o exégesis?
  #10 (permalink)  
Antiguo 01/09/2011, 04:38
sidneyendis
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: ¿como cargar checkbox dinámico?

Hola "vgonga1986"!! Otra vez ayundandome... cuando acabe esta web te incluiré en los creditos... jejeje

Pues no me imaginaba que fuese tan sencillo.... lo he probado con un "id" ya creado, es decir,
Código PHP:
INSERT INTO profesionales_instalaciones (id_empresa_insmas_camposVALUES (46$mas_valores
y ha funcionado correctamente... pero lo que no consigo hacer e slo que comentabas al principio... es decir, recoger el id que aun no existe hasta que no finalize el registro (ya que el campo "idgimnasio" es auto increment y hasta que no se inserta el registro no introduce ningún dato en el campo), por lo tanto... como recojo el "$id" que tu indicas si aun no existe el dato en el campo?

Un saludo muy grande!!
  #11 (permalink)  
Antiguo 01/09/2011, 04:44
Avatar de vgonga1986  
Fecha de Ingreso: marzo-2008
Ubicación: País de Pandereta
Mensajes: 1.021
Antigüedad: 16 años, 8 meses
Puntos: 253
Respuesta: ¿como cargar checkbox dinámico?

Vamos a ver, si tienes una tabla A con un id y una tabla B en la que el id de A es una clave foránea. Por narices, tienes que hacer el insert antes en A que en B. La lógica de ejecución es la siguiente:
1) Insertas en A.
2) Consultas en A id de la inserción. También lo puedes hacer con mysql_insert_id, que te recupera el id del último insert.
3) Utilizas dicho id para la inserción de B, como clave foránea.

Si los insert se hacen en zonas diferentes, estás obligado a hacer un select en el paso 2, si lo haces en el mismo script, puedes usar la función que te he pasado.

Un saludo.

PD: Si estás insertando antes en B que en A, repasa tu lógica, porque está mal. No puedes insertar primero en una tabla con una clave foránea, sin insertar en la que referencia primero.
__________________
¿Alguna pregunta, duda, acotación, nota, cuestión, reparo, comentario, demanda, crítica, interpretación, objeción, interrogante, discrepancia, observación, réplica, disquisición, apostilla o exégesis?

Última edición por vgonga1986; 01/09/2011 a las 04:46 Razón: Añadir PD
  #12 (permalink)  
Antiguo 01/09/2011, 05:27
sidneyendis
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: ¿como cargar checkbox dinámico?

Uff!! me lo has dado mascado mascado.... jeje

Genial la solución!

Dejo una estructura parecida al código que he utilizado por si a alguien le sirve de ayuda:
Código PHP:
$sql="INSERT INTO profesionales (campo1,campo2...) VALUES (valor1,valor2...)";
$res mysql_query($sql$conexion) or die(mysql_error());

$id=mysql_insert_id(); //recogemos el "id" del último INSERT generado, en este caso ha sido el campo que comentábamos "idgimnasio" que es un autoincrement. ¡¡IMPORTANTE que este antes del siguiente "INSERT" ya que recoge el valor del último INSERT!! 

$ins="INSERT INTO profesionales_instalaciones (id_empresa_ins, mas_campos) VALUES ($id, $mas_valores)";
$res_ins mysql_query($ins$conexion) or die(mysql_error()); 
también podéis comprobar que funciona haciendo lo siguiente:
Código PHP:
$sql="INSERT INTO profesionales (campo1,campo2...) VALUES (valor1,valor2...)";
$res mysql_query($sql$conexion) or die(mysql_error());

echo 
mysql_insert_id(); //esto os mostrará el id que recoge 
Nuevamente gracias a todos por ayudarme! en especial a "vgonga1986" por haberme ayudado infinitas veces ejeje prometo no tropezar otra vez en el mismo error jejeje Un saludo muy grande

Etiquetas: checkbox, input, mysql
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 13:07.