Foros del Web » Programando para Internet » PHP »

Ignorar checkbox vacios durante el INSERT a MySQL????

Estas en el tema de Ignorar checkbox vacios durante el INSERT a MySQL???? en el foro de PHP en Foros del Web. AYUDA!!! Soy novato en cuanto a PHP y MySQL y me han encargado unos formularios de entrada de datos. El problema es que varios de ...
  #1 (permalink)  
Antiguo 26/08/2012, 08:29
 
Fecha de Ingreso: agosto-2012
Mensajes: 12
Antigüedad: 11 años, 7 meses
Puntos: 0
Exclamación Ignorar checkbox vacios durante el INSERT a MySQL????

AYUDA!!!

Soy novato en cuanto a PHP y MySQL y me han encargado unos formularios de entrada de datos.

El problema es que varios de los formularios tienen campos checkbox con opciones que probablemente no marque nadie (son opcionales).
Ya tengo todo funcionando pero cuando no marco ninguno de esos checkbox aparece el siguiente error:

Undefined index: necessitats_educatives_especials in C:\wamp\www\ingreso.php on line 16


Sucede lo mismo con los radio-buttons y yo no puedo dar por hecho que los usuarios completaran todos los campos!!!

Espero que podáis ayudarme, muchísimas gracias!
  #2 (permalink)  
Antiguo 26/08/2012, 09:48
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 16 años, 4 meses
Puntos: 2658
Respuesta: Ignorar checkbox vacios durante el INSERT a MySQL????

Cita:
Sucede lo mismo con los radio-buttons y yo no puedo dar por hecho que los usuarios completaran todos los campos!!!
Nadie puede darlo por sentado. Por eso se deben validar todos los datos del formulario antes de proceder a crear el insert a la base.
Crear las validaciones es la tarea más engorrosa y aburrida de todo desarrollo, pero es la más necesaria, ya que evita enviar datos basura a la base, y perder el tiempo que el sistema usa para enviar, ejecutar y recibir la respuesta de la base de datos.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #3 (permalink)  
Antiguo 26/08/2012, 10:27
 
Fecha de Ingreso: agosto-2012
Mensajes: 12
Antigüedad: 11 años, 7 meses
Puntos: 0
Respuesta: Ignorar checkbox vacios durante el INSERT a MySQL????

Mmm, entiendo. Gracias por la respuesta, pero...
Podrias ayudarme sobre como validar los datos? Ya tengo escrito el codigo de los INSERT, no se si tendrá algún inconveniente...
  #4 (permalink)  
Antiguo 26/08/2012, 10:45
Avatar de cuasatar  
Fecha de Ingreso: junio-2011
Ubicación: Bogotá Rock City
Mensajes: 1.230
Antigüedad: 12 años, 9 meses
Puntos: 181
Respuesta: Ignorar checkbox vacios durante el INSERT a MySQL????

Cuando aprendi a usar PHP con un libro aprendi que los valores de un checkbox generaban un valor de NULL cuando no eran marcados. Para poder darle un valor predeterminado se debe hacer uso de javascript. Tomo el ejemplo del libro domine PHP y MySQL de José López Quijado

Código Javascript:
Ver original
  1. function comprobarFormulario(){
  2.  if (!document.getElementById("checkbox").checked){
  3. document.getElementById("checkbox").value="NO";
  4. }
  5. else{
  6. document.getElementById("checkbox").value="SI";
  7. }
  8. }

Y en el formulario de envio se le añade esta linea

Código Javascript:
Ver original
  1. <form name="formulario" action="archivo.php" method ="post" onSubmit="javascript:comprobarFormulario();"

Igual es un ejemplo pero ya es cuestion de adaptarlo para su uso.

Lo coloco para interes general ya que este libro ha sido siempre mi guia y me ha salvado en infinidad de ocasiones. Espero con esto soluciones tu problema.
__________________
Blog de humor http://elcuasatar.net63.net/
  #5 (permalink)  
Antiguo 26/08/2012, 14:28
Avatar de rodrigo791  
Fecha de Ingreso: noviembre-2009
Ubicación: Uruguay
Mensajes: 1.339
Antigüedad: 14 años, 5 meses
Puntos: 168
Respuesta: Ignorar checkbox vacios durante el INSERT a MySQL????

El problema es si te desactivan javascript.
Validen de los 2 lados, de javascript y de php.
Es obvio que no cualquiera desactiva javsacript del navegador, siempre lo hace alguien con conocimientos.
Con php podrias validar con isset, si te llegan los datos de los checkbox o no.
  #6 (permalink)  
Antiguo 27/08/2012, 05:14
 
Fecha de Ingreso: agosto-2012
Mensajes: 12
Antigüedad: 11 años, 7 meses
Puntos: 0
Respuesta: Ignorar checkbox vacios durante el INSERT a MySQL????

En cuanto a validar con isset, me podríais decir de que se trata y como hacerlo?
Esque todo el mundo me dice que hay que "validar", pero soy principiante y no se exactamente que se consigue con eso...

Espero vuestra ayuda, muchísimas gracias a los que habéis respondido!
  #7 (permalink)  
Antiguo 27/08/2012, 09:25
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 17 años, 10 meses
Puntos: 2135
Respuesta: Ignorar checkbox vacios durante el INSERT a MySQL????

Pues es tan sencillo como:
Código PHP:
Ver original
  1. $fields = array();
  2. $values = array();
  3. $insertValues = array();
  4. if (!empty($_POST['name'])) {
  5.    $fields[] = "`name`";
  6.    $values[] = "?";
  7.    $insertValues[] = $_POST['name'];
  8. }
  9. if (!empty($_POST['age'])) {
  10.    $fields[] = "`age`";
  11.    $values[] = "?";
  12.    $insertValues[] = $_POST['age'];
  13. }
  14. if (!empty($_POST['addr'])) {
  15.    $fields[] = "`addr`";
  16.    $values[] = "?";
  17.    $insertValues[] = $_POST['addr'];
  18. }
  19.  
  20. $query = "INSERT INTO `tutabla` (".implode(',', $fields) . ") VALUES (". implode(',', $values).")";
  21.  
  22. echo $query;
  23.  
  24. $stmt = $conn->prepare($query);
  25. $stmt->execute($insertValues);

Así solo se van a insertar los datos que realmente quieras que se inserten.

Por otro lado si estas usando la extensión mysql, te recomiendo pases a PDO o MySQLi, lee esto: http://www.forosdelweb.com/f18/anunc...ecada-1008145/

Etiquetas: checkbox, durante, formulario, ignorar, insert, mysql, vacios, usuarios
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:22.