Ver Mensaje Individual
  #2  
Antiguo 28-10-2006
Avatar de D-MO
D-MO D-MO is offline
Miembro
 
Registrado: ago 2005
Ubicación: root@debian:/#
Posts: 1.042
Reputación: 20
D-MO Va por buen camino
Cita:
Empezado por elcigarra
a) Lo inicial y obvio. No tengo idea como obtener la fecha del sistema del usuario con php.
Lo veo muy dificil, por no decir imposible, ya que php toma la hora del servidor.
Las alternativas que veo son las siguiente:
  • Que el conozcas algunos datos del usuario, tales como la zona horaria de este, así cada vez que decida ver un evento, se hará una suma/resta a la hora/fecha del servidor dependeiendo de la ubicación de este. Para hacer esto es necesario que sea un usuario registrado y durante el registro deberás pedirle este dato.
  • Hacer uso de Ajax de la siguiente forma:
    • El usuario entra a la web y con javascript tomas la hora del sistema.
    • Luego envías esta hora a tu script php y este se encargará de hacer las comparaciones.
    • Hechas las comparaciones muestras el texto que indique el estado del evento.
Cita:
Empezado por elcigarra
b) No tengo idea como comparar estos datos de texto de la tabla con esta fecha luego de obtenida.
Todo dependería de que formato tendrán las fechas, por ejemplo, si la fecha de inicio del evento es "1 de noviembre de 2006" y la de fin del evento es "5 de noviembre de 2006", podríamos hacer algo como esto:
Código PHP:
<?php
$fecha_inicio
'1 november 2006';//Colocamos la fecha de inicio
$fecha_fin '5 november 2006';//y la fecha de finalización

$fecha_actual time(); //Tomamos la fecha actual (del servidor)

?>
Ahora debemos comparar que la fecha actual se encuentra dentro de el rango especificado por las variables "$fecha_inicio" y "$fecha_fin", para lo cual convertiremos estos datos en TimeStamps de Unix con la función strtotime():
Código PHP:
<?php 
$finicio 
strtotime($fecha_inicio);
$ffin strtotime($fecha_fin);

if(
$fecha_actual>=$finicio){
   if(
$fecha_actual<=$ffin){
      
///---El evento está activo
   
} else {
      
///---El evento ya finalizo
   
}
} else{
   
///---El evento no ha iniciado
}
?>
Cita:
Empezado por elcigarra
c) No sé si es posible asegurar la fecha verdadera más allá de que el usuario tenga una fecha equivocada en su sistema (Si no se puede, con la fecha del sistema estaría bien igual).
En este caso, bastaría con que revisaras si la fecha está en el rango -12,+12 horas de la fecha del servidor, ya que no puede tener una fecha con 12 horas de adelanto o atraso a la de este.

Pues no se me ocurre nada mas, talvés porque aquí es la 1:00 de la mañana, espero haberte ayudado en algo.

Saludos.
Responder Con Cita