Foros del Web » Programando para Internet » PHP »

Checkbox en mysql

Estas en el tema de Checkbox en mysql en el foro de PHP en Foros del Web. hola a todos yo tengo un formulario en que hay checkbox creados por una consulta mysql, y necesito insertar en mysql los checkbox seleccionados, listo ...
  #1 (permalink)  
Antiguo 07/09/2011, 14:36
Avatar de JeMaGa  
Fecha de Ingreso: julio-2011
Ubicación: Bogota
Mensajes: 430
Antigüedad: 12 años, 9 meses
Puntos: 4
Checkbox en mysql

hola a todos yo tengo un formulario en que hay checkbox creados por una consulta mysql, y necesito insertar en mysql los checkbox seleccionados, listo me inserta solo un checkbox y cuando quiero incorporar los demas checkbos se me presenta el siguiente error

ERROR

Warning: implode() [function.implode]: Bad arguments. in C:\AppServ\www\InsertarArchivo.php on line 23

Warning: implode() [function.implode]: Bad arguments. in C:\AppServ\www\InsertarArchivo.php on line 25
You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '),())' at line 1

este es mi formulario de logica

InsertarArchivo.php

Código PHP:
Ver original
  1. <DOCTYPE html PUBLIC "- / / W3C / / DTD XHTML 1.0 Strict / / EN" "Http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
  2.  
  3. <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="es" lang="es">
  4.  
  5. <meta http-equiv="content-type" content="text/html;charset=iso-8859-1" />
  6.  
  7. <link type="text/css" rel="stylesheet" href="estilo.css">
  8.  
  9. <?php
  10.  
  11. if ((isset($_POST['codigo']) && isset($_POST['nombre']) && isset($_POST['version']) && isset($_POST['Area']))
  12.  
  13. && ($_POST['codigo'] != "" || $_POST['nombre'] != "" || $_POST['version'] != "" || $_POST['Area'] != "" )) {
  14.  
  15.     $Codigo=$_POST['codigo'];
  16.  
  17.     $Nombre=$_POST['nombre'];
  18.  
  19.     $Version=$_POST['version'];
  20.  
  21.     $Area=implode(",",$_POST['Area']);
  22.  
  23.     $Area2=implode(",",$_POST['Area2']);
  24.    
  25.     $Area3=implode(",",$_POST['Area3']);
  26.  
  27.     $destino='archivos';
  28.  
  29.     $nom_archivo = $_FILES['archivo']['name'];
  30.  
  31.     $tipo = $_FILES['archivo']['type'];
  32.  
  33.     $size = $_FILES['archivo']['size'];
  34.  
  35.     $tamano=$_FILES['file']['size'];
  36.  
  37.        if($tamano < 500){
  38.  
  39.          copy($_FILES['archivo']['tmp_name'], $destino.'/'.$_FILES['archivo']['name']);
  40.  
  41.          require("Conexion.php");
  42.  
  43.          $sql = "insert into `datos` (`Codigo`,`Nombre`,`Version`,`Adjunto`,`Area`,`Area2`,`Area3`) values('{$Codigo}','{$Nombre}','{$Version}','{$_FILES['archivo']['name']}', (".$Area."),(".$Area2."),(".$Area3."))";
  44.  
  45.          mysql_query($sql, $Conexion) or die ( mysql_error());
  46.  
  47.          echo "<pre>";
  48.        
  49.          print_r($_POST);
  50.        
  51.          echo "</pre>";
  52.        
  53.          echo '<center><b><h3>Se insertaron los datos correctamente</a></h3></b></center>';
  54.        
  55.          echo '<center><b><h3><a href=CargarDocumento.php> Regresar </a></h3></b></center>';
  56.        
  57.       }else {
  58.  
  59.          echo ("El tamaño es superior al permitido");
  60.  
  61.        }
  62.  
  63. }else {
  64.  
  65.     $sindatos = "<center><font color=\"red\"  size=\"4\"><b>DEBE INGRESAR DATOS<b></font></center>";
  66.     include('CargarDocumento.php');
  67. }


CargarDocumento.php ----> el formulario de presentacion

Código HTML:
Ver original
  1. <DOCTYPE html PUBLIC "- / / W3C / / DTD XHTML 1.0 Strict / / EN" "Http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
  2.  
  3. <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="es" lang="es">
  4.  
  5. <script language="JavaScript" type="text/javascript" src="js/Ajax.js"></script>
  6.  
  7. <script type="text/javascript" src="js/jquery.min.js"></script>
  8.  
  9.  
  10.  
  11. <title>Cargar Documentos</title>
  12.  
  13. </head>
  14.  
  15. <meta http-equiv="content-type" content="text/html;charset=iso-8859-1" />
  16.  
  17. <link type="text/css" rel="stylesheet" href="estilo.css">
  18.  
  19.  
  20. <div style="text-align: right;"><a href="CerrarSecion.php"><h6>Cerrar Sesion</h6></a></div>
  21.  
  22. <center><?php if (isset($sindatos)) echo $sindatos; ?></center>
  23.  
  24. <center><h2>CARGA DEL DOCUMENTO</h2><center>
  25.  
  26. <h3>Aqui usted podra ingresar nuevos documentos, pero estos solo pueden ser subidos cuando ya esten aprobados previamente,<br>
  27.  
  28. los campos con un <font color="red"><b>*</b></font> son obligatorios, debe seleccionar las areas que pueden ver los documentos a leer.</h3>
  29.  
  30. <form action="InsertarArchivo.php" method="post" enctype="multipart/form-data" name="form1">
  31.  
  32. <center><a href="MenuAdmi.php"><h3> Devlover </h3></a></center>
  33.  
  34. <center><br><table border ='2'>
  35.  
  36. <tr>
  37.  
  38. <td>
  39.  
  40. <center><IMG SRC="imagenes/LOGO.jpg" WIDTH=120 HEIGHT=100></center>
  41.  
  42. <h3><center>DATOS DEL DOCUMENTO</center></h3>
  43.  
  44. </td>
  45.  
  46. <td><br>
  47.  
  48. <center><h4><font color="red"><b>*</b></font> Codigo del Documento: <input type="text" name="codigo" id="documento" size="27"  value="<?php if(isset($Codigo)) echo $Codigo?>"/></h4></center>
  49.  
  50. <center><h4><font color="red"><b>*</b></font> Nombre del Documento: <input type="text" name="nombre" id="nombre" size="25" value="<?php if(isset($Nombre)) echo $Nombre?>" /></h4></center><?php if (isset($novalnum1)) echo $novalnum1?>
  51.  
  52. <center><h4><font color="red"><b>*</b></font> Version del Documento: <input type="text" name="version" id="version"  size="26"  value="<?php if(isset($Version)) echo $Version?>" /></h4></center><?php if (isset($novalnum2)) echo $novalnum2?>
  53.  
  54. <p align="center"><h4><font color="red"><b>*</b></font> Archivo  <input name="archivo" type="file" id="archivo"> </h4>
  55.  
  56. <h4><font color="red"><b>*</b></font> Area Correspondiente:<br><br><?php
  57.  
  58.                                                             require("Conexion.php");
  59.                                                            
  60.                                                             $resultado=mysql_query("Select * from `area`");
  61.                                                            
  62.                                                             while ($row = mysql_fetch_array($resultado)){
  63.                                                            
  64.                                                             echo "<input type=\"checkbox\" name=\"Area[]\" value=\"".$row['Cod.Area']."\">".$row['Nombre_Area']."<br>";
  65.                                                            
  66.                                                             }
  67.                                                            
  68.                                                             ?>
  69.  
  70. <center><p align="center"><input name="boton" type="submit" id="boton" value="ENVIAR"> <input name="boton" type="reset" id="boton" value="LIMPIAR"></p></center>
  71.  
  72. </td>
  73.  
  74. </tr>
  75.  
  76. </form>
  77.  
  78. </body>
  79.  
  80. </html>

agradesco toda la ayuda posible
  #2 (permalink)  
Antiguo 07/09/2011, 15:03
Avatar de hasdpk  
Fecha de Ingreso: agosto-2011
Ubicación: $spain->city( 'Arucas' );
Mensajes: 1.800
Antigüedad: 12 años, 7 meses
Puntos: 297
Respuesta: Checkbox en mysql

Sencillo, la variable $_POST['Area2'] y $_POST['Area3'] están vacías y por eso implode() no puede trabajar.
  #3 (permalink)  
Antiguo 07/09/2011, 17:43
Avatar de andresdzphp
Colaborador
 
Fecha de Ingreso: julio-2011
Ubicación: $this->Colombia;
Mensajes: 2.749
Antigüedad: 12 años, 9 meses
Puntos: 793
Respuesta: Checkbox en mysql

Sólamente existe un array Area[]

echo "<input type=\"checkbox\" name=\"Area[]\" value=\""

y estás intentando usar 2 arrays que no existen

$Area2=implode(",",$_POST['Area2']);
$Area3=implode(",",$_POST['Area3']);

Area tiene todos tus datos, debes sacarlos de ahí.

Saludos
__________________
Si sabemos como leer e interpretar el manual será mucho más fácil aprender PHP. En lugar de confiar en ejemplos o copiar y pegar - PHP
  #4 (permalink)  
Antiguo 07/09/2011, 18:19
Avatar de hasdpk  
Fecha de Ingreso: agosto-2011
Ubicación: $spain->city( 'Arucas' );
Mensajes: 1.800
Antigüedad: 12 años, 7 meses
Puntos: 297
Respuesta: Checkbox en mysql

Aquí te explican como funcionan las Arrays:

http://php.net/manual/es/language.types.array.php
  #5 (permalink)  
Antiguo 08/09/2011, 07:44
Avatar de JeMaGa  
Fecha de Ingreso: julio-2011
Ubicación: Bogota
Mensajes: 430
Antigüedad: 12 años, 9 meses
Puntos: 4
Respuesta: Checkbox en mysql

Y como puedo insertar todos los valores de ese arreglo en mi base de datos??
  #6 (permalink)  
Antiguo 08/09/2011, 08:25
Avatar de blakmetall  
Fecha de Ingreso: diciembre-2010
Ubicación: Jalisco
Mensajes: 181
Antigüedad: 13 años, 4 meses
Puntos: 18
Respuesta: Checkbox en mysql

bueno pues como tienes definido los campos del checkbox como
en tu caso debes usarlos de la siguiente manera

$_POST['Area'][0] para el primer campo
$_POST['Area'][1] para el segundocampo
$_POST['Area'][2] para el tercer campo
  #7 (permalink)  
Antiguo 08/09/2011, 08:30
 
Fecha de Ingreso: febrero-2011
Mensajes: 43
Antigüedad: 13 años, 2 meses
Puntos: 0
Respuesta: Checkbox en mysql

Hola este es un ejemplo cuando utilizas metodo post


// oficinas centrales
if ((isset($_POST['Area']))) {
$seleccion1=($_POST['Area']);
} else {
$seleccion1=0;
}

$fila=1
if (!empty($seleccion1) && is_array($seleccion1)){
foreach ($seleccion1 as $idoficinas){
$query1="INSERT INTO tabla VALUES(NULL,'$variable1','$variable2')";
$result2 = mysql_query($query1);
$fila++;
}
}


1. asigno el valores del array Area que contiene los valores marcados en el checkbox a la variable $seleccion1.

2. Verifico que la variable seleccion no este vacia y que sea un array

3. creo un for para la variable $seleccion1 y la procesa con cualquier alias ejemplo $idoficinas, este nombre puede ser cualquiera

4. realizo el insert con los valores seleccionados en el checkbox

espero no confundirte
  #8 (permalink)  
Antiguo 08/09/2011, 10:43
Avatar de JeMaGa  
Fecha de Ingreso: julio-2011
Ubicación: Bogota
Mensajes: 430
Antigüedad: 12 años, 9 meses
Puntos: 4
Respuesta: Checkbox en mysql

Pero en el ejemplo que tu pusiste en el insert no tienes la variable de la seleccion
:-/
  #9 (permalink)  
Antiguo 08/09/2011, 12:52
Avatar de blakmetall  
Fecha de Ingreso: diciembre-2010
Ubicación: Jalisco
Mensajes: 181
Antigüedad: 13 años, 4 meses
Puntos: 18
Respuesta: Checkbox en mysql

no es necesario usar la variable de seleccion con ese metodo, siempre y cuando los campos que vas a introducir este en el orden segun como tengas definida tu tabla.

estos ejemplo de insertar son correcto

insert into test ('nombre','edad') value('minombre','18');
insert into test values('minombre','18');
insert into test set nombre = 'minombre', edad = '18;

------------------

Modificado: me equivoque, te referias a la variable $seleccion. no al metodo de insertar.
  #10 (permalink)  
Antiguo 12/09/2011, 08:42
Avatar de JeMaGa  
Fecha de Ingreso: julio-2011
Ubicación: Bogota
Mensajes: 430
Antigüedad: 12 años, 9 meses
Puntos: 4
Respuesta: Checkbox en mysql

Muchas gracias por toda su ayuda!! :) ya lo solucione
  #11 (permalink)  
Antiguo 20/09/2011, 13:55
Avatar de JeMaGa  
Fecha de Ingreso: julio-2011
Ubicación: Bogota
Mensajes: 430
Antigüedad: 12 años, 9 meses
Puntos: 4
Respuesta: Checkbox en mysql

Hola!!! una pregunta alguien sabe como actualizar los checkbox seleccionados en mysql???
  #12 (permalink)  
Antiguo 20/09/2011, 14:05
 
Fecha de Ingreso: diciembre-2010
Mensajes: 788
Antigüedad: 13 años, 4 meses
Puntos: 51
Respuesta: Checkbox en mysql

Tenés que usar la instrucción UPDATE de mysql: http://dev.mysql.com/doc/refman/5.0/es/update.html
  #13 (permalink)  
Antiguo 20/09/2011, 15:19
Avatar de JeMaGa  
Fecha de Ingreso: julio-2011
Ubicación: Bogota
Mensajes: 430
Antigüedad: 12 años, 9 meses
Puntos: 4
Respuesta: Checkbox en mysql

siii yo se, pero como puedo incluir los checkbox!!!! en la consulta de actualización.

yo tengo un formulario que me inserta los valores de los checbox en mysql según el código del documento escrito, y yo quiero que cuando ingrese ese documento nuevamente y quiera cambiar los checkbox seleccionados, en mysql me actualice los checkbox que volví a seleccionar, como podría realizar esto!!

Gracias!!
  #14 (permalink)  
Antiguo 20/09/2011, 15:25
 
Fecha de Ingreso: diciembre-2010
Mensajes: 788
Antigüedad: 13 años, 4 meses
Puntos: 51
Respuesta: Checkbox en mysql

Podés ser mas específico? Querés guardar los valores de los checkboxs?
  #15 (permalink)  
Antiguo 20/09/2011, 16:04
Avatar de JeMaGa  
Fecha de Ingreso: julio-2011
Ubicación: Bogota
Mensajes: 430
Antigüedad: 12 años, 9 meses
Puntos: 4
Respuesta: Checkbox en mysql

si pero actualizados!!!

ejemplo:

mi formulario tiene 3 campos para el código del documento, Nombre del documento, version, el Adjunto, y tienen un checkbox por cada area, (hay 15 areas) .

entonces yo ingreso codigo ---> AME-410A Nombre---> xxx version--->1 Areas 1,2,3,4....... Listo estos datos se me insertan bien, el valor de los checkbox tambien me los inserta.

Ahora lo que necesito es que cuando ingrese codigo ---> AME-410A Nombre---> yyy version--->2 Areas 5,6,7,8,9....... entonces lo que necesito es que aquí me actualice los datos.

listo las áreas están en una tabla llamada area_documento, y los datos del documento estan en otra tabla llamada datos, listo los datos de la tabla datos ya me actualizan, pero las areas me las inserta otra ves!! es decir no me las actualiza y eso es lo que yo necesito!!! actualizar esa tabla!!
  #16 (permalink)  
Antiguo 20/09/2011, 16:16
 
Fecha de Ingreso: diciembre-2010
Mensajes: 788
Antigüedad: 13 años, 4 meses
Puntos: 51
Respuesta: Checkbox en mysql

Para eso tenés que usar la consulta UPDATE como te dije.

A ver si lo entendés así:

Ej.:

Código MySQL:
Ver original
  1. UPDATE area_documento SET Areas = '$areas' WHERE codigo = 'AME-410A'
  #17 (permalink)  
Antiguo 21/09/2011, 07:00
Avatar de JeMaGa  
Fecha de Ingreso: julio-2011
Ubicación: Bogota
Mensajes: 430
Antigüedad: 12 años, 9 meses
Puntos: 4
Respuesta: Checkbox en mysql

listo pero en caso de que no exista el documento con áreas seleccionadas, me lo tiene que insertar!!!! no actualizar!!!

Entonces seria algo asi si el documento tiene áreas seleccionadas ACTUALICE y si no tiene áreas ni existe ese documento INSERTE, como podría hacer esto!!!!

Etiquetas: checkbox, html, mysql, sql, formulario
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 18:00.