Foros del Web » Programando para Internet » PHP »

Ayuda con bucle para insertar los checkbox seleccionados

Estas en el tema de Ayuda con bucle para insertar los checkbox seleccionados en el foro de PHP en Foros del Web. Hola a todos, tengo el siguiente problema ( o duda). Resulta que yo tengo un listado en este caso de caballos ( pero voy a ...
  #1 (permalink)  
Antiguo 03/10/2009, 08:44
 
Fecha de Ingreso: abril-2009
Mensajes: 409
Antigüedad: 15 años
Puntos: 3
Ayuda con bucle para insertar los checkbox seleccionados

Hola a todos, tengo el siguiente problema ( o duda).
Resulta que yo tengo un listado en este caso de caballos ( pero voy a suponer que son mensajes para que se entienda mejor lo que necesito)
yo tendria un usuario en la cual al entrar en sus mensajes privados, le da el listado de los mismos ( sacados de mysql), lo que yo estoy necesitando , seria como esta en este foro, que uno necesite borrar por ejemplo 2 mensajes de los 10 que tiene, se selecciona con un checkbox(creo que se llama asi) y los que estan seleccionados haria un query en la cual se borrarian de la bd.

Yo necesito algo asi pero para los caballos pero trabaja de la misma manera.
mi pregunta es, como hago para hacer un bucle que solo los que estan tildados se borren de la base da datos o inserten (ya que necesito esto pero seria lo mismo).

Espero que se haya entendido y puedan ayudarme.

Saludos.
  #2 (permalink)  
Antiguo 03/10/2009, 11:31
Avatar de spider_boy  
Fecha de Ingreso: diciembre-2003
Ubicación: Chile
Mensajes: 1.855
Antigüedad: 20 años, 4 meses
Puntos: 89
Respuesta: Ayuda con bucle para insertar los checkbox seleccionados

Primero tendrías que hacer en el formulario lo siguiente

Código html:
Ver original
  1. <form ...>
  2.  
  3. <input type="checkbox" name="caballo[]" value="caballo1" /> Caballo 1
  4. <input type="checkbox" name="caballo[]" value="caballo2" /> Caballo 2
  5. <input type="checkbox" name="caballo[]" value="caballo3" /> Caballo 3
  6. etc...
  7.  
  8. </form>

Así estás formando un arreglo y php lo cogerá como tal.

Luego en php deberías guardar en otro arreglo, los datos de los checkbox que fueron marcados. Esto lo haces recorriendo el arreglo de caballos del formulario.

Ej:

Código php:
Ver original
  1. $caballos = array();
  2.  
  3. foreach($_POST['caballo'] as $cab)
  4. {
  5.    // Nos aseguramos de que haya sido seleccionado
  6.    if(!empty($cab)) {
  7.         $caballos[] = $cab;
  8.    }
  9. }

Allì ya tendríamos guardado los caballos que queremos borrar

Luego, haciendo uso de la cláusula WHERE IN de mysql, y también implode() de php, formamos una sola cadena para eliminarla de la BD.

Código php:
Ver original
  1. // Formamos una sola cadena
  2. // Ej : caballo1,caballo2,caballo3,etc...
  3. $caballos_str = implode(",", $caballos);
  4.  
  5. // QUERY PARA ELIMINAR
  6. mysql_query("DELETE FROM tabla_caballos WHERE id_caballo IN (".$caballos_str.")";

Eso debería hacer lo que quieres.

Nos vemos.

PD : No me importa si a algunos les molesta que haga todo el trabajo :)
__________________
Nunca te olvidaré mi negra hermosa. Te extraño demasiado.
  #3 (permalink)  
Antiguo 03/10/2009, 11:39
Avatar de mortiprogramador
Colaborador
 
Fecha de Ingreso: septiembre-2009
Ubicación: mortuoria
Mensajes: 3.805
Antigüedad: 14 años, 7 meses
Puntos: 214
Respuesta: Ayuda con bucle para insertar los checkbox seleccionados

Hola
Revisate esto a ver si es algo de lo que buscas
Saludos
  #4 (permalink)  
Antiguo 03/10/2009, 16:34
 
Fecha de Ingreso: abril-2009
Mensajes: 409
Antigüedad: 15 años
Puntos: 3
Respuesta: Ayuda con bucle para insertar los checkbox seleccionados

Cita:
Iniciado por spider_boy Ver Mensaje
Primero tendrías que hacer en el formulario lo siguiente

Código html:
Ver original
  1. <form ...>
  2.  
  3. <input type="checkbox" name="caballo[]" value="caballo1" /> Caballo 1
  4. <input type="checkbox" name="caballo[]" value="caballo2" /> Caballo 2
  5. <input type="checkbox" name="caballo[]" value="caballo3" /> Caballo 3
  6. etc...
  7.  
  8. </form>

Así estás formando un arreglo y php lo cogerá como tal.

Luego en php deberías guardar en otro arreglo, los datos de los checkbox que fueron marcados. Esto lo haces recorriendo el arreglo de caballos del formulario.

Ej:

Código php:
Ver original
  1. $caballos = array();
  2.  
  3. foreach($_POST['caballo'] as $cab)
  4. {
  5.    // Nos aseguramos de que haya sido seleccionado
  6.    if(!empty($cab)) {
  7.         $caballos[] = $cab;
  8.    }
  9. }

Allì ya tendríamos guardado los caballos que queremos borrar

Luego, haciendo uso de la cláusula WHERE IN de mysql, y también implode() de php, formamos una sola cadena para eliminarla de la BD.

Código php:
Ver original
  1. // Formamos una sola cadena
  2. // Ej : caballo1,caballo2,caballo3,etc...
  3. $caballos_str = implode(",", $caballos);
  4.  
  5. // QUERY PARA ELIMINAR
  6. mysql_query("DELETE FROM tabla_caballos WHERE id_caballo IN (".$caballos_str.")";

Eso debería hacer lo que quieres.

Nos vemos.

PD : No me importa si a algunos les molesta que haga todo el trabajo :)
a ver si me podes aclarar algunas cosas, en el value del checkbox iria el id que quiero borrar o insertar?
si es asi yo tengo un problema con eso, yo el id uso compuesto osea por 2 columnas que se llaman tomo y folio, osea el tomo y folio es unico y es el id de la tabla, yo necesito insertar el tomo y folio en una tabla de los caballos que seleccione el usuario.
como seria en ese caso para poder hacerlo con este sistema que pones en el foro?

Saludos y muchisimas gracias de antemano.
  #5 (permalink)  
Antiguo 03/10/2009, 19:56
Avatar de mortiprogramador
Colaborador
 
Fecha de Ingreso: septiembre-2009
Ubicación: mortuoria
Mensajes: 3.805
Antigüedad: 14 años, 7 meses
Puntos: 214
Respuesta: Ayuda con bucle para insertar los checkbox seleccionados

Hola
Bueno, mientras spider revisa yo meto cucharada

- En cuanto a lo que necesitas en el checkbox es el id
Preguntas
1. cuales son los ids de la tabla de los caballos?
idtomo idfolio idcaballo?
o solo idtomo idfolio?
2. esos valores de los ids corresponden a otras tablas llamadas folio y tomo?

porque lo que podrias hacer mientras nos explicas mejor la estructura
que manejas es una función javascript que asigne cada vez que seleccionas un caballo un elemento del formulario tipo hidden
y que asignaria? un array con los id tanto de folio como de tomo para cada caballo (asumiendo que son valores distintos cada vez), si los valores son iguales entonces seria mejor que los manejaras directamente en el insert o el delete
Bueno, creo que se te podría colaborar más si planteas con más datos
tu labor
saludos
  #6 (permalink)  
Antiguo 04/10/2009, 17:59
 
Fecha de Ingreso: abril-2009
Mensajes: 409
Antigüedad: 15 años
Puntos: 3
Respuesta: Ayuda con bucle para insertar los checkbox seleccionados

el tema es asi . el usuario al hacer click en un boton da como resultado una tabla con la lista de caballos .
en la cual aparece el nombre, tomo,folio,madre,padre.
hasta ahi barbaro, lo que yo quiero agregarle y necesito , es que a esa tabla se le agrege un checkbox por caballo de la lista( que es dinamica, osea varia segun el propietario de los caballos). para que el usuario inserte en otra tabla los tomos y folios de los caballos que selecciona con los checkbox que agregaria.
la tabla esta armada asi
tomo,folio,nombre,fechanacim,madre,padre,etc el tomo y folio serian el ID compuesto , osea el id del caballo peres seria tomo 1000 folio 100 por ej para que se entienda.
haber si puedo aclarar un poco mas.
el listado inicial donde estarian los checkbox sale de un query en php la cual lista todos los caballos de un propietario , de esa lista es la que el usuario tildaria los que necesita insertary lo que tendria que insertar es el tomo y folio solamente de cada caballos tildado.

espero que se haya entendido un poco mas.

gracias,
  #7 (permalink)  
Antiguo 04/10/2009, 20:39
Avatar de mortiprogramador
Colaborador
 
Fecha de Ingreso: septiembre-2009
Ubicación: mortuoria
Mensajes: 3.805
Antigüedad: 14 años, 7 meses
Puntos: 214
Respuesta: Ayuda con bucle para insertar los checkbox seleccionados

Hola
Bueno, entonces yo que haria personalmente?
A cada checkbox en el value le agregaria ambos id (tomo y folio) separados por algún simbolo (por ej -, asi entonces 1000-100) y en el php que recibe los datos,
como vas a recorrer el array de los checkbox, entonces en cada uno haria un split para cortar el value por el simbolo -, y ahi ya tendria en 2 variables tanto el tomo y el folio y luego esas las uso para la inserción
Prueba con eso a ver si te funciona, y nos cuentas
saludos
  #8 (permalink)  
Antiguo 04/10/2009, 21:17
 
Fecha de Ingreso: abril-2009
Mensajes: 409
Antigüedad: 15 años
Puntos: 3
Respuesta: Ayuda con bucle para insertar los checkbox seleccionados

disculpa que te moleste pero te hago una consulta, como se haria el split en el array, te pregunto porque en array vengo medio flojo todavia.
El insert lo tendria que hacer con algun bucle no? para poder insertar todos los tildados.

saludos y muchas gracias.
  #9 (permalink)  
Antiguo 05/10/2009, 08:49
Avatar de mortiprogramador
Colaborador
 
Fecha de Ingreso: septiembre-2009
Ubicación: mortuoria
Mensajes: 3.805
Antigüedad: 14 años, 7 meses
Puntos: 214
Respuesta: Ayuda con bucle para insertar los checkbox seleccionados

Hola
Puedes hacer esto

Código PHP:
<?php
$prueba 
'1000-100';
$datos split('-',$prueba);
echo 
$datos[0]; //1000
echo $datos[1]; //100
?>
Y como bien dices, necesitas un bucle para todos los que selecciones,
ya sea un for, while o el foreach que te puso spider
Saludos
  #10 (permalink)  
Antiguo 05/10/2009, 14:18
 
Fecha de Ingreso: abril-2009
Mensajes: 409
Antigüedad: 15 años
Puntos: 3
Respuesta: Ayuda con bucle para insertar los checkbox seleccionados

buen al final lo logre hacer andar de esta manera.

if (isset($_POST['registracion'])){
foreach($_POST['caballo'] as $cab){
if(!empty($cab)) {
$caballos = $cab;
$fin = explode('-',$caballos);

$insert = mysql_query("insert into ejemtras (idpropi,tomo,folio) values('$idpropi','$fin[0]','$fin[1]')")or die(mysql_error());
}
}
}

y en el form le puse en el value del checkbox le puse el tomo-folio y de esa manera anda perfecto.

Muchas gracias.
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.