Foros del Web » Programando para Internet » PHP »

Como deshabilitar submit por tiempo

Estas en el tema de Como deshabilitar submit por tiempo en el foro de PHP en Foros del Web. Estoy programando un sitio en el que cada 5 horas un usuario gana un crédito, que después podrá cambiar por premios dentro del sitio web. ...
  #1 (permalink)  
Antiguo 04/05/2016, 02:19
Avatar de JethCrew  
Fecha de Ingreso: marzo-2012
Ubicación: México
Mensajes: 67
Antigüedad: 12 años, 1 mes
Puntos: 3
Como deshabilitar submit por tiempo

Estoy programando un sitio en el que cada 5 horas un usuario gana un crédito, que después podrá cambiar por premios dentro del sitio web.

Ya tengo programada la parte de ganar créditos, gana un crédito después de poner un texto y presionar un botón. Lo que quiero lograr es que al momento de insertar el crédito en la base de datos se bloquee el botón submit y no se vuelva a habilitar hasta después de 5 horas y muestre un mensaje del tiempo que falta para que vuelva a activarse el botón.

Necesito ayuda con la teoría de este problema para empezarlo a programar ya que no se por donde empezar

Este el el form y el submit.

Código HTML:
Ver original
  1. <form method="post">
  2.    <p>C&oacute;digo: <br>
  3.     <input type="text" name="codigo"></p>
  4.    
  5.     <p><input type="submit" value="Canjear"></p>
  6. </form>

Alguna ayuda? o si conocen un script ya hecho parecido podrian proporcionarme el nombre del script?? saludos y gracias.
__________________
Descubre Bicicletas Spinning - Ganar Dinero Con Mobidea
  #2 (permalink)  
Antiguo 04/05/2016, 02:30
 
Fecha de Ingreso: octubre-2010
Ubicación: España
Mensajes: 1.007
Antigüedad: 13 años, 6 meses
Puntos: 123
Respuesta: Como deshabilitar submit por tiempo

Tienes que guardar en algún lugar el tiempo o momento de cuando pulso el botón por utima vez
Puedes tomar el tiempo actual con time()
Código PHP:
Ver original
  1. $tiempo_ultima_peticion = time();

Luego comparas ese dato + el tiempo que quieres que este añadir, con el tiempo actual
Código PHP:
Ver original
  1. $ultima_peticion_mas_5_horas = $tiempo_ultima_peticion + (5 * 60 * 60);
  2.  
  3. if ( $ultima_peticion_mas_5_horas > time() ){
  4. echo 'Han pasado más de 5 horas;
  5. }else {
  6. echo ' Aun no han pasado 5 horas';
  7. }


Espero se entienda la idea.
__________________
Unset($vida['malRollo']);
  #3 (permalink)  
Antiguo 04/05/2016, 02:46
 
Fecha de Ingreso: noviembre-2003
Ubicación: Zaragoza, España
Mensajes: 1.257
Antigüedad: 20 años, 5 meses
Puntos: 154
Respuesta: Como deshabilitar submit por tiempo

Hola JethCrew,

Tienes una forma muy sencilla de hacerlo con JQuery countdown

Es totalmente configurable y muy sencillo de usar, la desventaja es que no es server side...

Espero que te sirva...
  #4 (permalink)  
Antiguo 05/05/2016, 01:57
Avatar de JethCrew  
Fecha de Ingreso: marzo-2012
Ubicación: México
Mensajes: 67
Antigüedad: 12 años, 1 mes
Puntos: 3
Respuesta: Como deshabilitar submit por tiempo

Hola que tal, estoy tratando de implantar la opción que me diste, mi php queda así:

Código PHP:
Ver original
  1. <?php
  2. $username = $_SESSION['username'];
  3. $tiempo_ultima_peticion = mysql_query('SELECT * FROM users WHERE username="'.$username.'"');  
  4. $fila = mysql_fetch_array($tiempo_ultima_peticion);
  5.  
  6. $ultima_peticion_mas_5_horas = $fila['fecha'] + (5 * 60 * 60);
  7.  
  8. if ( $ultima_peticion_mas_5_horas > $fila['fecha'] ){
  9. echo 'Han pasado más de 5 horas';
  10. }else {
  11. echo 'Aun no han pasado 5 horas';
  12. }
  13.  
  14. ?>

El problema es que siempre me muestra "Han pasado más de 5 horas" y cuando aun no pasa no me lo detecta, alguna sugerencia o ayuda? Gracias por tu atención.
__________________
Descubre Bicicletas Spinning - Ganar Dinero Con Mobidea

Última edición por JethCrew; 05/05/2016 a las 01:58 Razón: Puse lineas de código de más
  #5 (permalink)  
Antiguo 05/05/2016, 02:41
 
Fecha de Ingreso: octubre-2010
Ubicación: España
Mensajes: 1.007
Antigüedad: 13 años, 6 meses
Puntos: 123
Respuesta: Como deshabilitar submit por tiempo

El problema es que estas comparando el tiempo que guardas en la bd con el tiempo que guardas + 5h, en lugar de hacerlo con el tiempo actual.

Código PHP:
Ver original
  1. // Esto siempre se va a cumplir
  2. if ( $ultima_peticion_mas_5_horas > $fila['fecha'] ){
  3. echo 'Han pasado más de 5 horas';
  4. }else {
  5. echo 'Aun no han pasado 5 horas';
  6. }

Prueba asi:
Código PHP:
Ver original
  1. // utilizamos time para obtener el momento actual
  2. if ( $ultima_peticion_mas_5_horas > time() ){
  3. echo 'Han pasado más de 5 horas';
  4. }else {
  5. echo 'Aun no han pasado 5 horas';
  6. }

Una cosa más $fila['fecha'] que formato de tiempo tiene, lo que puse es para comparar en unix, si $fila['fecha'] te devuelve algo como '05-05-2016 10:40:00' debes convertirlo primero en una marca de tiempo unix. Puedes ayudarte de strtotime para hacer la conversión.
__________________
Unset($vida['malRollo']);

Última edición por xerifandtomas; 05/05/2016 a las 02:48
  #6 (permalink)  
Antiguo 06/05/2016, 01:01
Avatar de JethCrew  
Fecha de Ingreso: marzo-2012
Ubicación: México
Mensajes: 67
Antigüedad: 12 años, 1 mes
Puntos: 3
Respuesta: Como deshabilitar submit por tiempo

Hola que tal muchas gracias por tu ayuda ya lo pude solucionar, la fecha en este campo $fila['fecha'] si lo inserto con time(), pero me estaba equivocando en eso que me dijiste al momento de comparar los tiempos y ya lo corregí pero me daba al revés, solo cambié el símbolo dejando la línea así:

Código PHP:
Ver original
  1. if ( $ultima_peticion_mas_5_horas < time() ){

De esa manera me funciona correctamente, una vez más gracias por tu ayuda me sirvió de mucho.
__________________
Descubre Bicicletas Spinning - Ganar Dinero Con Mobidea

Etiquetas: deshabilitar, submit, tiempo
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 07:51.