Foros del Web » Programando para Internet » PHP »

[SOLUCIONADO] Error al insertar registro en tabla

Estas en el tema de Error al insertar registro en tabla en el foro de PHP en Foros del Web. Buenas a todos. Practicando con mysqli me he encontrado con un problema. intento añadir unos datos que vienen de un formulario a una tabla. los ...
  #1 (permalink)  
Antiguo 10/04/2014, 09:22
Avatar de rodrypaladin
Moderador
 
Fecha de Ingreso: abril-2010
Ubicación: Madrid
Mensajes: 2.127
Antigüedad: 14 años
Puntos: 468
Error al insertar registro en tabla

Buenas a todos. Practicando con mysqli me he encontrado con un problema.

intento añadir unos datos que vienen de un formulario a una tabla. los relleno, envio el formulario y me dice que se ha añadido el registro correctamente pero entro en la bd y veo que si que se ha añadido, pero cada campo está en BLANCO!! es decir, VACIO.

Código PHP:
Ver original
  1. <?php
  2.  
  3. //datos de la base de datos...
  4. $host = "localhost";
  5. $user = "root";
  6. $pass = "";
  7. $dbname = "prueba";
  8.  
  9. /*
  10. Datos de la tabla:
  11. id, nombre, password, email, fechareg
  12. */
  13.  
  14. //conectamos a la bd:
  15. $conexion = mysqli_connect($host, $user, $pass) or die("Error al conectar al servidor: " . mysqli_error($conexion));
  16. mysqli_select_db($conexion, $dbname) or die("Error al conectar a la BD.");
  17.  
  18. //datos que vienen del formulario
  19. $nombre = isset($_POST["nombre"]);
  20. $email = isset($_POST["email"]);
  21. $password = isset($_POST["password"]);
  22. $fechareg = date("j, n, Y");
  23.  
  24.  
  25. $insertar = mysqli_query($conexion, "INSERT INTO usuarios (id, nombre, password, email, fechareg) VALUES (NULL, '$nombre', '$password', '$email', '$fechareg')");
  26. if (!$insertar) {
  27.     echo "Error al guardar";
  28. } else {
  29.     echo "Guardado con exito";
  30. }
  31. mysqli_close($conexion);
  32.  
  33. ?>

La verdad es que no se que estoy haciendo mal!!

Probé a modificar la sentencia sql dejandola de esta forma pero en vez de añadirse en blanco simplemente salta el error de que no se puede añadir.
Código PHP:
Ver original
  1. $insertar = mysqli_query($conexion, "INSERT INTO usuarios (id, nombre, password, email, fechareg) VALUES (NULL, $nombre, $password, $email, $fechareg)");
__________________
No te olvides de dar +1 a quien te echa un cable ;)
  #2 (permalink)  
Antiguo 10/04/2014, 11:21
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, 5 meses
Puntos: 2658
Respuesta: Error al insertar registro en tabla

Cita:
La verdad es que no se que estoy haciendo mal!!
Por lo pronto, los valores en el VALUES que corresponden a cadenas de texto deben siempre quedar entre apóstrofos. De lo contrario los interpretará como nombres de columnas de una tabla, que no es el caso.
Código MySQL:
Ver original
  1. $sql = "INSERT INTO usuarios (nombre, password, email, fechareg) ";
  2. $sql .= "VALUES ('$nombre', '$password', '$email', '$fechareg')";
  3.  
  4. $insertar = mysqli_query($conexion, $sql);
Además, si las fechas en la tabla son DATE o DATETIME, debes tener en cuenta que el formato esperado es AAAA-MM-DD. Si pones otro tendrás problemas.
Nota: NUNCA se usan VARCHAR para guardar las fechas. es más simple luego en la consulta darle el formato deseado, por ejemplo, DD/MM/AAAA.
__________________
¿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 10/04/2014, 11:27
Avatar de rodrypaladin
Moderador
 
Fecha de Ingreso: abril-2010
Ubicación: Madrid
Mensajes: 2.127
Antigüedad: 14 años
Puntos: 468
Respuesta: Error al insertar registro en tabla

En el campo fechareg es un campo tipo date,

Al enviar el formulario me aparece que se ha enviado con éxito pero entro a la BD y me aparece esa linea del registro añadido totalmente en blanco, igual que comentaba antes, es decir, se añade el registro, pero los campos están en blanco excepto el de fecha que aparece 000-00-00
__________________
No te olvides de dar +1 a quien te echa un cable ;)

Última edición por rodrypaladin; 10/04/2014 a las 11:33
  #4 (permalink)  
Antiguo 10/04/2014, 11:39
Avatar de Alexis88
Philosopher
 
Fecha de Ingreso: noviembre-2011
Ubicación: Tacna, Perú
Mensajes: 5.552
Antigüedad: 12 años, 5 meses
Puntos: 977
Respuesta: Error al insertar registro en tabla

Me parece que cometes un error al usar la función isset, pues esta devuelve true o false, mas no el valor de la variable. En su lugar y por seguridad, sería conveniente que a cada uno de los valores recibidos, les apliques las funciones strip_tags y mysqli_real_escape_string para evitar posibles ataques XSS y de SQL Injection.

Y para comprobar que las variables están definidas, podrías hacerlo así:

Código PHP:
Ver original
  1. $nombre = isset($_POST["nombre"]) ? $_POST["nombre"] : null;

Saludos
__________________
«Juro por mi vida y mi amor por ella, que jamás viviré para el provecho de otro hombre, ni le pediré a otro hombre que viva para el mío».

Ayn Rand

Última edición por Alexis88; 10/04/2014 a las 11:46
  #5 (permalink)  
Antiguo 10/04/2014, 12:02
Avatar de rodrypaladin
Moderador
 
Fecha de Ingreso: abril-2010
Ubicación: Madrid
Mensajes: 2.127
Antigüedad: 14 años
Puntos: 468
Respuesta: Error al insertar registro en tabla

he conseguido que se añadan todos los campos menos el de la fecha, almenos es un avance.

modifiqué el código hasta dejarlo de esta manera:

Código PHP:
Ver original
  1. <?php
  2.  
  3. //datos de la base de datos...
  4. $host = "localhost";
  5. $user = "root";
  6. $pass = "";
  7. $dbname = "prueba";
  8.  
  9. /*
  10. Datos de la tabla:
  11. id, nombre, password, email, fechareg
  12. */
  13.  
  14. //conectamos a la bd:
  15. $conexion = mysqli_connect($host, $user, $pass) or die("Error al conectar al servidor: " . mysqli_error($conexion));
  16. mysqli_select_db($conexion, $dbname) or die("Error al conectar a la BD.");
  17.  
  18. //datos que vienen del formulario
  19. $nombre = $_POST["nombre"];
  20. $email = $_POST["email"];
  21. $password = $_POST["password"];
  22. $fechareg = date("j, n, Y");
  23.  
  24. $nombre =  mysqli_real_escape_string($conexion, $nombre);
  25. $email =  mysqli_real_escape_string($conexion, $email);
  26. $password =  mysqli_real_escape_string($conexion, $password);
  27.  
  28. $sql = "INSERT INTO usuarios (nombre, password, email, fechareg) ";
  29. $sql .= "VALUES ('$nombre', '$password', '$email', '$fechareg')";
  30. $insertar =  mysqli_query($conexion, $sql);
  31. if (!$insertar) {
  32.     echo "Error al guardar" . mysql_error($insertar);
  33. } else {
  34.     echo "Guardado con exito";
  35. }
  36. mysqli_close($conexion);
  37.  
  38. ?>
__________________
No te olvides de dar +1 a quien te echa un cable ;)
  #6 (permalink)  
Antiguo 10/04/2014, 12:04
Avatar de Alexis88
Philosopher
 
Fecha de Ingreso: noviembre-2011
Ubicación: Tacna, Perú
Mensajes: 5.552
Antigüedad: 12 años, 5 meses
Puntos: 977
Respuesta: Error al insertar registro en tabla

¿Y por qué no mejor guardas la fecha en el formato tradicional AÑO-MES-DÍA y cuando vayas a mostrar los datos, le das el formato deseado?
__________________
«Juro por mi vida y mi amor por ella, que jamás viviré para el provecho de otro hombre, ni le pediré a otro hombre que viva para el mío».

Ayn Rand
  #7 (permalink)  
Antiguo 10/04/2014, 12:06
Avatar de rodrypaladin
Moderador
 
Fecha de Ingreso: abril-2010
Ubicación: Madrid
Mensajes: 2.127
Antigüedad: 14 años
Puntos: 468
Respuesta: Error al insertar registro en tabla

Cita:
Iniciado por Alexis88 Ver Mensaje
¿Y por qué no mejor guardas la fecha en el formato tradicional AÑO-MES-DÍA y cuando vayas a mostrar los datos, le das el formato deseado?
Tan solo intentaba guardar la fecha actual en la bd, solo por guardar un dato más con el que nunca había trabajado, pero se me guarda 000-00-00.

Siento q mis conocimientos no sean muy fluidoss, en ello trabajo XD
__________________
No te olvides de dar +1 a quien te echa un cable ;)
  #8 (permalink)  
Antiguo 10/04/2014, 12:08
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, 5 meses
Puntos: 2658
Respuesta: Error al insertar registro en tabla

Código PHP:
Ver original
  1. date("Y-m-d")
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)

Última edición por gnzsoloyo; 10/04/2014 a las 12:14
  #9 (permalink)  
Antiguo 10/04/2014, 12:12
Avatar de Alexis88
Philosopher
 
Fecha de Ingreso: noviembre-2011
Ubicación: Tacna, Perú
Mensajes: 5.552
Antigüedad: 12 años, 5 meses
Puntos: 977
Respuesta: Error al insertar registro en tabla

Particularmente, cuando guardo la fecha actual en la BD, lo hago con el formato clásico, es decir:

Código PHP:
Ver original
  1. date("Y-m-d");

Ya luego, cuando hago una consulta para mostrar los datos de un registro, le doy el formato que deseo mediante los parámetros indicados aquí.

Inténtalo así y dinos como te fue.

Saludos
__________________
«Juro por mi vida y mi amor por ella, que jamás viviré para el provecho de otro hombre, ni le pediré a otro hombre que viva para el mío».

Ayn Rand
  #10 (permalink)  
Antiguo 10/04/2014, 12:15
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, 5 meses
Puntos: 2658
Respuesta: Error al insertar registro en tabla

También puedes hacer que la tome del propio MySQL:
Código php:
Ver original
  1. $sql = "INSERT INTO usuarios (nombre, password, email, fechareg) ";
  2. $sql .= "VALUES ('$nombre', '$password', '$email',CURDATE())";
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #11 (permalink)  
Antiguo 10/04/2014, 12:16
Avatar de rodrypaladin
Moderador
 
Fecha de Ingreso: abril-2010
Ubicación: Madrid
Mensajes: 2.127
Antigüedad: 14 años
Puntos: 468
Respuesta: Error al insertar registro en tabla

Muuuchíiisimas gracias, se añaden todos los datos INCLUIDA la fecha por fin correctamente ;)
__________________
No te olvides de dar +1 a quien te echa un cable ;)

Etiquetas: fecha, formulario, mysql, registro, select, sql, tabla, 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 17:04.