Ver Mensaje Individual
  #1 (permalink)  
Antiguo 07/06/2008, 06:36
Sancas
 
Fecha de Ingreso: marzo-2008
Mensajes: 96
Antigüedad: 16 años, 2 meses
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