Foros del Web » Programando para Internet » PHP »

contador regresivo

Estas en el tema de contador regresivo en el foro de PHP en Foros del Web. Saludos amigos, quiero pedirle ayuda a algun compañero del foro, ya que me he quedado barado en mi web quiero colocar un contador regresivo desde ...
  #1 (permalink)  
Antiguo 27/01/2014, 12:14
 
Fecha de Ingreso: septiembre-2013
Mensajes: 32
Antigüedad: 11 años, 2 meses
Puntos: 0
contador regresivo

Saludos amigos, quiero pedirle ayuda a algun compañero del foro, ya que me he quedado barado en mi web quiero colocar un contador regresivo desde el momento en que el usuario se registra

es decir el usuario se registra hoy 27-01-2014: 2:00pm

al entra en su cuenta el contador debe mostrarle 27 dias para que el se active
osea el usuario tendra 27 dias para activar 3 paqutes que ofrezco en la web

si el usuario ya adquirio los 3 paquetes el contador no se le muestra, pero si el aun no ha adquirio los 3 paquetes el contador se le mostrara diciendole de los 27 dias cuantos le quedan para que adquiera los 3 paquetes si pasan los 27 eliminamos la cuenta


hasta el momento puedo capturar la fecha de registro pero el contador no se como mostrarlo


si alguien me puede ayudar se haciendome un ejemplo le agradeceria
  #2 (permalink)  
Antiguo 27/01/2014, 13:26
Avatar de Alexis88
Philosopher
 
Fecha de Ingreso: noviembre-2011
Ubicación: Tacna, Perú
Mensajes: 5.552
Antigüedad: 13 años
Puntos: 977
Respuesta: contador regresivo

Solamente necesitas convertir las fechas a segundos, restar la fecha límite con la fecha actual, dividir dicho resultado entre la cantidad de segundos que hay en un día y así obtendrás la cantidad de días que le quedan al usuario para registrarse, por ejemplo:

Código PHP:
Ver original
  1. date_default_timezone_set("America/Lima");
  2. $registro = "2014-01-04 14:00:00"; //Fecha de registro
  3. $dia = 86400; //Segundos en un día
  4. $limite = date("Y-m-d H:i:s", (strtotime($registro) + ($dia * 27))); //Fecha límite
  5. $hoy = strtotime(date("Y-m-d H:i:s")); //Fecha actual en segundos
  6. $diferencia = strtotime($limite) - $hoy; //Diferencia entre la fecha límite y la fecha actual
  7.  
  8. echo "Fecha de registro: " . $registro . "\n";
  9. echo "Fecha límite: " . $limite . "\n";
  10.  
  11. if ($diferencia > 0){
  12.     $dias = $diferencia / $dia;
  13.     $horas = substr($dias, strpos(".", $dias)+1) * 24;
  14.     echo "Le quedan " . (int)$dias . " días";
  15.     if ($horas > 0) echo " y " . (int)$horas . " horas";
  16. }

Si la diferencia entre la fecha límite y la fecha actual es mayor a cero, es decir, si todavía no hemos llegado a la fecha límite, transformo dicha diferencia dada en segundos a días dividiendo la diferencia entre la cantidad de segundos en un día. Como dicha división probablemente arroje un número como varios decimales y por obvias razones no podemos mostrar un resultado así en pantalla, calculo la cantidad de horas que equivale la parte decimal del resultado anterior, multiplicándola por las 24 horas que hay en un día. Luego, al momento de mostrar los días restantes, convierto el resultado a entero, para mostrar solamente la parte entera y no los decimales y lo mismo hago con la hora.

Este es el resultado del algoritmo que propongo a las 14:43:00 horas del 27 de enero:
Código HTML:
Ver original
  1. Fecha de registro: 2014-01-04 14:00:00
  2. Fecha límite: 2014-01-31 14:00:00
  3. Le quedan 3 días y 22 horas

Si gustas, también puedes mostrar minutos y segundos, solamente tienes que ir tomando la parte decimal de cada resultado, empezando ahora por el valor de $horas.

Saludos
__________________
«Juro por mi vida y mi amor por ella, que jamás viviré para el provecho de otro hombre, ni le pediré a otro hombre que viva para el mío».

Ayn Rand

Última edición por Alexis88; 27/01/2014 a las 13:40

Etiquetas: contador, fecha, registro, regresivo
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 08:27.