Autor
|
Tema: Mantener números array con session (Leído 2,170 veces)
|
splendid37
Desconectado
Mensajes: 17
|
Hola. ¿Cómo puedo mantener los números aleatorios de este array? Cuando recargo la página ya se reinician los números y aparecen otros. session_start();
$_SESSION['carton'] = $_SESSION['carton'];
$num[0] = rand(0,8); $num[1] = rand(9,17); $num[2] = rand(18,26); $num[3] = rand(27,35); $num[4] = rand(36,44); $num[5] = rand(45,53); $num[6] = rand(54,62); $num[7] = rand(63,71); $num[8] = rand(72,80); $num[9] = rand(81,89); $num[10] = rand(90,98); $num[11] = rand(99,106);
echo $_SESSION['carton'];
¿Alguna idea? Gracias.Saludos!
|
|
|
En línea
|
|
|
|
sodark
|
El problema esta en: - Creas la sesion y creas una variable asignandole un valor de una variable que no existe en memoria $_SESSION['carton'] = $_SESSION['carton'];
- Creas el array pero no lo guardas en la session - Siempre sobreescribes el array puesto que no compruebas si existe una variable de session. Te dejo el codigo de como sería, no he podido probarlo porque ahora no tengo mucho tiempo, pero diria que funciona correctamente // Miramos si existe la variable en session --> Si es la primera vez no existira, por lo tanto entrara dentro del if y creara el array if ( !isset($_SESSION['carton'] ) ) { // Una vez creado el array, lo asignamos a una variable de session, que precisamente es la que comprovamos si existe en el if, // asi a la segunda carga, como ya existira, no volvera a generar el array puesto que ya lo tendra en la session y por lo tanto no entrara en el if $_SESSION['carton']=$num; } else { echo "Este else no es necesario, pero es para que veas que no entra en el if"; }
|
|
|
En línea
|
|
|
|
splendid37
Desconectado
Mensajes: 17
|
Muchas gracias por la respuesta.
Funciona perfecto, pero ¿hay alguna forma de sacar cada número por separado?.
Me explico, por ejemplo hacer solo echo de "num[0]" y "num[1]".
Cuando lo cargo por primera vez sí que carga estos números y los muestra pero al recargar ya se pierden.
Siento darte la lata con esto que supongo que será muy fácil, pero al estar empezando uno no se entera de mucho..
Muchas gracias.Saludos.
|
|
« Última modificación: 15 Febrero 2016, 18:55 pm por #!drvy »
|
En línea
|
|
|
|
sodark
|
Claro que puedes, piensa que $_SESSION['carton'] tiene un array dentro. Podrias hacer esto en el ELSE o donde quieras pintarlo $variableNum = $_SESSION['carton']; echo $variableNum[0]; echo $variableNum[1]; . . . . echo $variableNum[11];
O bien directamente (la mejor forma, ya que si ya lo tienes en session, pues accede directamente) echo $_SESSION['carton'][0]; echo $_SESSION['carton'][1]; echo $_SESSION['carton'][2]; echo $_SESSION['carton'][3];
La cosa es que la variable $num la segunda vez no existe, por ello lo mejor que puedes es // Miramos si existe la variable en session --> Si es la primera vez no existira, por lo tanto entrara dentro del if y creara el array if ( !isset($_SESSION['carton'] ) ) { echo "Entro en el if, borra este mensaje luego!"; $_SESSION['carton'][0] = rand(0,8); $_SESSION['carton'][1] = rand(9,17); $_SESSION['carton'][2] = rand(18,26); $_SESSION['carton'][3] = rand(27,35); $_SESSION['carton'][4] = rand(36,44); $_SESSION['carton'][5] = rand(45,53); $_SESSION['carton'][6] = rand(54,62); $_SESSION['carton'][7] = rand(63,71); $_SESSION['carton'][8] = rand(72,80); $_SESSION['carton'][9] = rand(81,89); $_SESSION['carton'][10] = rand(90,98); $_SESSION['carton'][11] = rand(99,106); } // Cuidado con salirte del array! echo $_SESSION['carton'][0]; echo $_SESSION['carton'][1]; echo $_SESSION['carton'][2]; echo $_SESSION['carton'][3]; //Tendras que controlarlo de alguna forma, o pintar el array mediante for asegurandote no pasarte por ej: $size = count($_SESSION['carton']); for ( $i=0;$i<$size;$i++ ) { echo "Valor de $i = $_SESSION['carton'][i]"; } // O bien usar un foreach --> http://php.net/manual/es/control-structures.foreach.php
|
|
« Última modificación: 12 Febrero 2016, 13:05 pm por sodark »
|
En línea
|
|
|
|
splendid37
Desconectado
Mensajes: 17
|
Solucionado. Muchas gracias por tu tiempo!
Una útima cosa (o eso espero), en el código como ves cuando sale un número aleatorio que sea igual que en el "carton" se marca con un "*". El problema es que quiero que se mantenga marcado con el "*", lo he intentado con una sesión pero no me funciona o lo he puesto mal lo mas probable. ¿Cómo lo puedo hacer para que ese número se quede marcado? <?php if ( !isset($_SESSION['carton'] ) ) { $_SESSION['carton']=$num;} echo $_SESSION['carton'][0]; if ($_SESSION['carton'][0] == $numero) {echo "*";} else {echo "";}; echo ","; echo $_SESSION['carton'][1]; if ($_SESSION['carton'][1] == $numero) {echo "*";} else {echo "";} echo "<br/>","<br/>"; $_SESSION['muestra'] = $_SESSION['muestra'].$numero.", "; echo $_SESSION['muestra']; ?>
Como bien dicen una imagen vale más que mil palabras. Lo que quiero hacer es que una vez marcado el 4 o el 17 con un "*" se quede marcado con el "*" y seguir sacando números con el botón de siguiente número. Mod: No hacer doble post.
|
|
« Última modificación: 15 Febrero 2016, 18:56 pm por #!drvy »
|
En línea
|
|
|
|
|
Mensajes similares |
|
Asunto |
Iniciado por |
Respuestas |
Vistas |
Último mensaje |
|
|
averiaguar numeros repetidos en un array
Java
|
ped18
|
7
|
7,509
|
10 Enero 2012, 17:18 pm
por [Case]
|
|
|
Array que lea ciertos números
Programación C/C++
|
DickGumshoe
|
2
|
2,373
|
15 Enero 2012, 01:18 am
por DickGumshoe
|
|
|
Pasar números de String a int array. C++
Programación C/C++
|
tmb90
|
1
|
2,863
|
1 Junio 2014, 12:15 pm
por vangodp
|
|
|
Array con numeros primos.
Programación C/C++
|
Ja_90
|
2
|
26,140
|
5 Septiembre 2014, 17:16 pm
por Ja_90
|
|
|
array bidimensiona con numeros aleatorios sin repetir
Java
|
Baaz
|
8
|
11,817
|
9 Abril 2015, 15:02 pm
por DarK_FirefoX
|
|