Foros del Web » Programando para Internet » PHP »

tomar datos del formulario con checkbox y enviar a DB

Estas en el tema de tomar datos del formulario con checkbox y enviar a DB en el foro de PHP en Foros del Web. hola todos. Estoy probando hace dias lo de las checkbox. La idea es: Quiero grabar un proveedor en la db con sus respectivas areas que ...
  #1 (permalink)  
Antiguo 02/05/2012, 13:08
 
Fecha de Ingreso: abril-2012
Mensajes: 15
Antigüedad: 12 años
Puntos: 0
tomar datos del formulario con checkbox y enviar a DB

hola todos. Estoy probando hace dias lo de las checkbox.
La idea es: Quiero grabar un proveedor en la db con sus respectivas areas que ofrecen, yo los llamo paquetes. por ejemplo un paquete puede ser bombas centrifugas, otro es tanques plasticos, etc.
Yo creo un formulario con checkbox dinamicos con todas los paquetes que tengo en otra tabla y al dar de alta un proveedor selecciono con los checkbox que paquetes ofrece ese proveedor.
Bueno, todo bien hasta ahi. Lo que no me sale es grabar estos datos a la base de datos.
quiero grabar las id_paquete de cada provedor en una celda separada por comas.
EJ: 1, 3, 4, 123, 242, etc. Para asi mas adelante utilizarlo por si busco algun paquete me diga que proveedores lo ofrecen. Digo todo completo ya que tal vez esto de grabar con las comas no es la mejor forma y me pueden decir una mejor. Igualmente el problema es que no puedo grabar estos datos.

tabla a la que guardo todo es la proveedores

les pongo mi problema completo:

FORMULARIO (funciona bien):
Código:
<html>
<head>
<title>Alta Proveedores</title>
</head>
<body>
<div id="container" style="width: 1024px">

  <p>Alta Proveedor</p>
  <form action="grabarproveedores.php" method="post" style="width: 1000px">

<?php
$dbtable = 'pais';
include("connect.php");
        $consulta="select pais_pais from paises order by pais_pais asc";
        $result=mysql_query($consulta);


?>
    <p>&nbsp; </p>
    <table width="960" border="1" cellspacing="0" cellpadding="0">
      <tr>
        <td width="102">Razon social:</td>
        <td width="490"><input type="text" name="razon" style="width: 450px"  /></td>
      </tr>
      <tr>
        <td>Direccion: </td>
        <td><input type="text" name="direccion" style="width: 450px"/></td>
      </tr>
      <tr>
        <td> Pais:</td>
        <td><select name="pais">
        <?php
	while($fila=mysql_fetch_row($result)){
		echo "<option value='".$fila['0']."'>".$fila['0']."</option>";
	}
	?>
        </select></td>
      </tr>
      <tr>
        <td>Telefono:</td>
        <td><input type="text" name="telefono" style="width: 250px" /></td>
      </tr>
      <tr>
        <td>E-mail:</td>
        <td><input type="text" name="email" style="width: 450px" /></td>
      </tr>
      <tr>
        <td>Contacto:</td>
        <td><input type="text" name="contacto" style="width: 450px" /></td>
      </tr>
          <td>Equipos Mecanicos ofrecidos:</td>
        <td>
      
            
            
         <table width="100%">    
             <?php 
// variable para las columnas de checkbox que quiero poner en el formulario. 
  $numcolumnas = 2;
  // consulto todos los paquetes de compra que estan en mecanica (M) en orden acendente. para crear los checkbox de mecanica
  
  $consulta = mysql_query("SELECT * FROM paquetes where area_paquete ='M' order by desc_paquete");
  $total_resultados = mysql_num_rows($consulta);
   if ($total_resultados>0) {
     echo "<tr><td colspan=\"$numcolumnas\">Hay $total_resultados elementos</td></tr>";
     $i = 1;
     while($fila = mysql_fetch_array($consulta)){
       $resto = ($i % $numcolumnas); 
       if($resto == 1){ /*si es el primer elemento creamos una nueva fila*/ 
         echo "<tr>";
     }
echo "<td><input type='checkbox' name= paquetesm value='" .$fila['id_paquete']."'>" .$fila['desc_paquete']."</td>";
     /*mostramos el valor del campo especificado*/ 
    if($resto == 0){
      /*cerramos la fila*/ 
      echo "</tr>"; 
    }
   $i++; 
 }

 if($resto != 0){
  /*Si en la &uacute;ltima fila sobran columnas, creamos celdas vac&iacute;as*/
   for ($j = 0; $j < ($numcolumnas - $resto); $j++){
     echo "<td></td>"; 
    }
   echo "</tr>";
  } 
}else{ 
  echo "<tr><td>0 elementos encontrados</td></tr> ";
 } ?> 
 
          </table>
          
          </td>
            <tr>
        <td>Instrumentos Ofrecidos:</td>
        <td> <table width="100%">    
             <?php 

  $numcolumnas = 2;
  $consulta = mysql_query("SELECT * FROM paquetes where area_paquete ='I' order by desc_paquete");
  $total_resultados = mysql_num_rows($consulta);
   if ($total_resultados>0) {
     echo "<tr><td colspan=\"$numcolumnas\">Hay $total_resultados elementos</td></tr>";
     $i = 1;
     while($fila = mysql_fetch_array($consulta)){
       $resto = ($i % $numcolumnas); 
       if($resto == 1){ /*si es el primer elemento creamos una nueva fila*/ 
         echo "<tr>";
     }
echo "<td><input type='checkbox' name= paquetesi value='" .$fila['id_paquete']."'>" .$fila['desc_paquete']."</td>";
     /*mostramos el valor del campo especificado*/ 
    if($resto == 0){
      /*cerramos la fila*/ 
      echo "</tr>"; 
    }
   $i++; 
 }

 if($resto != 0){
  /*Si en la &uacute;ltima fila sobran columnas, creamos celdas vac&iacute;as*/
   for ($j = 0; $j < ($numcolumnas - $resto); $j++){
     echo "<td></td>"; 
    }
   echo "</tr>";
  } 
}else{ 
  echo "<tr><td>0 elementos encontrados</td></tr> ";
 } ?> 
 
          </table> </td>
      </tr>
       <tr>
        <td>Tuberias y accesorios</td>
        <td> <table width="100%">    
             <?php 

  $numcolumnas = 2;
  $consulta = mysql_query("SELECT * FROM paquetes where area_paquete ='T' order by desc_paquete");
  $total_resultados = mysql_num_rows($consulta);
   if ($total_resultados>0) {
     echo "<tr><td colspan=\"$numcolumnas\">Hay $total_resultados elementos</td></tr>";
     $i = 1;
     while($fila = mysql_fetch_array($consulta)){
       $resto = ($i % $numcolumnas); 
       if($resto == 1){ /*si es el primer elemento creamos una nueva fila*/ 
         echo "<tr>";
     }
echo "<td><input type='checkbox' name= 'paquetest[]' value='" .$fila['id_paquete']."'>" .$fila['desc_paquete']."</td>";
     /*mostramos el valor del campo especificado*/ 
    if($resto == 0){
      /*cerramos la fila*/ 
      echo "</tr>"; 
    }
   $i++; 
 }

 if($resto != 0){
  /*Si en la &uacute;ltima fila sobran columnas, creamos celdas vac&iacute;as*/
   for ($j = 0; $j < ($numcolumnas - $resto); $j++){
     echo "<td></td>"; 
    }
   echo "</tr>";
  } 
}else{ 
  echo "<tr><td>0 elementos encontrados</td></tr> ";
 } ?> 
 
          </table> </td>
      </tr>
    </table>
      
    <p align="right">
      <input type="Reset" value="Limpiar" />
      <input name="Submit" type="submit" value="Registrar" />
      
      <br />
      <br>
      
    </p>
</form>
    <!-- end #container -->
    
   
   
</div>
</body>
</html>
El PHP de grabado de datos se ve asi, por ahora:

Código PHP:
$conexion=mysql_connect("localhost","testu","testp"
  or die(
"Problemas en la conexion");
mysql_select_db("compras",$conexion) or
  die(
"Problemas en la seleccion de la base de datos");
mysql_query("insert into provedores(razon_prov,direccion_prov,pais_prov,telefono_prov,email_prov,compras_prov) values 
   ('$_REQUEST[razon]','$_REQUEST[direccion]',$_REQUEST[pais],'$_REQUEST[telefono]','$_REQUEST[email]','$_REQUEST[contacto]')"

   
$conexion) or die("Problemas en el select ".mysql_error());
mysql_close($conexion);



// FALTA CODIGO DE ingreso de los id_paquetes al proveedor.


echo "El proveedor Fue dado de alta.";


  #2 (permalink)  
Antiguo 03/05/2012, 08:48
 
Fecha de Ingreso: diciembre-2011
Mensajes: 64
Antigüedad: 12 años, 4 meses
Puntos: 7
Respuesta: tomar datos del formulario con checkbox y enviar a DB

ya que pasas los datos por POST para grabarproveedores.php verifica que esten pasando los valores con echo ,
$_POST[razon]','$_POST[direccion]',$_POST[pais],'$_POST[telefono]','$_POST[email]','$_POST[contacto]

Por otro lado no veo que hayas pasado la variable name= paquetesm,name= paquetesi name= 'paquetest[]'

y otra cosa mas a paquetes "m" e "i" ponele las comillas simples al nombre.
  #3 (permalink)  
Antiguo 03/05/2012, 09:00
 
Fecha de Ingreso: octubre-2011
Mensajes: 153
Antigüedad: 12 años, 6 meses
Puntos: 7
Respuesta: tomar datos del formulario con checkbox y enviar a DB

Aca tienes un ejemplo de como pasar datos con los checkbox.

Para recibir los datos enviados por un checkbox se realiza de la siguiente forma:

Ejemplo 1
$mivalor = $_REQUEST['check1'] //aqui va el name="check1" del html

Ejemplo 2
$mivalor = $_POST['check1']

Ejemplo 3
$mivalor = $_GET['check1']

Ejemplo practico:

index.html

Código HTML:
Ver original
  1.     <head>
  2.         <title>Problema</title>
  3.     </head>
  4.  
  5. <form action="checkbox.php" method="post">
  6.     Ingrese primer valor:
  7.     <input type="text" name="valor1">
  8.     <br>
  9.     Ingrese segundo valor:
  10.     <input type="text" name="valor2">
  11.     <br>
  12.     <input type="checkbox" name="check1">sumar
  13.     <br>
  14.     <input type="checkbox" name="check2">restar
  15.     <br>
  16.     <input type="submit" name="operar">
  17. </form>
  18.  
  19. </body>
  20. </html>

checkbox.php

Código PHP:
Ver original
  1. <html>
  2. <head>
  3. <title>Problema</title>
  4. </head>
  5. <body>
  6.  
  7. <?php
  8. if (isset($_REQUEST['check1']))
  9. {
  10.   $suma=$_REQUEST['valor1'] + $_REQUEST['valor2'];
  11.   echo "La suma es:".$suma."<br>";
  12. }
  13. if (isset($_REQUEST['check2']))
  14. {
  15.   $resta=$_REQUEST['valor1'] - $_REQUEST['valor2'];
  16.   echo "La resta es:".$resta;
  17. }
  18. ?>
  19.  
  20. </body>
  21. </html>
__________________
Mi mail: [email protected]
  #4 (permalink)  
Antiguo 03/05/2012, 12:18
 
Fecha de Ingreso: abril-2012
Mensajes: 15
Antigüedad: 12 años
Puntos: 0
Respuesta: tomar datos del formulario con checkbox y enviar a DB

La verdad que aun no entiendo como hacerlo.

Todos los otros datos, menos los del los checkbox pasan bien.
Aguregue la parte de los checkbox ahi es donde me trabo. Quiero guardar en una celda todos los valores de los checkbox seleccionados, separados por una coma.

Tengo un checkbox paquetes[] con los corchetes porque estoy probando algo que lei en otro foro. pero aun no sale nada.

Hagamosla facil, como tengo qeu poner para imprimir (echo) los id_paquetes separados por una coma de lso checkbox que estan seleccionados?
  #5 (permalink)  
Antiguo 03/05/2012, 12:45
 
Fecha de Ingreso: abril-2012
Mensajes: 15
Antigüedad: 12 años
Puntos: 0
Respuesta: tomar datos del formulario con checkbox y enviar a DB

Ya esta. Lo logre:
Código PHP:
 $paquetestotal $_POST['paquetest'];
 
 if(empty(
$paquetestotal))
  {
    echo(
"Proveedor dado de alta, pero no selecciono ningun paquete");
  }
  else
  {

$N count($paquetestotal);
    echo(
"proveedor fue dado de alta y ofrece $N paquetes: ");
    for(
$i=0$i $N$i++)
    {
      echo(
$paquetestotal[$i] . ",");
    }

  } 
  #6 (permalink)  
Antiguo 03/05/2012, 19:43
 
Fecha de Ingreso: diciembre-2011
Mensajes: 64
Antigüedad: 12 años, 4 meses
Puntos: 7
Respuesta: tomar datos del formulario con checkbox y enviar a DB

veamos, vos tenes paquetesi | paquetesm | y paquetes[]

si no vi mal, son 3. los 3 no pasan datos o solo paquetes[] ???

Etiquetas: checkbox, formulario, html, mysql, sql, tabla, tomar, variables
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 02:02.