Autor Tema: Problema - Cuenta atrás...  (Leído 923 veces)

Desconectado Bitez

  • PHPer@
  • **
  • Mensajes: 60
  • Karma: 11
  • Sexo: Masculino
  • POO y .NET
    • Ver Perfil
    • ¿Una duda?, ¡TU RESPUESTA!
Problema - Cuenta atrás...
« en: 29 de Enero de 2011, 21:17:49 pm »
¡Saludos PHPeros!
Hace unos días, vi que muchos Juegos de Navegador como VirtualCrims tenían una cuenta atrás cuando iban a trabajar y quise estudiarlo, un amigo (SergioPina) me ayudo, me hizo el código JS, pero no funciona, y cuando entras en ese archivo directamente te suma el dinero.

Código: [Seleccionar]
<?php
@session_start();
include(
"mysql.php"); 
?>


<html>
<head>
<script type="text/javascript">
var tiempo = 60;
var actInterval = false;
var endTime = "<b>Se le han sumado créditos a su cuenta</b>";

function counter(elem){
tiempo -= 1;
id = document.getElementById(elem);
id.innerHTML = "Usted deberá esperar <br> <b>"+tiempo+"</b> <br> para terminar su turno de empleo.";
if(actInterval == false){
interVar = setInterval("counter('"+elem+"')",1000);
actInterval = true;
}
if(tiempo <= 0){
clearInterval("interVar");
id.innerHTML = endTime;
}
}
</script>
<script type="text/javascript">
counter("counter");
</script>
</head>

<body>
<?php
if(time() + 60){
$cuenta mysql_query("SELECT * FROM `usuarios` WHERE usuario=&#39;".$_SESSION["usuario"]."&#39;");
$row mysql_fetch_object($cuenta);
$dinero $row->dinero 100;
mysql_query("UPDATE `usuarios` SET dinero=&#39;".$dinero."&#39; WHERE usuario=&#39;".$_SESSION["usuario"]."&#39;");
mysql_query("INSERT INTO historial(usuario,ip_remote,razon,fecha) VALUES (&#39;".$_SESSION["usuario"]."&#39;,&#39;".$_SERVER[&#39;REMOTE_ADDR&#39;]."&#39;,&#39;ha ido a trabajar&#39;,&#39;".date("d/m/Y")."&#39;)");
}
?>


<div id="counter"></counter>
</body>
</html>

Lo que quiero es que el usuario espere 60 segundos y luego darle el dinero.
Espero que alguien me ayude, gracias.
« Última modificación: 29 de Enero de 2011, 21:21:04 pm por Bitez »
Mas vale una mala respuesta que una buena mal explicada.

Comunidad PHPeros

Problema - Cuenta atrás...
« en: 29 de Enero de 2011, 21:17:49 pm »

Desconectado Siquillote

  • PHPero Master
  • ******
  • Mensajes: 4.229
  • Karma: 179
  • Sexo: Masculino
    • Ver Perfil
Re:Problema - Cuenta atrás...
« Respuesta #1 en: 29 de Enero de 2011, 22:13:32 pm »
Bueno, digamos que yo no soy un pro del javascript pero llevo unos días estudiandolo y quizás con lo que te pueda ayudar aunque no te lo garantizo. Lo único que debes hacer es como si fuera PHP solo con JS pero dando una instrucción de que cada segundo, se ejecute la función de esta manera:


<script type="text/javascript" language="javascript">
      var 
cantidad 10;
	
  var 
finalizado "Ya han pasado los 10 segundos";
      function 
cuenta(){
	
	
	
if(
cantidad <= 0){
	
	
	
	
document.getElementById("atras").innerHTML finalizado;
	
	
	
} else {
	
	
	
	
cantidad--;
	
	
	
	
document.getElementById("atras").innerHTML "Quedan " cantidad +" segundos";
	
	
	
}
	
  }
	
  
	
  
setInterval(&#39;cuenta()&#39;, 1000);
</script>
<div id="atras">
	
Quedan 10 segundos
</div>


No estoy seguro de que funcione pero pruebalo y me dices.
« Última modificación: 29 de Enero de 2011, 22:18:07 pm por Siquillote »

#Fdo. Physlet

Desconectado Bitez

  • PHPer@
  • **
  • Mensajes: 60
  • Karma: 11
  • Sexo: Masculino
  • POO y .NET
    • Ver Perfil
    • ¿Una duda?, ¡TU RESPUESTA!
Re:Problema - Cuenta atrás...
« Respuesta #2 en: 29 de Enero de 2011, 22:16:56 pm »
¡Gracias Siquillote, ha funcionado en parte!
Ahora si que salen los números, y también la cuenta atrás, pero dice:

Quedan 10 segundos, y cuando dice Quedan 9... se queda fijado, no baja a 8, 7, 6...
« Última modificación: 29 de Enero de 2011, 22:26:52 pm por Bitez »
Mas vale una mala respuesta que una buena mal explicada.

Desconectado Siquillote

  • PHPero Master
  • ******
  • Mensajes: 4.229
  • Karma: 179
  • Sexo: Masculino
    • Ver Perfil
Re:Problema - Cuenta atrás...
« Respuesta #3 en: 29 de Enero de 2011, 22:18:38 pm »
¡Gracias Siquillote, ha funcionado el parte!
Ahora si que salen los números, y también la cuenta atrás, pero dice:

Quedan 10 segundos, y cuando dice Quedan 9... se queda fijado, no baja a 8, 7, 6...

Ups, ya debería funcionar ;). Puse setimeout en vez de setinterval. Ya debería funcionar, suerte.

#Fdo. Physlet

Desconectado Bitez

  • PHPer@
  • **
  • Mensajes: 60
  • Karma: 11
  • Sexo: Masculino
  • POO y .NET
    • Ver Perfil
    • ¿Una duda?, ¡TU RESPUESTA!
Re:Problema - Cuenta atrás...
« Respuesta #4 en: 29 de Enero de 2011, 22:24:05 pm »
¡Resuelto, Karma para Siquillote!
Pero, ahora no me suma el dinero en la BD...

if(time() + 10){
	
$cuenta mysql_query("SELECT * FROM `usuarios` WHERE usuario=&#39;".$_SESSION["usuario"]."&#39;");
	
$row mysql_fetch_object($cuenta);
	
$dinero $row->dinero 100;
	
mysql_query("UPDATE `usuarios` SET dinero=&#39;".$dinero."&#39; WHERE usuario=&#39;".$_SESSION["usuario"]."&#39;");
	
mysql_query("INSERT INTO historial(usuario,ip_remote,razon,fecha) VALUES (&#39;".$_SESSION["usuario"]."&#39;,&#39;".$_SERVER[&#39;REMOTE_ADDR&#39;]."&#39;,&#39;ha ido a trabajar&#39;,&#39;".date("d/m/Y")."&#39;)");
}
Mas vale una mala respuesta que una buena mal explicada.

Desconectado Siquillote

  • PHPero Master
  • ******
  • Mensajes: 4.229
  • Karma: 179
  • Sexo: Masculino
    • Ver Perfil
Re:Problema - Cuenta atrás...
« Respuesta #5 en: 29 de Enero de 2011, 22:29:59 pm »
¡Resuelto, Karma para Siquillote!
Pero, ahora no me suma el dinero en la BD...

if(time() + 10){
	
$cuenta mysql_query("SELECT * FROM `usuarios` WHERE usuario=&#39;".$_SESSION["usuario"]."&#39;");
	
$row mysql_fetch_object($cuenta);
	
$dinero $row->dinero 100;
	
mysql_query("UPDATE `usuarios` SET dinero=&#39;".$dinero."&#39; WHERE usuario=&#39;".$_SESSION["usuario"]."&#39;");
	
mysql_query("INSERT INTO historial(usuario,ip_remote,razon,fecha) VALUES (&#39;".$_SESSION["usuario"]."&#39;,&#39;".$_SERVER[&#39;REMOTE_ADDR&#39;]."&#39;,&#39;ha ido a trabajar&#39;,&#39;".date("d/m/Y")."&#39;)");
}


Lo primero, gracias :P. Lo segundo, estás haciendo ahí algo muy extraño. Estas comprobando que si time() + 10 devuelve true o false. Con eso, es como si dijeras que un arbol es platano o manzana. Para que ese código funcione, debe haber una igualdad y no la estás implementando.

Con if(time() + 10){ traduciendo al español...: Si los segundos que lleva el servidor mas 10 que doy yo es igual a... ¿Igual a que? Por eso nunca se cumple la suma ya que no estas comparando datos. Por lo que veo, quieres hacer como algún script que si pasado 10 segundos desde la última vez que estuvo, se le sumen 10 pero con eso es imposible.

Dime que es lo que estás haciendo y te echo una manita :P

#Fdo. Physlet

Desconectado Bitez

  • PHPer@
  • **
  • Mensajes: 60
  • Karma: 11
  • Sexo: Masculino
  • POO y .NET
    • Ver Perfil
    • ¿Una duda?, ¡TU RESPUESTA!
Re:Problema - Cuenta atrás...
« Respuesta #6 en: 29 de Enero de 2011, 22:34:53 pm »
Pues quiero que hacer que al pasar los 10 segundos.
Que para eso hemos puesto el JS, para que muestre los segundos restantes te sume una cantidad de dinero a la BD.

Pero lo que quiero es aprender a hacerlo, no es ningún proyecto.
Mas vale una mala respuesta que una buena mal explicada.

Desconectado Siquillote

  • PHPero Master
  • ******
  • Mensajes: 4.229
  • Karma: 179
  • Sexo: Masculino
    • Ver Perfil
Re:Problema - Cuenta atrás...
« Respuesta #7 en: 29 de Enero de 2011, 22:43:16 pm »
Pues quiero que hacer que al pasar los 10 segundos.
Que para eso hemos puesto el JS, para que muestre los segundos restantes te sume una cantidad de dinero a la BD.

Pero lo que quiero es aprender a hacerlo, no es ningún proyecto.

JS no tiene que ver nada con PHP directamente. Para hacer lo que quieres intentar, has de guardar el tiempo en la base de datos y luego comprobarlo para luego dar a lugar la suma.

#Fdo. Physlet

Desconectado javipilo

  • PHPero Experto
  • *****
  • Mensajes: 975
  • Karma: 31
  • Sexo: Masculino
    • Ver Perfil
Re:Problema - Cuenta atrás...
« Respuesta #8 en: 30 de Enero de 2011, 19:59:22 pm »
Haber búscate tutoriales con jquery de tiempo y usa load al archivo de consulta.

Saludos