Foros del Web » Programando para Internet » PHP »

Programar cuenta atras todos los días 'Lunes'

Estas en el tema de Programar cuenta atras todos los días 'Lunes' en el foro de PHP en Foros del Web. Hola a todos, vereis, tengo un problema que no se como plantearlo. Necesito realizar una 'cuenta atrás' en plan subasta. El problema que me surge ...
  #1 (permalink)  
Antiguo 26/06/2013, 02:00
Avatar de TheScript  
Fecha de Ingreso: septiembre-2011
Ubicación: Spain
Mensajes: 164
Antigüedad: 13 años, 2 meses
Puntos: 30
Programar cuenta atras todos los días 'Lunes'

Hola a todos, vereis, tengo un problema que no se como plantearlo.

Necesito realizar una 'cuenta atrás' en plan subasta. El problema que me surge al plantearlo es el siguiente:

Todos los Lunes de todas las semanas del año se realiza una subasta, con una hora determinada (en un principio siempre fija "8:00h").

Mi problema es que cuando termina la subasta, necesito que se active la cuenta atrás para la próxima subasta del siguiente Lunes, de manera automática. ( días restantes - horas - minutos - segundos )

Buscando por la red solo encuentro casos en los que se conoce la fecha de inicio de la subasta, pero en mi caso simplemente sé que va a ser todos los Lunes de todas las semanas del año.

¿Debo calcular todas las fechas de todos los Lunes del año?

¿Conocéis algún caso similar donde poder echar un vistazo al código?

Cualquier ejemplo me vale para ver como lo planteo porque al no tener fecha no se ni por donde empezar.

Gracias como siempre. Un saludo.
  #2 (permalink)  
Antiguo 26/06/2013, 05:37
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: Sabadell
Mensajes: 4.897
Antigüedad: 16 años, 8 meses
Puntos: 574
Respuesta: Programar cuenta atras todos los días 'Lunes'

Si tienes fecha, la de hoy.

No tienes que calcular la fecha de todos los lunes sino solo la del proximo lunes.

Si hoy es lunes solo tienes que sumar 7 dias para saber la fecha del proximo lunes. Si hoy es martes tendras que sumar 6 y asi sucesivamente. Lo mismo para saber el date time del proximo lunes a las 8:00.

Date time functions ahí tienes funciones que te diran la fecha de hoy, que dia de la semana es ("wday" 0 Domingo, 1 Lunes....).

Si sabes la fecha y hora (minutos, segundos) de ahora y la fecha y hora del proximo lunes a las 8:00 solo tienes que hacer un bucle que vaya actualizando la diferencia entre ambas....

Se puede hacer en javascript, no hace falta molestar demasiado al servidor para hacerlo solo hay que pedirle la fecha y hora actuales una vez (cada vez que se abra una session claro) y luego puedes hacer el bucle en javascript.(Datetime functions de javascript)

Lo de la hora del servidor es importante puesto que el proximo lunes a las 8:00 no es exactamente el mismo momento en todo el mundo. Asegurate de que tu servidor esta en la misma hora que tu piensas que van a celebrarse las subhastas.

Pegale un vistazo y veras que se puede.
__________________
Quim
--------------------------------------------------
Ayudar a ayudar es una buena práctica!!! Y da buenos resultados.

Última edición por quimfv; 26/06/2013 a las 05:53
  #3 (permalink)  
Antiguo 26/06/2013, 05:39
Avatar de Italico76  
Fecha de Ingreso: abril-2007
Mensajes: 3.303
Antigüedad: 17 años, 7 meses
Puntos: 292
Respuesta: Programar cuenta atras todos los días 'Lunes'

Cita:
No tienes que calcular la fecha de todos los lunes sino solo la del proximo lunes.
Cuidado con eso!

El problema es no realizar la accion 1000 veces en la primera fraccion de segundo de cada lunes 8:00:00 sino hacer un script aparte de acciones y llamarlo mediante chrono jobs .. configurado para ejecutarse 1 vez a la semana"

Yo NO haria esto:

<?php
date_default_timezone_set('America/Bogota');

if ((date('l')=='Monday') and (date('G')==8) and date('H:i:s'=='00:00:00')){
header("Location: accion_lunes_8hs.php");
}

Es preferible dejarle el cuando al chronojob y que él llame a "accion_lunes_8hs.php"
__________________
Salu2!

Última edición por Italico76; 26/06/2013 a las 05:48

Etiquetas: atras
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 01:16.