Foros del Web » Programando para Internet » PHP »

[SOLUCIONADO] Evitar insertar datos vacios en mysql

Estas en el tema de Evitar insertar datos vacios en mysql en el foro de PHP en Foros del Web. Hola buenas tengo un formulario de registro y me gustaría saber como puedo evitar que se inserten datos vacíos en la tabla ya que me ...
  #1 (permalink)  
Antiguo 07/01/2015, 16:50
Avatar de dmrx921  
Fecha de Ingreso: enero-2015
Mensajes: 35
Antigüedad: 9 años, 3 meses
Puntos: 0
Evitar insertar datos vacios en mysql

Hola buenas tengo un formulario de registro y me gustaría saber como puedo evitar que se inserten datos vacíos en la tabla ya que me e dado cuenta de que si se envía vació se inserta igualmente...

Os dejo el código del html y del php que lo inserta.

Código HTML:
Ver original
  1. <title>prueba</title>
  2.     <meta http-equiv="content-type" content="text/html;charset=utf-8" />
  3.     <link href="estilo.css" type="text/css"
  4.     rel="stylesheet" />
  5. </head>
  6.         <div id="todo">
  7.         <div id ="contenedor">
  8.                 <div id ="cabecera">
  9.                    
  10.                     <div id="logo">
  11.                         <ul>
  12.                             <li><img src="logo.png" width="100px" height="100px" alt="Despliegate"/></li>
  13.                             <li><a href="/paginas/prueba/index.php">Despliegate</a></li>
  14.                         </ul>
  15.                     </div>
  16.                 </div>
  17.                
  18.                 <div id="menu">
  19.                     <div id="menu">
  20.                         <ul>
  21.                             <li><a href="#menuh" id="primero">Inicio</a></li>
  22.                             <li><a href="#menuh">Comentarios</a></li>
  23.                             <li><a href="#menuh">Noticias</a></li>
  24.                             <li><a href="#menuh">Contacto</a></li>
  25.                             <li><a href="#menuh">Acerca de nosotros</a></li>
  26.                         </ul>
  27. </div>
  28.                 </div>
  29.                 <div id ="panel">
  30.                     <h3>Registro</h3>
  31.                     <h3>Iniciar sesion</h3>
  32.                 </div>
  33.                 <div id ="contenido">
  34.                     <form action="reg.php" method="post" name="datos">
  35.                         <table>
  36.                         <tr>
  37.                          <form action="reg.php" method="post" name="datos">
  38.                                 <td>Nombre:</td><td><input name="nombre" type="text" id="nombre"/></br></td>
  39.                             </tr>
  40.                             <tr>
  41.                                 <td>Nombre de usuario:</td><td><input type="text" name="nick" id="nick" /><br></td>
  42.                             </tr>
  43.                             <tr>
  44.                                 <td>Apellidos:</td><td><input type="text" name="apellidos" id="apellidos" /><br></td>
  45.                             </tr>
  46.                            
  47.                             <tr>
  48.                                 <td>Correo:</td><td><input name="email" type="text" id="email"/></br></td>
  49.                             </tr>
  50.                             <tr>
  51.                                 <td>Contraseña:</td><td><input type="password" name="contrasena" id="contrasena"><br></td>
  52.                             </tr>  
  53.                             <tr>
  54.                                 <td>Confirmar contraseña:</td><td><input type="password" name="contrasena2" id="contrasena2"/><br></td>
  55.                             </tr>                      
  56.                             <tr>
  57.                             <td><input type="submit" value="Enviar este formulario"/></td>
  58.                             </tr>
  59.                         </table>
  60.                           </form>
  61.                         </table>
  62.  
  63.            
  64.                 </div>
  65.                
  66.  
  67.         </div>
  68.         </div>
  69.  
  70.     </body>
  71. </html>
  72. </body>
  73.  
  74. </html>

Código PHP:
Ver original
  1. <?php
  2. /* CONECTAR CON BASE DE DATOS **************** */  
  3.    $con = mysql_connect('localhost','root','dmrx921');
  4.    if (!$con){die('ERROR DE CONEXION CON MYSQL: ' . mysql_error());}
  5. /* ********************************************** */
  6. /* CONECTA CON LA BASE DE DATOS  **************** */
  7.    $database = mysql_select_db("despliegate",$con);
  8.    if (!$database){die('ERROR CONEXION CON BD: '.mysql_error());}
  9. /* ********************************************** */
  10. //REALIZAR CONSULTA
  11. $sql = "INSERT INTO usuarios(id_usuario, nombre, nick, apellidos, email, contrasena) VALUES  
  12.            (
  13.            
  14.             '".NULL."',
  15.            '".$_POST['nombre']."',
  16.            '".$_POST['nick']."',
  17.            '".$_POST['apellidos']."',
  18.            '".$_POST['email']."',
  19.            '".$_POST['contrasena']."'
  20.            
  21.            )";
  22.                 $result = mysql_query($sql);
  23.                 if (! $result){
  24.                                echo "La consulta SQL contiene errores.".mysql_error();
  25.                                exit();
  26.                 }else {echo "<center><font color='RED'>DATOS INSERTADOS CORRECTAMENTE</font><a
  27. ref=/paginas/prueba/index.html>Volver</a&gt;'";
  28.                 }
  29. ?>

Gracias a todos por adelantado
  #2 (permalink)  
Antiguo 07/01/2015, 16:53
Avatar de Djoaq  
Fecha de Ingreso: septiembre-2012
Ubicación: Barcelona
Mensajes: 271
Antigüedad: 11 años, 6 meses
Puntos: 38
Respuesta: Evitar insertar datos vacios en mysql

Podrias confirmar con php , escribo desde el móvil asi que poner código es un poco incómodo pero podrias hacer algo como if(var!="") y compruebas , también desde MySQL puedes marcar las cols que sean con la propiedad not null.
Un saludo!
  #3 (permalink)  
Antiguo 07/01/2015, 17:08
Avatar de dmrx921  
Fecha de Ingreso: enero-2015
Mensajes: 35
Antigüedad: 9 años, 3 meses
Puntos: 0
Respuesta: Evitar insertar datos vacios en mysql

Las columnas ya son todas not null por eso me extraña que se rellenen enviando campos vacios, provare el if(var!="") haber si consigo algo...
  #4 (permalink)  
Antiguo 07/01/2015, 17:22
Avatar de dmrx921  
Fecha de Ingreso: enero-2015
Mensajes: 35
Antigüedad: 9 años, 3 meses
Puntos: 0
Respuesta: Evitar insertar datos vacios en mysql

Tema solucionado cree un simple if con su else que comprueba que los campos no sean null dejo el codigo por si le interesa a alguien:

Código PHP:
Ver original
  1. <?php
  2. if($_POST['nombre'] == NULL or  $_POST['nick'] == NULL or $_POST['apellidos'] == NULL or $_POST['email'] == NULL or $_POST['contrasena'] == NULL)
  3. {
  4.    
  5.     echo "lo siento pero envio campos vacios";
  6. }
  7. else
  8. {
  9.     //envio del correo
  10.  
  11. /* CONECTAR CON BASE DE DATOS **************** */  
  12.    $con = mysql_connect('localhost','root','dmrx921');
  13.    if (!$con){die('ERROR DE CONEXION CON MYSQL: ' . mysql_error());}
  14. /* ********************************************** */
  15. /* CONECTA CON LA BASE DE DATOS  **************** */
  16.    $database = mysql_select_db("despliegate",$con);
  17.    if (!$database){die('ERROR CONEXION CON BD: '.mysql_error());}
  18. /* ********************************************** */
  19. //REALIZAR CONSULTA
  20. $sql = "INSERT INTO usuarios(id_usuario, nombre, nick, apellidos, email, contrasena) VALUES  
  21.            (
  22.            
  23.             '".NULL."',
  24.            '".$_POST['nombre']."',
  25.            '".$_POST['nick']."',
  26.            '".$_POST['apellidos']."',
  27.            '".$_POST['email']."',
  28.            '".$_POST['contrasena']."'
  29.            
  30.            )";
  31.                 $result = mysql_query($sql);
  32.                 if (! $result){
  33.                                echo "La consulta SQL contiene errores.".mysql_error();
  34.                                exit();
  35.                 }else {echo "<center><font color='RED'>DATOS INSERTADOS CORRECTAMENTE</font><a
  36. ref=/paginas/prueba/index.html>Volver</a&gt;'";
  37.    } }            
  38. ?>
  #5 (permalink)  
Antiguo 08/01/2015, 09:40
Avatar de elporfirio  
Fecha de Ingreso: octubre-2013
Mensajes: 37
Antigüedad: 10 años, 6 meses
Puntos: 4
Respuesta: Evitar insertar datos vacios en mysql



Cuestionamientos
una cosa es vacío y otra cosa es null
"" != null aunque algunas librerías hacen que funcionen igual. En fin imagínate cuando tengas 50 campos y estarlos comparando seria una barbarie.

Y si te envío un vacío me vas a regresar al formulario ? donde probablemente se borren los otros 49 que me hiciste poner ?

Comentarios Finales
Solo ten en cuenta eso, y considera hacer tu validación recursiva para que soporte X cantidad de campos.

Y como siempre digo el metodo mysql_query() y semejantes ya estan obsoletos, cambiate a PDO.


Guia para cambiar de MySQL_Query() a PDO
http://elporfirio.com/wp/2014/12/conectarse-a-la-base-de-datos-con-php-y-pdo/

__________________
visita http://elporfirio.com o habrá tabla ¬¬
  #6 (permalink)  
Antiguo 08/01/2015, 09:58
 
Fecha de Ingreso: julio-2013
Ubicación: Durango, Dgo
Mensajes: 108
Antigüedad: 10 años, 9 meses
Puntos: 8
Respuesta: Evitar insertar datos vacios en mysql

También pudiste haber validado el formulario para que no se enviara si uno de los campos no estaba completo.

saludos
  #7 (permalink)  
Antiguo 08/01/2015, 12:03
Avatar de dmrx921  
Fecha de Ingreso: enero-2015
Mensajes: 35
Antigüedad: 9 años, 3 meses
Puntos: 0
Respuesta: Evitar insertar datos vacios en mysql

Cita:
Iniciado por elporfirio Ver Mensaje


Cuestionamientos
una cosa es vacío y otra cosa es null
"" != null aunque algunas librerías hacen que funcionen igual. En fin imagínate cuando tengas 50 campos y estarlos comparando seria una barbarie.

Y si te envío un vacío me vas a regresar al formulario ? donde probablemente se borren los otros 49 que me hiciste poner ?

Comentarios Finales
Solo ten en cuenta eso, y considera hacer tu validación recursiva para que soporte X cantidad de campos.

Y como siempre digo el metodo mysql_query() y semejantes ya estan obsoletos, cambiate a PDO.


Guia para cambiar de MySQL_Query() a PDO
http://elporfirio.com/wp/2014/12/conectarse-a-la-base-de-datos-con-php-y-pdo/

Gracias por todo, respecto a PDO eso que es y que aporta frente a mysql yo es el único que conocía y siempre lo e visto asi en los ejemplos que e visto?

Etiquetas: formulario, html, mysql, registro, select, sql, tabla, usuarios, vacios
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 03:10.