Foros del Web » Programando para Internet » PHP »

[SOLUCIONADO] Al volver a cargar el script se vuelven a iniciar las variables

Estas en el tema de Al volver a cargar el script se vuelven a iniciar las variables en el foro de PHP en Foros del Web. Buenas, mi problema es el siguiente: Estoy intentando crear un juego en el que hay 4 jugadores y un dado con html y php. El ...
  #1 (permalink)  
Antiguo 16/11/2017, 16:22
 
Fecha de Ingreso: abril-2016
Mensajes: 19
Antigüedad: 6 años, 4 meses
Puntos: 1
Al volver a cargar el script se vuelven a iniciar las variables

Buenas, mi problema es el siguiente:

Estoy intentando crear un juego en el que hay 4 jugadores y un dado con html y php. El problema es que al hacer clic en el dado (que es un input type=image) vuelve a cargar el script y vuelve a iniciar las variables, $contadorjugador, a 0. Da igual que el random del dado se sume al contador que se volverá a iniciar a 0. Os paso el archivo html y php para que me ayudéis un poco porque estoy perdido. Muchas gracias.

HTML:

Código HTML:
Ver original
  1.     <head>
  2.         <TITLE>BochoGame</TITLE>
  3.         <META charset="UTF-8">
  4.     </head>
  5.     <body bgcolor="#FE9A2E">
  6.         <form action="BochoGame.php" method="post">
  7.             <center><font size="7"><b><u>Menú</u></b></font><br></center>
  8.             <br>
  9.             <center>
  10.                 Jugador 1:<input type="text" name="jugador1" required>
  11.                 Jugador 2:<input type="text" name="jugador2" required>
  12.                 Jugador 3:<input type="text" name="jugador3" required>
  13.                 Jugador 4:<input type="text" name="jugador4" required><br>
  14.                 <br>
  15.                 <input type="submit" value="Enviar" name="send">
  16.             </center>
  17.         </form>
  18.     </body
  19. </html>

PHP:

Código PHP:
Ver original
  1. <html>
  2.     <head>
  3.         <meta charset="UTF-8">
  4.         <title>BochoGame</title>
  5.     </head>
  6.     <form method="post">
  7.         <body bgcolor="#FE9A2E">
  8.             <table border="3" bordercolor="black" width="100%">
  9.                 <tr>
  10.                     <td rowspan="2" width="20%" valign="top">
  11.                 <center><font size="7"><b><u>Jugadores</u></b></font><br></center>
  12.                 <?php
  13.                 session_start();
  14.                 if (isset($_POST["send"])) {
  15.                     $_SESSION['primero'] = $_POST['jugador1'];
  16.                     $jugador1 = $_POST['jugador1'];
  17.                     $_SESSION['segundo'] = $_POST['jugador2'];
  18.                     $jugador2 = $_POST['jugador2'];
  19.                     $_SESSION['tercero'] = $_POST['jugador3'];
  20.                     $jugador3 = $_POST['jugador3'];
  21.                     $_SESSION['cuarto'] = $_POST['jugador4'];
  22.                     $jugador4 = $_POST['jugador4'];
  23.                 } else {
  24.                     $jugador1 = $_SESSION['primero'];
  25.                     $jugador2 = $_SESSION['segundo'];
  26.                     $jugador3 = $_SESSION['tercero'];
  27.                     $jugador4 = $_SESSION['cuarto'];
  28.                 }
  29.                 $contadorjugador1 = 0;
  30.                 $contadorjugador2 = 0;
  31.                 $contadorjugador3 = 0;
  32.                 $contadorjugador4 = 0;
  33.                 echo"<center><h1><b>".$jugador1 . "= " . $contadorjugador1 . "</b></h1></center><br>";
  34.                 echo"<center><h1><b>". $jugador2 . "= " . $contadorjugador2 . "</b></h1></center><br>";
  35.                 echo"<center><h1><b>". $jugador3 . "= " . $contadorjugador3 . "</b></h1></center><br>";
  36.                 echo"<center><h1><b>". $jugador4 . "= " . $contadorjugador4."</b></h1></center>";
  37.                 ?>
  38.                 </td>
  39.                 <td rowspan="2" width="40%" valign="top">
  40.                 <center><font size="7"><b><u>Dado</u></b></font><br></center>
  41.                 <br>
  42.                 <center><input type="image" value="randomdado" name="dado" src="Fotos/dado.png" width="50%"></center>
  43.                 <br>
  44.                 <?php
  45.                 if (isset($_POST['dado'])) {
  46.                     $randado = rand(1, 6);
  47.                     switch ($randado) {
  48.                         case 1:
  49.                             echo "<center><img src='Fotos/1.png' width='30%'></center>";
  50.                             $contadorjugador1++;
  51.                             break;
  52.                         case 2:
  53.                             echo "<center><img src='Fotos/2.png' width='30%'></center>";
  54.                             break;
  55.                         case 3:
  56.                             echo "<center><img src='Fotos/3.png' width='30%'></center>";
  57.                             break;
  58.                         case 4:
  59.                             echo "<center><img src='Fotos/4.png' width='30%'></center>";
  60.                             break;
  61.                         case 5:
  62.                             echo "<center><img src='Fotos/5.png' width='30%'></center>";
  63.                             break;
  64.                         case 6:
  65.                             echo "<center><img src='Fotos/6.png' width='30%'></center>";
  66.                             break;
  67.                     }
  68.                 }
  69.                 ?>
  70.                 </td>
  71.                 <td>
  72.  
  73.                 </td>
  74.                 </tr>
  75.                 <tr>
  76.                     <td>
  77.  
  78.                     </td>
  79.                 </tr>
  80.             </table>
  81.     </form>      
  82. </body>
  83. </html>
  #2 (permalink)  
Antiguo 16/11/2017, 17:05
Avatar de mortiprogramador
Colaborador
 
Fecha de Ingreso: septiembre-2009
Ubicación: mortuoria
Mensajes: 3.805
Antigüedad: 12 años, 11 meses
Puntos: 214
Respuesta: Al volver a cargar el script se vuelven a iniciar las variables

Pues yo no veo que el dado como tal tenga una función de envío,
solo se muestra y ya.

Por otra parte, las variables siempre se fijan a 0,
es por eso que siempre se muestran esos valores.

Lo que habría que hacer es al momento de hacer el submit,
ver quien lanzó el dado, y afectar el contador correspondiente.

Y pues tal vez quieras usar ajax más adelante
para no tener que hacer el submit de toda la página.
__________________
"Si consigues ser algo más que un hombre, si te entregas a un ideal, si nadie puede detenerte, te conviertes en algo muy diferente."
Visita piggypon.com
  #3 (permalink)  
Antiguo 16/11/2017, 18:17
Avatar de xfxstudios  
Fecha de Ingreso: junio-2015
Ubicación: Valencia - Venezuela
Mensajes: 2.448
Antigüedad: 7 años, 1 mes
Puntos: 263
Respuesta: Al volver a cargar el script se vuelven a iniciar las variables

prueba así:

Código PHP:
Ver original
  1. $contadorjugador1 = (isset($_SESSION['jugador1']) && $_SESSION['jugador1'] >0) ? $_SESSION['jugador1'] : 0;
  2. $contadorjugador2 = (isset($_SESSION['jugador2']) && $_SESSION['jugador2'] >0) ? $_SESSION['jugador2'] : 0;
  3. $contadorjugador3 = (isset($_SESSION['jugador3']) && $_SESSION['jugador3'] >0) ? $_SESSION['jugador3'] : 0;
  4. $contadorjugador4 = (isset($_SESSION['jugador4']) && $_SESSION['jugador4'] >0) ? $_SESSION['jugador4'] : 0;

de esa manera validas si la variable de ese jugador existe y le asignas su valor, en caso contrario le asignas 0
__________________
[email protected]
HITCEL
  #4 (permalink)  
Antiguo 17/11/2017, 06:16
 
Fecha de Ingreso: abril-2016
Mensajes: 19
Antigüedad: 6 años, 4 meses
Puntos: 1
Respuesta: Al volver a cargar el script se vuelven a iniciar las variables

Gracias por responder! xfxstudios si lo pongo como dices obtengo el mismo resultado, lo que quiero que haga es que cuando salga un 1 en el random del dado sume 1 al "$contadorjugador1". El problema es que cada vez que cargo la pagina como la variable está inicializada a 0 al hacer el echo es siempre 0.

mortiprogramador de momento solo quiero hacer que la variable no sea destruida, cuando lo consiga entonces si tendré que pensar de quien es el turno. De momento si consigo que al salir un 1 se vaya sumando a "$contadorjugador1" estoy contento.
  #5 (permalink)  
Antiguo 17/11/2017, 07:00
Avatar de xfxstudios  
Fecha de Ingreso: junio-2015
Ubicación: Valencia - Venezuela
Mensajes: 2.448
Antigüedad: 7 años, 1 mes
Puntos: 263
Respuesta: Al volver a cargar el script se vuelven a iniciar las variables

ok, en ese caso deberias de tener el codigo php en otro archivo y en este trabajar con variables de sesion, por ende al enviar las peticiones con ajax, actualizas las variables de sesion y al recargar la pagina las cantidades se mantienen hasta que seteees las variables a cero nuevamente.
__________________
[email protected]
HITCEL
  #6 (permalink)  
Antiguo 17/11/2017, 15:44
Avatar de mortiprogramador
Colaborador
 
Fecha de Ingreso: septiembre-2009
Ubicación: mortuoria
Mensajes: 3.805
Antigüedad: 12 años, 11 meses
Puntos: 214
Respuesta: Al volver a cargar el script se vuelven a iniciar las variables

Pues creo que ya te esta funcionando,
el asunto es que estas incrementando la variable
pero no estas mostrando el incremento,
te falta imprimir la variable luego del incremento.
__________________
"Si consigues ser algo más que un hombre, si te entregas a un ideal, si nadie puede detenerte, te conviertes en algo muy diferente."
Visita piggypon.com
  #7 (permalink)  
Antiguo 19/11/2017, 11:14
 
Fecha de Ingreso: abril-2016
Mensajes: 19
Antigüedad: 6 años, 4 meses
Puntos: 1
Respuesta: Al volver a cargar el script se vuelven a iniciar las variables

mortiprogramador no funciona por que hace el incremento pero solo una vez, osea yo le sumo 1 y lo puedo sacar por pantalla, pero al refrescar la variable volverá a 0 y si vuelve a caer el random en 1, sumara 0+1 otra vez. Lo ideal es que cada vez que entrara en el random 1 sumara uno en plan 0+1+2+3...etc

xfxstudios soy muy nuevo en esto y nunca he tocado ajax, pero he pensado en lo que me has dicho por eso he creado un php que se llama contador y he empezado a indagar con javaescript, como mi problema es que se vuelve a cargar la pagina, javascript me deja hacer un random de 1 a 6 sin cargar la pagina.

el problema es que he intentado hacer que a una variable se le sume todo el rato un random, pero no funciona... algo he hecho mal

Código PHP:
Ver original
  1. <html>
  2.     <head>
  3.         <meta charset="UTF-8">
  4.         <title>BochoGame</title>
  5.     </head>
  6.     <body bgcolor="#FE9A2E">
  7.     <center><button onclick="dado()">Dado</button></center>
  8.     <p id="dado"></p>
  9.     <p id="contador"></p>
  10.     <script>
  11.         function dado() {
  12.             var dadorand = Math.floor((Math.random() * 6) + 1);
  13.             document.getElementById("dado").innerHTML = dadorand;
  14.         }
  15.         var contador = 0;
  16.         contador = contador + dadorand;
  17.         document.getElementById("contador").innerHTML = contador;
  18.     </script>
  19. </body>
  20. </html>

muchas gracias!!
  #8 (permalink)  
Antiguo 19/11/2017, 19:58
Avatar de xfxstudios  
Fecha de Ingreso: junio-2015
Ubicación: Valencia - Venezuela
Mensajes: 2.448
Antigüedad: 7 años, 1 mes
Puntos: 263
Respuesta: Al volver a cargar el script se vuelven a iniciar las variables

Esta mal, prueba así:

Código HTML:
Ver original
  1. <div>DADO: <span id="dado"></span></div>
  2. <div>Contador: <span id="contador">0</span></div>
  3. <center><button onclick="dado()">Dado</button></center>

Código Javascript:
Ver original
  1. function dado() {
  2.     var contador = $("#contador").html();
  3.   var dadorand = Math.floor((Math.random() * 6) + 1);
  4.   $("#dado").html(dadorand);
  5.   $("#contador").html(parseInt(contador)+parseInt(dadorand));
  6.  
  7. }

MUESTRA FUNCIONANDO

de igual manera puedes enviar el resultado o los resultados del contador via ajax a un php para ir actualizando variable sde sesion si las necesitas
__________________
[email protected]
HITCEL
  #9 (permalink)  
Antiguo 20/11/2017, 07:12
 
Fecha de Ingreso: abril-2016
Mensajes: 19
Antigüedad: 6 años, 4 meses
Puntos: 1
Respuesta: Al volver a cargar el script se vuelven a iniciar las variables

Perdón por mi incompetencia, pero al poner el código en netbeans no me funciona.

lo he puesto en un archivo php así:
Código PHP:
Ver original
  1. <html>
  2.     <head>
  3.         <meta charset="UTF-8">
  4.         <title>Contador</title>
  5.     </head>
  6.     <body bgcolor="#FE9A2E">
  7.         <div>DADO: <span id="dado"></span></div>
  8.         <div>Contador: <span id="contador">0</span></div>
  9.     <center><button onclick="dado()">Dado</button></center>
  10.     <script>
  11.         function dado() {
  12.             var contador = $("#contador").html();
  13.             var dadorand = Math.floor((Math.random() * 6) + 1);
  14.             $("#dado").html(dadorand);
  15.             $("#contador").html(parseInt(contador) + parseInt(dadorand));
  16.  
  17.     </script>
  18. </body>
  19. </html>

es así como se hace, hoy que hacerlo en un archivo JS? Muchas gracias
  #10 (permalink)  
Antiguo 20/11/2017, 09:46
Avatar de mortiprogramador
Colaborador
 
Fecha de Ingreso: septiembre-2009
Ubicación: mortuoria
Mensajes: 3.805
Antigüedad: 12 años, 11 meses
Puntos: 214
Respuesta: Al volver a cargar el script se vuelven a iniciar las variables

Uhm, y si lo ejecutas el navegador te muestra algún error?
fijate en el inspector del navegador

Tal vez sea porque te falta agregar jquery (a menos que lo agregues antes),
que es la librería que se está usando para la interacción,
según muestra el jsfiddle es jquery 3.1.1, así que si no la tienes incluida
buscala y la agregas como si agregaras un javascript externo.

__________________
"Si consigues ser algo más que un hombre, si te entregas a un ideal, si nadie puede detenerte, te conviertes en algo muy diferente."
Visita piggypon.com
  #11 (permalink)  
Antiguo 21/11/2017, 15:25
Avatar de xfxstudios  
Fecha de Ingreso: junio-2015
Ubicación: Valencia - Venezuela
Mensajes: 2.448
Antigüedad: 7 años, 1 mes
Puntos: 263
Respuesta: Al volver a cargar el script se vuelven a iniciar las variables

si ves tu codigo no estas cargando la libreria de jquery para que este funcione,

debes cargarla antes para que el codigo te funcione

Código HTML:
Ver original
  1. <script src="https://code.jquery.com/jquery-3.2.1.js"></script>
  2. </head>
__________________
[email protected]
HITCEL
  #12 (permalink)  
Antiguo 23/11/2017, 06:29
 
Fecha de Ingreso: abril-2016
Mensajes: 19
Antigüedad: 6 años, 4 meses
Puntos: 1
Respuesta: Al volver a cargar el script se vuelven a iniciar las variables

Después de mirar un tutorial he creado una carpeta javascript y dentro he puesto el archivo jquery-3.2.1.min.js, descargado de la pagina oficial.

Lo he importado, pero debe estar mal porque no hace nada :(, contador siempre vale 0
Código PHP:
Ver original
  1. <html>
  2.     <head>
  3.         <meta charset="UTF-8">
  4.         <title>Contador</title>  
  5.     </head>
  6.     <body bgcolor="#FE9A2E">
  7.         <div>DADO: <span id="dado"></span></div>
  8.         <div>Contador: <span id="contador">0</span></div>
  9.     <center><button onclick="dado()">Dado</button></center>
  10.     <script type="text/javascript" src="javascript/jquery-3.2.1.min.js"></script>
  11.     <script>
  12.         function dado() {
  13.             var contador = $("#contador").html();
  14.             var dadorand = Math.floor((Math.random() * 6) + 1);
  15.             $("#dado").html(dadorand);
  16.             $("#contador").html(parseInt(contador) + parseInt(dadorand));
  17.  
  18.     </script>
  19. </body>
  20. </html>
  #13 (permalink)  
Antiguo 23/11/2017, 07:26
Avatar de xfxstudios  
Fecha de Ingreso: junio-2015
Ubicación: Valencia - Venezuela
Mensajes: 2.448
Antigüedad: 7 años, 1 mes
Puntos: 263
Respuesta: Al volver a cargar el script se vuelven a iniciar las variables

1.- La importacion del escript Jquery, colocala en el heade de tu codigo como te explique:
Código HTML:
Ver original
  1. <script src="https://code.jquery.com/jquery-3.2.1.js"></script>
  2. </head>

2.- No estas cerrando la llave de la funcion dado(), revisa eso y prueba de nuevo

MUESTRA Con tu codigo exacto
__________________
[email protected]
HITCEL
  #14 (permalink)  
Antiguo 26/11/2017, 16:25
 
Fecha de Ingreso: abril-2016
Mensajes: 19
Antigüedad: 6 años, 4 meses
Puntos: 1
Respuesta: Al volver a cargar el script se vuelven a iniciar las variables

Si, el problema era la llave de la funcion dado(), ahora si hace lo que quiero, muchas gracias por la ayuda, doy el tema por solucionado

Etiquetas: html, variable, variables, volver
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 10:56.