Ver Mensaje Individual
  #1 (permalink)  
Antiguo 21/11/2013, 17:58
Avatar de guardarmicorreo
guardarmicorreo
 
Fecha de Ingreso: noviembre-2012
Ubicación: Córdoba
Mensajes: 1.153
Antigüedad: 11 años, 6 meses
Puntos: 84
Comparación Fechas y horas entre PHP y MYSQL: comparación variable

Estoy trabajando sobre una implementación a una app para limitar el uso de la app según el tiempo. Esto es: si el usuario realiza una determinada actividad, hasta pasada una hora no puede volver a realizar la misma actividad.

El problema es con las fechas y horas.

He entendido bien las funciones de fecha en PHP y MYSQL, creo :S

Pero pensando en que el administrador del sitio pudiera establecer la limitación de tiempo a su antojo tengo que pensar la manera de comparar la diferencia entre la fecha (año, mes y día) y la hora (hora, minutos y segundos) establecida por el administrador del servidor y la última vez que se conectó el usuario.

De manera que el código resultante es este (he omitido la parte de la consulta a MYSQL para no infringir las normas), está escrito en local y es a modo de prueba, por lo tanto no es muy bonito :) ni pensado para seguir una estrategia de eficiencia alguna, simplemente es para que funcione

Código PHP:
Ver original
  1. /*
  2.      * calcula la diferencia entre años, meses, días y horas
  3.      */
  4.     public function compareDatesHours($dateimput)
  5.     {
  6.         //comprueba si el formato de fecha de imput es un formato valido [Y-m-d H:i:s]
  7.         $this->check_date_time  =   $this->validateDatesHours($dateimput);
  8.         if($this->check_date_time   === TRUE)
  9.         {
  10.             //recupera la ultima conexion al servidor
  11.             $this->sql  =//la consulta
  12.                
  13.             $this->result_conexion  =   $this->connect($this->sql);
  14.            
  15.             while($valores  =   mysqli_fetch_array($this->result_conexion))
  16.             {
  17.                 $result =   $valores;
  18.             }
  19.            
  20.             //comprueba las diferencias entre años, meses, dias y horas.
  21.             // si hay una diferencia mayor de un dia y una hora puede continuar
  22.             if($result['diff_year'] == 0 AND $result['diff_month']  ==  0   AND $result['diff_day'] >= 1 AND $result['diff_hour'] >= 1 )
  23.             {
  24.                 return $result;
  25.             }
  26.             else {
  27.                 return "no puede continuar";
  28.                
  29.             }
  30.            
  31.            
  32.            
  33.         }  
  34.     }
  35. //en la consulta SQL obtengo las diferencias entre la última vez que el usuario se conectó y la fecha pasada por valor a este método

¿A alguien se le ocurre alguna función nativa de PHP que realice este trabajo para ahorrar líneas y ganar eficiencia?

Simplemente una referencia de funciones y yo ya pienso cómo hacerlas trabajar :D

Es que leyendo el manual de PHP no se me ha ocurrido una manera mejor para realizar esto.
__________________
Ayúdame a hacerlo por mi mismo.