Foros del Web » Programando para Internet » PHP »

Update fecha en MySql

Estas en el tema de Update fecha en MySql en el foro de PHP en Foros del Web. Hola a todos: En la tabla de usuarios de mi BD tengo dos campos: Ult_Visita y Actual. Esto me sirve para indicar cuando fue la ...
  #1 (permalink)  
Antiguo 07/06/2008, 06:36
 
Fecha de Ingreso: marzo-2008
Mensajes: 96
Antigüedad: 16 años, 1 mes
Puntos: 0
Update fecha en MySql

Hola a todos:
En la tabla de usuarios de mi BD tengo dos campos: Ult_Visita y Actual.
Esto me sirve para indicar cuando fue la última visita del usuario y se muestra cuando se logea.

Si es su primera visita, ambos campos serán nulos, actualizo el registro dándole a Actual el valor de now()
Y le informo de que es su primera visita (en ese momento el campo Ult_Visita es null)

Si no es su primera visita el campo actual ya tiene una fecha y hora dadas, (compruebo si Actual está vacío o no)
Al logearse, la fecha que estaba en Actual pasa a Ult_Visita y le actualizo de nuevo el campo Actual dándole now()

Es un método sencillo y fiable, cuando se loguea le muestro el campo Ult_Visita.

El problema me viene cuando quiero actualizar la Ult_Visita pasándole el valor que contiene el campo Actual.
He usado varios métodos diferentes pero lo que suelo conseguir es que me actualice Ult_Visita con esto: 00-00-0000 00:00:00
Os pongo ejemplos de códigos que he usado y ninguno me da resultado:
Código PHP:
//Nos logeamos
$sql mysql_query("Select * From Usuarios where User='$user' and Pass='$pass'");
if (
$row mysql_fetch_array ($sql))
{
//Miramos si es su primera visita
if($row["Actual"]=="")
{
$sql2 "UPDATE Usuarios SET Actual=now() where User='".$row["User"]."'";
}else{
//Si salta aquí es que no es su primera visita
$sql2 "UPDATE Usuarios SET Ult_Visita='".$row["Actual"]."' and Actual=now() where User='".$row["User"]."'";
}
if (!
mysql_query($sql2))
  {
  die(
'Error: ' mysql_error());
  }

}else{
//Código que saco en caso de que no se haya logeado correctamente

En este otro ejemplo en vez de pasarle $row["Actual"] hago una función para sacar con mktime la hora.
Código PHP:
//Nos logeamos
$sql mysql_query("Select * From Usuarios where User='$user' and Pass='$pass'");
if (
$row mysql_fetch_array ($sql))
{
//Miramos si es su primera visita
if($row["Actual"]=="")
{
$sql2 "UPDATE Usuarios SET Actual=now() where User='".$row["User"]."'";
}else{
//Si salta aquí es que no es su primera visita
$sql2 "UPDATE Usuarios SET Ult_Visita=".obtener_fecha($row["Actual"])." and Actual=now() where User='".$row["User"]."'";
}
if (!
mysql_query($sql2))
  {
  die(
'Error: ' mysql_error());
  }

}else{
//Código que saco en caso de que no se haya logeado correctamente
}

//Funcion mktime
function obtener_fecha($fecha)
{
$f=explode("-",$fecha);
$dia=explode(" ",$f[2]);
$h=explode(":",$dia[1]);
$fecha=mktime($h[0], $h[1], $h[2], $f[1], $dia[0], $f[0]);
return 
$fecha;

En otra ocasión, quitando las comillas simples donde actualizo Ult_Visita y le paso la Actual, conseguí que me pasara bien la fecha-hora, pero al haber un espacio entre la fecha y la hora, cascaba...

Alguien tiene una solución en mente?

Un saludo a todos y gracias
  #2 (permalink)  
Antiguo 07/06/2008, 10:13
 
Fecha de Ingreso: marzo-2008
Mensajes: 96
Antigüedad: 16 años, 1 mes
Puntos: 0
Respuesta: Update fecha en MySql

No quiero ser pesado, pero... Seguro que a nadie se le ocurre como solucionarlo?
Si le paso el valor de $row["Actual"] a una variable y meto la variable en la sql, la sintaxis al parecer está bien, pero no me lo actualiza, me actualiza todo a ceros y tampoco me actualiza el now() (hablo de la segunda opcion de $sql2.

Saludos.
  #3 (permalink)  
Antiguo 07/06/2008, 10:25
Avatar de Carlojas  
Fecha de Ingreso: junio-2007
Ubicación: Shikasta
Mensajes: 1.272
Antigüedad: 16 años, 10 meses
Puntos: 49
Respuesta: Update fecha en MySql

Hola Sancas, revisa que no tengas errores en tu consulta

Código PHP:
$sql mysql_query("Select * From Usuarios where User='$user' and Pass='$pass'") or die( mysql_error() ); 
Pues es muy raro que no te actualize.


Saludos.
  #4 (permalink)  
Antiguo 07/06/2008, 10:58
 
Fecha de Ingreso: marzo-2008
Mensajes: 96
Antigüedad: 16 años, 1 mes
Puntos: 0
Respuesta: Update fecha en MySql

Cita:
Iniciado por Carlojas Ver Mensaje
Hola Sancas, revisa que no tengas errores en tu consulta

Código PHP:
$sql mysql_query("Select * From Usuarios where User='$user' and Pass='$pass'") or die( mysql_error() ); 
Pues es muy raro que no te actualize.


Saludos.

Hola Carlojas, gracias por responder.
Esa consulta está bien, porque me funciona siempre, lo de las fechas lo he metido ahora, y me sigue accediendo al área privada, pero no consigo que me actualize.
Además, la $sql2 de la primera parte del IF si funciona, pero la $sql2 de la segunda parte (la del ELSE) no consigo que funcione: ni me guarda bien la fecha-hora en Ult_Visita ni consigo actualizar Actual con now() lo cual es muy raro, ya que cuando es nulo (primera visita) se introduce el now() a la perfección.

Saludos!
  #5 (permalink)  
Antiguo 07/06/2008, 11:35
 
Fecha de Ingreso: marzo-2008
Mensajes: 96
Antigüedad: 16 años, 1 mes
Puntos: 0
Respuesta: Update fecha en MySql

Siento el doble post, amigos, pero ya he descubierto el problema.
No se trataba de en qué formato pasaba la fecha, sino en la sintaxis de la $sql2.
La tenía así:
Código PHP:
$sql2 "UPDATE Usuarios SET Ult_Visita='".$row["Actual"]."' and Actual=now() where User='".$row["User"]."'"
Y en todo caso debería ser así:
Código PHP:
$sql2 "UPDATE Usuarios SET Ult_Visita='".$row["Actual"]."' , Actual=now() where User='".$row["User"]."'"
Es decir: en vez de AND, poner una COMA

Ya me estaba volviendo loco...

En fin, muchas gracias a Carlojas por preocuparse.

Un saludo!
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 08:52.