Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Otros entornos y lenguajes > PHP
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 28-10-2006
elcigarra elcigarra is offline
Miembro
 
Registrado: may 2005
Posts: 269
Poder: 19
elcigarra Va por buen camino
fechas y datos MySql

Hola, amigos.
Estoy haciendo una página php que va a listar eventos. Para ello los eventos van a estar en una tabla MySQL y van a tener, entre otras cosas dos campos con la fecha de inicio y la fecha de finalización de cada evento.

El asunto es que para facilitar la entrada de datos (de los eventos) los campos fecha los hice de tipo VARCHAR ya que el usuario hacía click sobre un calendario y la fecha le quedaba escrita (para evitar errores), eso iba directamente a la base de datos.

En la página del listado quiero saber donde estamos temporalmente, es decir, necesito comparar estas fechas (o más bien textos que representan fechas) con la fecha actual y saber si ya pasaron o entan ocurriendo en este momento (o sea que hoy estámos entre la FechaInicio y la FechaFin). Cuando fuí a hacerlo me encontré con tres problemas que son los que les transmito ahora:

a) Lo inicial y obvio. No tengo idea como obtener la fecha del sistema del usuario con php.

b) No tengo idea como comparar estos datos de texto de la tabla con esta fecha luego de obtenida.

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).
Responder Con Cita
  #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
Poder: 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
  #3  
Antiguo 28-10-2006
elcigarra elcigarra is offline
Miembro
 
Registrado: may 2005
Posts: 269
Poder: 19
elcigarra Va por buen camino
Para facilitar y al mismo tiempo para complicar:

La página es turística y local por lo que la única fecha que importa es la del Uruguay (que es el país donde se realizan los eventos). No importa que el usuario esté en españa si aquí se realiza el evento el 5 de noviembre, es el 5 de noviembre de uruguay. Yo sé que estoy muy atrás en conocimientos pero para saber la fecha y hora del uruguay? Yo tengo un hosting pago y ni siquiera sé donde está el servidor. Podría preguntar donde está, pero no es posible obtener la fecha y hora local independientemente de todo (es decir, del servidor y del usuario)?

Y la otra complicación:
La función StrToTime convierte cualquier formato en fecha?, porque yo tengo un script que convierte las fechas en texto de formato DD/MM/AAAA. No hay confusiones si el mes está antes de día o si es "5 de Noviembre de 2006" y eso? Qué tan astuta puede ser esta función?
Responder Con Cita
  #4  
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
Poder: 20
D-MO Va por buen camino
Para lo primero, puedes hacer lo siguiente:
  • Haz un script que te muestre la hora del servidor y comparala con la hora de Uruguay
  • Calcula la diferencia de horario
  • cada vez que se visualice la hora en la página web sumale/restale la diferencia del horario para mostrar la hora real
y, para lo segundo:
La función strtotime acepta únicamente fechas en formato inglés, por lo que identificaría "1 november 2006" pero no "1 de noviembre de 2006", pero puedes hacer una función que te traduzca el texto reemplazando "de noviembre de" por "november" y asunto arreglado .

Revisa la información de la función strtotime en el manual que se encuentra en el sitio web oficial de php.

Saludos.
Responder Con Cita
  #5  
Antiguo 28-10-2006
elcigarra elcigarra is offline
Miembro
 
Registrado: may 2005
Posts: 269
Poder: 19
elcigarra Va por buen camino
Gracias, Darwin
Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
Formato de fechas en mysql seduerey MySQL 6 02-07-2007 09:53:31
Datos de archivos, fechas y conversiones... mjuan OOP 1 04-05-2006 14:07:07
Insertar Fechas en MySQL bustio SQL 2 12-01-2005 14:03:22
MYSQL pierde datos Dayvis MySQL 5 02-12-2004 14:42:16
me hace falta un componente para trabajar con fechas y bases de datos fearlex Conexión con bases de datos 17 13-07-2004 23:37:28


La franja horaria es GMT +2. Ahora son las 20:06:22.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi