Foros del Web » Programando para Internet » PHP »

Insertar valores de multiples checkbox en Mysql

Estas en el tema de Insertar valores de multiples checkbox en Mysql en el foro de PHP en Foros del Web. Hola, buenos dias, despues de estar buscando por toda la red y no encontrar lo que necesito pido ayuda en este foro, bueno, mi duda ...
  #1 (permalink)  
Antiguo 25/10/2012, 10:04
 
Fecha de Ingreso: octubre-2012
Mensajes: 28
Antigüedad: 11 años, 6 meses
Puntos: 2
Información Insertar valores de multiples checkbox en Mysql

Hola, buenos dias, despues de estar buscando por toda la red y no encontrar lo que necesito pido ayuda en este foro, bueno, mi duda es como insertar el valor de varios checkbox previamente seleccionados a una base de datos en mysql. El valor de las checkbox se llena dinamicamente con el valor de una tabla de la misma BD, se llenan con PHP, entonces, al momento de enviar los datos a otro formulario donde se previsualizan los datos que se van a almacenar los datos de las checkbox si se muestran, es decir que si se transportan con el formulario, pero al momento de hacer el insert con esos valores, solo toma el primer valor del checkbox seleccionado, y los demas no se guardan.
Aqui esta la parte que lleva los datos:
Código HTML:
<input id="folio" type="checkbox" name="folio[]" value="<?php echo "$row[folio_paciente]"; ?>" onclick="checar();"/>
        
        </td>
        <td><strong><?php echo "$row[folio_paciente]"; ?></strong></td>
		<td><strong><?php echo "$row[fecha_toma]"; ?></strong></td>
        <td align="center"> 
El checkbox se llena con los datos del campo folio_paciente
Y aqui creo una tabla dinamica con php con los valores enviados del formulario anterior:
Código PHP:
<?php 
    
//echo ($_POST []);  
    
echo("<table align='center'><tr>");
//if(!empty($_POST['folio'])) {
    
echo("<tr><td bgcolor='#CCCCCC'>Num.Reporte</td>");
    echo(
"<td bgcolor='#CCCCCC'>Folio</td>");
    echo(
"<td bgcolor='#CCCCCC'>Muestras Enviadas</td>");
    echo(
"<td bgcolor='#CCCCCC'>Fecha Generacion</td></tr>");
    foreach(
$_POST['folio'] as $folio) {
            echo(
"<tr><td>");
            echo 
$numR2;
            echo(
"<td><input type='hidden' value='$folio'>");
            echo 
$folio;
            echo (
"</td>" );
            echo(
"<td>");
            echo(
"<strong>");
            echo 
$tc=$_POST["TC"];
            echo(
" | ");
            echo 
$at=$_POST["AT"];
            echo(
" | ");
            echo 
$cbl=$_POST["CBL"];
            echo(
" | ");
            echo 
$h=$_POST["H"];
            echo(
" | ");
            echo 
$l=$_POST["L"];
            echo(
"</strong>");
            
//echo $tc;
            
echo("</td>");
            echo(
"<td>");
            echo 
$fechaG2;
            echo(
"</td></tr>");
            
            
    
}echo(
"</tr></table>");

?>
Y de esta forma hago mi INSERT, el cual solo me inserta un valor
Código PHP:
<?php 
    
require_once('../Connections/ceo_webportal.php');
mysql_select_db($database_ceo_webportal$ceo_webportal);
    
$folio25=@$_POST['folio'];
    
$fechaG2=@$_POST['fechaG'];
    
$numR2=@$_POST['numR'];
    
//PRIMERA OPCION
        
$query='';
        
//for ($i=0;$i<sizeof($folio25);$i++){
        
foreach($_POST['folio'] as $folio20){
            
            
//$folioS .=$folio20.", ";
        //$folioS=substr($folioS,0,-2);
//        echo $folioS;

            //for ($i=0;$i<sizeof($folioS);$i++){
        
$query.="('$folio20','normal','$fechaG2','$numR2')";
        
$query=rtrim($query,',');
        if(
mysql_query("INSERT INTO reporte_pacientes (pacientes_folio_paciente,tipo_reporte,fecha_de_generacion_rep,numero_reporte) VALUES $query")){
            echo 
"Done";
            }
//if
            //reset;
        
}//foreach
Por favor diganme como puedo almacenar todos los datos seleccionados del primer formulario, Gracias
  #2 (permalink)  
Antiguo 25/10/2012, 11:09
Avatar de Patriarka  
Fecha de Ingreso: enero-2011
Ubicación: Moreno, Buenos Aires, Argentina
Mensajes: 2.851
Antigüedad: 13 años, 3 meses
Puntos: 288
Respuesta: Insertar valores de multiples checkbox en Mysql

en realidad tenes un problema de diseño de tablas.
vos tenes solo reporte_pacientes, deberias agregar una tabla folios asi:
FOLIOS:
id | id_reporte_paciente | id_folio
1 | 1 | 1
2 | 1 | 1
3 | 2 | 3

entonces tenes que hacer 2 queries
una que guarda el reporte paciente (sin el folio)
y otra que guarda el id_reporte_paciente con id_folio que correspondas

CAPISH ???
  #3 (permalink)  
Antiguo 25/10/2012, 11:24
 
Fecha de Ingreso: octubre-2012
Mensajes: 28
Antigüedad: 11 años, 6 meses
Puntos: 2
Respuesta: Insertar valores de multiples checkbox en Mysql

La tabla que contiene los folios de los pacientes ya la tengo, se llama pacientes, entonces la tabla de reporte_pacientes ya esta relacionada con una llave foranea con el folio en la tabla de pacientes, puedo insertar solo un valor selccionado, si selecciono mas de uno, solo inserta el primer dato seleccionado.
No se realmente cual sea el problema, el query de insert esta bien, creo que el problema radica en como hace el recorrido para obtener los datos de los checkbox y la forma en que estos van actualizandose. Gracias por tu ayuda de todos modos, eres el unico que me ha contestado
  #4 (permalink)  
Antiguo 25/10/2012, 12:08
Avatar de Patriarka  
Fecha de Ingreso: enero-2011
Ubicación: Moreno, Buenos Aires, Argentina
Mensajes: 2.851
Antigüedad: 13 años, 3 meses
Puntos: 288
Respuesta: Insertar valores de multiples checkbox en Mysql

ok, entonces cuantos folios queres guardar por cada reporte?
  #5 (permalink)  
Antiguo 25/10/2012, 12:23
 
Fecha de Ingreso: abril-2012
Ubicación: 41°37′00″N, 00°37′00″E
Mensajes: 462
Antigüedad: 12 años, 1 mes
Puntos: 33
Respuesta: Insertar valores de multiples checkbox en Mysql

Buenas!

A ver si lo he entendido bien:

- Tienes varios checkBox, con valores definidos y algunos marcados
- Quieres guardar los datos de los checkBox en la base de datos

Cierto?

Yo lo que haría sería iterar sobre $_POST y si coinciden con cierto valor fijo, extraes el valor y lo insertas en la base de datos.

Veo que los checkBox son un "array" llamado "folio". Imagina que son varios independientes con nombre "folioN" (donde N es un número que se auto-incrementa); podrías hacer:

Código:
ITERAR en $_POST 
  SI $_POST[$actual] CONTIENE "folio"
     INSERT
   FIN
FIN ITERAR
Espero te sirva en algo.

Saludos!
  #6 (permalink)  
Antiguo 25/10/2012, 12:31
 
Fecha de Ingreso: octubre-2012
Mensajes: 28
Antigüedad: 11 años, 6 meses
Puntos: 2
Respuesta: Insertar valores de multiples checkbox en Mysql

Cuantos esten seleccionados, es un numero indefinido, estos se generan a partir de una consulta: es decir, se hace una consulta de fechas por ejemplo, y los folios que coincidan con esa fecha se muestran en un formulario, donde cada folio lleva un checkbox asociado, entonces, del resultado de esos checkbox se seleccionan y se envian a otro formulario en donde se guardaran los datos seleccionados, espero haberme explicado
  #7 (permalink)  
Antiguo 25/10/2012, 12:36
 
Fecha de Ingreso: octubre-2012
Mensajes: 28
Antigüedad: 11 años, 6 meses
Puntos: 2
Respuesta: Insertar valores de multiples checkbox en Mysql

Algo asi tambien habia intentado, hacerlo con un isset para verificar si el array contenia algo, e intente con un foreach y un for recorrer el array, pero solo me obtiene el primer dato seleccionado, los datos que quiero recuperar si los obtiene, por que previo a guardar los datos, hago una consulta de fechas en donde se obtienen los datos y se les asocia un checkbox, asi se seleccionan los check y los folios seleccionados pasan a otro formulario, en donde hay un boton que dice imprimir, el cual ademas de imprimir el documento debe guardar esos folios en la bd, pero solo me guarda uno, espero haberme explicado, gracias por tu respuesta
  #8 (permalink)  
Antiguo 25/10/2012, 13:15
Avatar de Patriarka  
Fecha de Ingreso: enero-2011
Ubicación: Moreno, Buenos Aires, Argentina
Mensajes: 2.851
Antigüedad: 13 años, 3 meses
Puntos: 288
Respuesta: Insertar valores de multiples checkbox en Mysql

Iram tenes mal el diseño de tus tablas,
replantea las tablas como yo te digo.
si vos decis que se guarda un solo flio, no sirve de nada hacer un checkbox de folios, se entiende?
si lleva un solo folio entonces cambia el checkbox por radio y listo
  #9 (permalink)  
Antiguo 25/10/2012, 13:49
 
Fecha de Ingreso: octubre-2012
Mensajes: 28
Antigüedad: 11 años, 6 meses
Puntos: 2
Respuesta: Insertar valores de multiples checkbox en Mysql

Bueno, gracias, supongo que no me doy a entender, ya tengo una consulta previa a esto, de tales fechas a tales fechas quienes se han registrado, entonces se despliegan los folios de las personas con un checkbox cada uno, asociado, entonces el usuario elegira cual o cuales folios quiere guardar, entonces los selecciona y los seleccionado se va a otro formulario, y ahi hay un boton que debe guardar los folios que se seleccionaron antes. Y el problema que tengo es que solo se guarda un folio, y yo quiero que se guarden todos los que se seleccionen, se guardaran en la tabla reporte_pacientes.
  #10 (permalink)  
Antiguo 25/10/2012, 14:23
Avatar de patriciomase  
Fecha de Ingreso: abril-2012
Ubicación: Mar del Plata
Mensajes: 323
Antigüedad: 12 años
Puntos: 34
Respuesta: Insertar valores de multiples checkbox en Mysql

te sugiero que primero que nada, les pongas un indice, se llaman todos folio[] y para saber cual es cual es mas complicado.

segundo: si no te seleccionan ninguno te va a dar error porque la variable $_POST['folio'] no va a existir.

tercero: hacele un var_dump() a $_POST['folio'] en el php que inserta y pegalo aca, a ver que te trae esa variable
  #11 (permalink)  
Antiguo 25/10/2012, 15:53
 
Fecha de Ingreso: octubre-2012
Mensajes: 28
Antigüedad: 11 años, 6 meses
Puntos: 2
Respuesta: Insertar valores de multiples checkbox en Mysql

Esto es lo que me trae el var_dump, al parecer, si me trae los datos del arreglo de checkbox, array(2) { [0]=> string(12) "29-001-20-42" [1]=> string(12) "29-001-20-43" }
que es lo que puedo hacer?
Soy nueva en PHP, por eso no se mucho de esto, para lo de si no selecciona un ningun folio, hay un script para que tenga que seleccionar uno o cancelar la operacion
  #12 (permalink)  
Antiguo 25/10/2012, 16:12
Avatar de Nemutagk
Colaborador
 
Fecha de Ingreso: marzo-2004
Ubicación: México
Mensajes: 2.633
Antigüedad: 20 años, 1 mes
Puntos: 406
Respuesta: Insertar valores de multiples checkbox en Mysql

Este código esta mal....
Código PHP:
Ver original
  1. mysql_select_db($database_ceo_webportal, $ceo_webportal);
  2.     $folio25=@$_POST['folio'];
  3.     $fechaG2=@$_POST['fechaG'];
  4.     $numR2=@$_POST['numR'];
  5.     //PRIMERA OPCION
  6.         $query='';
  7.         //for ($i=0;$i<sizeof($folio25);$i++){
  8.         foreach($_POST['folio'] as $folio20){
  9.              
  10.             //$folioS .=$folio20.", ";
  11.         //$folioS=substr($folioS,0,-2);
  12. //        echo $folioS;
  13.  
  14.             //for ($i=0;$i<sizeof($folioS);$i++){
  15.         $query.="('$folio20','normal','$fechaG2','$numR2')";
  16.         $query=rtrim($query,',');
  17.         if(mysql_query("INSERT INTO reporte_pacientes (pacientes_folio_paciente,tipo_reporte,fecha_de_generacion_rep,numero_reporte) VALUES $query")){
  18.             echo "Done";
  19.             }//if
  20.             //reset;
  21.         }

Para comenzar, no se si tengas idea para que sirve '.=' en PHP, si o lo tienes claro te lo describo, se utiliza para agregar un valor a una variable ya establecida, por lo cual cada iteración de foreach estas agregando los valores, por lo cual si tienes 5 elementos en el array te quedará una variable de esta forma....
Código PHP:
Ver original
  1. $query = "('$folio20','normal','$fechaG2','$numR2')('$folio20','normal','$fechaG2','$numR2')('$folio20','normal','$fechaG2','$numR2')('$folio20','normal','$fechaG2','$numR2')('$folio20','normal','$fechaG2','$numR2')";

No solo eso, después le aplicas rtrim sobre el caracter coma (,), por lo cual queda así...
Código PHP:
Ver original
  1. $query = "('$folio20''normal''$fechaG2''$numR2')('$folio20''normal''$fechaG2''$numR2')('$folio20''normal''$fechaG2''$numR2')('$folio20''normal''$fechaG2''$numR2')('$folio20''normal''$fechaG2''$numR2')";

Y por ultimo realizas el "insert", pero no depuras la consulta (no mandas a llamar a mysql_error()) por lo cual jamas te enteras del error, arregla primero esos errores y después continuas con lo que se te presente....
__________________
Listo?, tendría que tener 60 puntos menos de IQ para considerarme listo!!!
-- Sheldon Cooper
http://twitter.com/nemutagk
PD: No contestaré temas vía mensaje personal =)
  #13 (permalink)  
Antiguo 25/10/2012, 16:31
 
Fecha de Ingreso: octubre-2012
Mensajes: 28
Antigüedad: 11 años, 6 meses
Puntos: 2
Respuesta: Insertar valores de multiples checkbox en Mysql

Gracias a todos los que me ayudaron, ya pude lograr mi INSERT, regrese a las bases, y cambie mi consulta como comunmente se debe hacer, dandole los valores directamente, y asi pude lograr que se guardaran, el foreach estaba bien y tambien la relacion de mis tablas. Gracias a todos

Etiquetas: checkbox, insert, 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 15:33.