Foros del Web » Programando para Internet » PHP »

[SOLUCIONADO] Me aparece fecha 0000-00-00

Estas en el tema de Me aparece fecha 0000-00-00 en el foro de PHP en Foros del Web. Hola amigos. Estoy creando una web con interaccion PHP con la base de datos. Es una pagina la cual me registro con un nombre de ...
  #1 (permalink)  
Antiguo 25/03/2014, 06:44
 
Fecha de Ingreso: febrero-2014
Mensajes: 60
Antigüedad: 10 años, 1 mes
Puntos: 0
Me aparece fecha 0000-00-00

Hola amigos.
Estoy creando una web con interaccion PHP con la base de datos.

Es una pagina la cual me registro con un nombre de usuario, contraseña y correo.

Bien una vez me registro, esto se guarda en la base de datos (mail, pass, nick, ip, fecha, etc.)

El caso es, que cuando me voy a la base de datos para ver los usuarios registrados, la fecha me aparece en todos como 0000-00-00. Y yo quiero que se vea la fecha correcta.

La fecha es un tipo de dato DATE.

Espero haberme explicado bien. Gracias!
  #2 (permalink)  
Antiguo 25/03/2014, 07:03
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: Me aparece fecha 0000-00-00

Es altamente probable que sea un error de formato de fecha, al momento del INSERT. Especialmente si el formato e representación de la fecha se manipula como cadena de texto desde el lenguaje de programación.
La fecha debe forzosamente tener el formato ANSI, usando en forma generica en las BBDD: "AAAA-MM-DD"
Lo que hay que tener cuidado al momento de programar es que la misma quede en el VALUES encerrada correctamente entre apóstrofos, ya que de lo contrari opuede traer ese tipo de problemas

Bien:
Código MySQL:
Ver original
  1. ...
  2. VALUES('[email protected]', 'passworddelusuario', 'nickusuario', '10.0.0.102', '2014-03-25', ...);
  3.  
  4. ...
  5. VALUES('[email protected]', 'passworddelusuario', 'nickusuario', '10.0.0.102', DATE('2014-03-25'), ...);
  6.  
  7. ...
  8. VALUES('[email protected]', 'passworddelusuario', 'nickusuario', '10.0.0.102', STR_TO_DATE('25/03/2014', '%d/%m/%Y'), ...);
Mal:
Código MySQL:
Ver original
  1. VALUES('[email protected]', 'passworddelusuario', 'nickusuario', '10.0.0.102', '25-03-2014', ...);
  2.  
  3. ...
  4. VALUES('[email protected]', 'passworddelusuario', 'nickusuario', '10.0.0.102', 2014-03-25, ...);
  5.  
  6. ...
  7. VALUES('[email protected]', 'passworddelusuario', 'nickusuario', '10.0.0.102', 25/03/2014, ...);
__________________
¿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; 25/03/2014 a las 07:08
  #3 (permalink)  
Antiguo 25/03/2014, 11:00
 
Fecha de Ingreso: febrero-2014
Mensajes: 60
Antigüedad: 10 años, 1 mes
Puntos: 0
Respuesta: Me aparece fecha 0000-00-00

Antes que nada, yo estoy haciendo esta pagina de registro de usuarios por medio de un manual, no es cosecha propia.

La cosa es que yo estoy insertando la fecha, nick, email, etc. por medio de variables php.

Este es el codigo PHP de registro.php:

Código PHP:
<?php
include("includes/funciones.php");
    if(isset(
$_POST['registro']))
    {
        if((
$_POST['nick'] != '') && ($_POST['mail'] != '')
        && (
$_POST['pass'] != '') && ($_POST['conf_pass'] != ''))
        {
            if(
$_POST['pass'] != $_POST['conf_pass'])
            {
                echo 
'<p class="resultado"><span class="error">Las contraseñas no coinciden</span></p>';
            }else{
                
$datetime();
                
$nicklimpiar($_POST['nick']);
                
$maillimpiar($_POST['mail']);
                
$passmd5(md5(limpiar($_POST['pass'])));
                
$ipuser$_SERVER['REMOTE_ADDR'];
                
$b_usermysql_query("SELECT nick FROM usuarios WHERE nick='$nick'");
                if(
$user=@mysql_fetch_array($b_user))
                {
                    echo 
'<p class="resultado"><span class="advertencia">El nombre de usuario o email ya esta registrado.</span></p>';
                    
mysql_free_result($b_user);
                } else {
                    if(
validar_email($_POST['mail']))
                    {
                        
mysql_query("INSERT INTO usuarios (fecha,nick,mail,pass,ip) values ('$date','$nick','$mail','$pass','$ipuser')");
                        echo 
'<p class="resultado"><span class="ok">Te has registrado correctamente, ahora podras iniciar sesión como usuario registrado.</span></p>';
                    } else {
                        echo 
'<p class="resultado"><span class="error">El email no es válido.</span></p>';
                    }
                }
            }
        } else {
            echo 
'<p class="resultado"><span class="advertencia">Deberas llenar todos los campos.</span></p>';
        }
    }
?>
Si observas, la variable $date igual a time();

Puede que esa variable sea el motivo de que la fecha aparezca con ceros?
  #4 (permalink)  
Antiguo 25/03/2014, 11:30
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: Me aparece fecha 0000-00-00

Movido a PHP.

Cita:
Puede que esa variable sea el motivo de que la fecha aparezca con ceros?
Exactamente. Tu estás suponiendo que la funcion time() devuelve un Datetime que MySQL pueda usar, y que MySQL "dialoga" con PHP. Ninguna de las dos cosas es cierta.
MySQL no entiende las variables de PHP. A la base llega una cadena de texto con la consulta. No es lo mismo.

Si te tomas el trabajo de hacer un echo a la query que se genera verás que debe estar poniendo '03-25-2014', lo que es inaceptable para MySQL.

Deberías usar date_format()

Pruebalo así y veamos:

Código PHP:
Ver original
  1. $date = date_format(time(),"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)
  #5 (permalink)  
Antiguo 25/03/2014, 12:27
 
Fecha de Ingreso: febrero-2014
Mensajes: 60
Antigüedad: 10 años, 1 mes
Puntos: 0
Respuesta: Me aparece fecha 0000-00-00

He puesto dicho codigo que mencionas, y el resultado sigue siendo el mismo, la fecha sigue siendo 0000-00-00.

Pero esta vez, a la hora de registrarme, me salta el siguiente aviso:

Warning: date_format() expects parameter 1 to be DateTime, integer given in C:\xampp\htdocs\ejercicio-registro-usuarios\registro.php on line 12
  #6 (permalink)  
Antiguo 25/03/2014, 12:41
Avatar de KATHYU  
Fecha de Ingreso: julio-2013
Mensajes: 547
Antigüedad: 10 años, 9 meses
Puntos: 46
Respuesta: Me aparece fecha 0000-00-00

Ese warning indica que el form esta esperando un parametro y que no le llego o esta en otro formato !!!
__________________
Al contrario de lo que muchos podrían afirmar, ayudar no te hace pobre, sino más rico.
  #7 (permalink)  
Antiguo 25/03/2014, 12:48
 
Fecha de Ingreso: febrero-2014
Mensajes: 60
Antigüedad: 10 años, 1 mes
Puntos: 0
Respuesta: Me aparece fecha 0000-00-00

Cita:
Iniciado por KATHYU Ver Mensaje
Ese warning indica que el form esta esperando un parametro y que no le llego o esta en otro formato !!!
Un parametro como este por ejemplo?

Código PHP:
$datedate_format(time('%Y,%m,%d'),"Y-m-d"); 
  #8 (permalink)  
Antiguo 25/03/2014, 13:05
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: Me aparece fecha 0000-00-00

Código PHP:
Ver original
  1. $date= date('Y-m-d', time());
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #9 (permalink)  
Antiguo 25/03/2014, 13:42
 
Fecha de Ingreso: febrero-2014
Mensajes: 60
Antigüedad: 10 años, 1 mes
Puntos: 0
Respuesta: Me aparece fecha 0000-00-00

Cita:
Iniciado por gnzsoloyo Ver Mensaje
Código PHP:
Ver original
  1. $date= date('Y-m-d', time());
Efectivamente!! ahora si que me ha funcionado!! Mil gracias
  #10 (permalink)  
Antiguo 25/03/2014, 14:22
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: Me aparece fecha 0000-00-00

Me alegra que funcionara (el tema me va a ayudar con otro post en el que estaba trabajando con el forista)...
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)

Etiquetas: fecha, mysql, registro, 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:07.