| 22 mensajes. Página 1 de 2 |
| Autor | Mensaje |
-TiTo_ Webmaster Habitual

 Mensajes: 33 Desde: 21/Oct/2004 | Como almacenar numeros generados aleatoriamente?
Buenas,
En un codigo que estoy haciendo uso la funcion rand para generar numeros aleatorios cada vez que se ejecuta el codigo, sin guardarlos en base de datos mysql. Quisera poder mostrar por ejemplo los 10 ultimos generados, no globales sino para cada usuario. Es decir que yo cada vez que entre me salgan los 10 ultimos numeros que han salido cuando yo he entrado, y a cada user lo mismo. No hace falta que lo recuerde siempre, sino cada vez que entre y empiece a hacer uso del script.
Creo que lo mas adecuado es el uso de cookies pero no tengo muy claro el sistema, a alguno se os ocurre?
gracias
|
17/Mar/2008 17:53 GMT+1 | Perfil · Privado · Desconectado · Web |
EffectedCard Administrador


Usuario PRO Mensajes: 9.013 Desde: 16/Oct/2004 | RE: Como almacenar numeros generados aleatoriamente?
¿Guardar cookies sabes?
A mí lo que se me ocurre es que guardes en una cookie única los números separados por una barrita (|). Quedaría algo así:
10|2|3|6|5|9|12|3|4|6
Para recoger los datos, tu cogerías la cookie y obtendrías la info de la cookie y separarías los números en forma de array con explode().
<? $cookie = ; //codigo para coger la cookie $numero = explode("|", $cookie); $num = sizeof($numero);
for($i=0;$i<$num;$i++){ echo"Número $i: $numero[$i] <br />";
?>
Ahí hemos mostrado los números de la cookie.
Para guardarlos, tendrías que usar el código de las cookies para guardarlo pero teniendo en cuenta algunas cosas.
~ Si la cookie no existe, la creamos y añadimos únicamente el número sin barras. Quedando, por ejemplo, 5.
~ Si la cookie existe, has de comprobar cuántos números hay registrados. Para ello, haces el explode y miras el largo del array.
<? $cookie = ; //codigo para coger la cookie $numero = explode("|", $cookie); $num = sizeof($numero);
if($num < 10){ //si es menor de 10 }else{ //si ya hay 10 } ?>
~~~~ Hecho esto, si hay menos de diez números, simplemente añadiríamos el siguiente. Cogemos los datos de la vieja cookie y añadimos el número nuevo. Después borramos la cookie y creamos una nueva. Suponiendo que $aleatorio es el número que ha resultado haciendo el aleatorio:
<? $cookie = ; //código para coger los datos $resultado = $cookie."|".$aleatorio;
//borro cookie //creo nueva cookie ?>
~~~~ Si ya hubiera diez, habríamos de borrar el primero. Para ello se me ocurre separarlo en arrays y poner sólo del 1 al 9 (empieza con el 0 siempre). Así quedaría:
<? $cookie = ; //codigo para coger la cookie $numero = explode("|", $cookie);
$resultado = $numero[1] . $numero[2] . $numero[3] . $numero[4] . $numero[5] . $numero[6] . $numero[7] . $numero[8] . $numero[9] . "|" . $aleatorio;
//borramos cookie //creamos nueva cookie
?>
Espero que te sirva. No te pongo los códigos para el manejo de cookies porque nunca se me ha dado demasiado bien. De todas formas, en google los encuentras seguro.
|
20/Mar/2008 16:56 GMT+1 | Perfil · Privado · Conectado · Web |
-TiTo_ Webmaster Habitual

 Mensajes: 33 Desde: 21/Oct/2004 | RE: Como almacenar numeros generados aleatoriamente?
Muchas gracias effect, me alegra ver que el foro sigue tan disponible como antaño,
un saludo
|
23/Mar/2008 12:56 GMT+1 | Perfil · Privado · Desconectado · Web |
EffectedCard Administrador


Usuario PRO Mensajes: 9.013 Desde: 16/Oct/2004 | RE: Como almacenar numeros generados aleatoriamente?
Un Placer tenerte por aquí.
Y si tarde tres días fue porque estaba de viaje =)
Un Saludo y Cuídate
|
23/Mar/2008 13:21 GMT+1 | Perfil · Privado · Conectado · Web |
-TiTo_ Webmaster Habitual

 Mensajes: 33 Desde: 21/Oct/2004 | RE: Como almacenar numeros generados aleatoriamente?
Veamos , segun tu consejo effect he llegado a este codigo:
<? $numero = rand (0, 36); echo $numero; ?> <br><br><a href="index.php">Generar</a> <? echo $_COOKIE["listado"];
$listado = $_COOKIE["listado"]; $elemento = explode("|", $listado); $num = sizeof($elemento);
if(!$_COOKIE["listado"]){ setcookie("listado",$numero,time()+604800); }
else{
if($num<10){ unset($_COOKIE["listado"]); $valor = $numero."|".$listado; setcookie("listado",$valor,time()+604800); }
else{ unset($_COOKIE["listado"]); $valor = $numero."|".$elemento[0]."|".$elemento[1]."|".$elemento[2]."|".$elemento[3]."|".$elemento[4]."|".$elemento[5]."|".$elemento[6]."|".$elemento[7]."|".$elemento[8]; setcookie("listado",$valor,time()+604800); }
} ?>
Pero me da el error Warning: Cannot modify header information - headers already sent by (output started..... on line 21
Sabes por donde se me escapa algo? supongo que estoy haciendo algo mal al crear las cookies...
gracias y un saludo
|
27/Mar/2008 21:16 GMT+1 | Perfil · Privado · Desconectado · Web |
-TiTo_ Webmaster Habitual

 Mensajes: 33 Desde: 21/Oct/2004 | RE: Como almacenar numeros generados aleatoriamente?
Vale, error tontisimo, bastaba con poner el codigo de las cookies al principio dle archivo,
un saludo
|
27/Mar/2008 21:29 GMT+1 | Perfil · Privado · Desconectado · Web |
EffectedCard Administrador


Usuario PRO Mensajes: 9.013 Desde: 16/Oct/2004 | RE: Como almacenar numeros generados aleatoriamente?
Otra opción para solucionarlo, es poner esto en la línea uno: <? ob_start(); ?>
y esto otro en la última: <? ob_end_flush(); ?>
Permite enviar cabeceras después de cargar otros códigos.
Ah y yo en vez de mostrarselo así de "chapucero": echo $_COOKIE["listado"]; Se lo decoraría un poco, separaría los números y le indicaría dónde empieza cada uno y dónde acaba, etcétera
|
27/Mar/2008 21:49 GMT+1 | Perfil · Privado · Conectado · Web |
-TiTo_ Webmaster Habitual

 Mensajes: 33 Desde: 21/Oct/2004 | RE: Como almacenar numeros generados aleatoriamente?
Si, si eso lo voy a hacer pero la verdad es que aun no consigo que me funcione el codigo. Ya he conseguido que no me de ese error, pero la cookie no coge los valores, es decir se queda vacia... alguna idea de por que?
|
27/Mar/2008 21:52 GMT+1 | Perfil · Privado · Desconectado · Web |
EffectedCard Administrador


Usuario PRO Mensajes: 9.013 Desde: 16/Oct/2004 | RE: Como almacenar numeros generados aleatoriamente?
La verdad es que no, la estructura parece correcta.
¿Qué has hecho para solucionar el error? Prueba a poner los dos códigos que te he dicho, aunque el error ya no aparezca, siempre es aconsojable ponerlos (o eso me enseñaron a mí).
|
28/Mar/2008 01:12 GMT+1 | Perfil · Privado · Conectado · Web |
-TiTo_ Webmaster Habitual

 Mensajes: 33 Desde: 21/Oct/2004 | RE: Como almacenar numeros generados aleatoriamente?
Pues basicamente que antes habia un codigo html antes que este, y ahora es lo primero qe esta en el archivo. Ya que lei por ahi que hay que ponerlo antes de que se ejecute nada..
|
28/Mar/2008 09:19 GMT+1 | Perfil · Privado · Desconectado · Web |
EffectedCard Administrador


Usuario PRO Mensajes: 9.013 Desde: 16/Oct/2004 | RE: Como almacenar numeros generados aleatoriamente?
Ajá, pero tú sí que sigues enviando cookies después, ¿no?
setcookie("listado",$valor,time()+604800);
¿Has puesto lo que te he dicho? Es que si funciona, no seguimos pensando; si no funciona, pensamos qué puede ser.
|
28/Mar/2008 12:34 GMT+1 | Perfil · Privado · Conectado · Web |
-TiTo_ Webmaster Habitual

 Mensajes: 33 Desde: 21/Oct/2004 | RE: Como almacenar numeros generados aleatoriamente?
Nada, he puesto los codigos y sigue igual la cookie no coge los valores
|
29/Mar/2008 13:28 GMT+1 | Perfil · Privado · Desconectado · Web |
EffectedCard Administrador


Usuario PRO Mensajes: 9.013 Desde: 16/Oct/2004 | RE: Como almacenar numeros generados aleatoriamente?
El echo $_COOKIE["listado"]; no muestra ningún valor, es eso, ¿no?
¿Puedes subirlo a un servidor para que lo pruebe?
|
29/Mar/2008 14:30 GMT+1 | Perfil · Privado · Conectado · Web |
-TiTo_ Webmaster Habitual

 Mensajes: 33 Desde: 21/Oct/2004 | RE: Como almacenar numeros generados aleatoriamente?
Efectivamente, el script lo tengo subido en
http://deltito.es/ruleta/index.php
|
29/Mar/2008 14:32 GMT+1 | Perfil · Privado · Desconectado · Web |
EffectedCard Administrador


Usuario PRO Mensajes: 9.013 Desde: 16/Oct/2004 | RE: Como almacenar numeros generados aleatoriamente?
Te cuento, he comprobado las cookies y si que las guarda perfectamente.
16%7C32%7C16%7C3%7C29
El problema es que transforma | por %7C. Así que, dos opciones, en vez de usar la barra | usas un simple espacio o en vez de la barra | su código raro %7C. Mejor lo de los espacios.
PD: Me ha gustado mucho lo de la ruleta
Editado por EffectedCard, Sábado, 29 de Marzo de 2008, 14:37 |
29/Mar/2008 14:37 GMT+1 | Perfil · Privado · Conectado · Web |
-TiTo_ Webmaster Habitual

 Mensajes: 33 Desde: 21/Oct/2004 | RE: Como almacenar numeros generados aleatoriamente?
Muchas gracias effect,
no se si lo he entendido bien porque he modificado justo donde antes estaba | por lo de %7C y por un espacio y sigue sin funcionar, quizas lo estoy haciendo mal? es decir en plan
$listado=$_COOKIE["listado"]; $elemento=explode(" ", $listado); // con el espacio $num=sizeof($elemento);
lo de la ruleta es un proyecto en el que estoy trabajando ojala os llegue a los oidos algun dia ;)
|
29/Mar/2008 14:44 GMT+1 | Perfil · Privado · Desconectado · Web |
EffectedCard Administrador


Usuario PRO Mensajes: 9.013 Desde: 16/Oct/2004 | RE: Como almacenar numeros generados aleatoriamente?
Cogiendo tu código de arriba, quedaría así:
<? $numero = rand (0, 36); echo $numero; ?> <br><br><a href="index.php">Generar</a> <? print $_COOKIE["listado"];
$listado = $_COOKIE["listado"]; $elemento = explode(" ", $listado); $num = sizeof($elemento);
if(!$_COOKIE["listado"]){ setcookie("listado",$numero,time()+604800); }
else{
if($num<10){ unset($_COOKIE["listado"]); $valor = $numero." ".$listado; setcookie("listado",$valor,time()+604800); }
else{ unset($_COOKIE["listado"]); $valor = $numero." ".$elemento[0]." ".$elemento[1]." ".$elemento[2]." ".$elemento[3]." ".$elemento[4]." ".$elemento[5]." ".$elemento[6]." ".$elemento[7]." ".$elemento[8]; setcookie("listado",$valor,time()+604800); }
} ?>
Luego te faltaría hacerle los cambios como los dos códigos esos, la ruleta, etcétera.
De lo que tengo miedo es que te cambie los espacios por pero no creo.
|
29/Mar/2008 15:20 GMT+1 | Perfil · Privado · Conectado · Web |
-TiTo_ Webmaster Habitual

 Mensajes: 33 Desde: 21/Oct/2004 | RE: Como almacenar numeros generados aleatoriamente?
Na tio ni con espacio ni con .... ahora mismo lo tengo en el servidor con por si quieres comprobar algo,
un saludo
|
29/Mar/2008 19:11 GMT+1 | Perfil · Privado · Desconectado · Web |
EffectedCard Administrador


Usuario PRO Mensajes: 9.013 Desde: 16/Oct/2004 | RE: Como almacenar numeros generados aleatoriamente?
Lo que te decía: 35%26nbsp%3B30%26nbsp%3B20%26nbsp%3B12%26nbsp%3B7
Está cambiando los espacios por pero, a la vez cambia el & y el ; por %26 y %3B.
Haz una cosa, utiliza el código de antes, el de las barritas (es menos lioso). Pero cuando hagas el explode(), en vez de poner explode("|" pon explode("%7C"
Otra cosa al respecto, no pongas echo $_COOKIE tal cual, primero haz la separación y muestra todos los números separados.
Veremos si así funciona, cruzo los dedos.
|
29/Mar/2008 21:49 GMT+1 | Perfil · Privado · Conectado · Web |
-TiTo_ Webmaster Habitual

 Mensajes: 33 Desde: 21/Oct/2004 | RE: Como almacenar numeros generados aleatoriamente?
Eres un autentico crack, ha bastado con hacer el echo con los elementos en vez de con la cookie a pelo, muchas gracias effect, no lo habria conseguido sin tu ayuda,
un saludo
|
30/Mar/2008 13:55 GMT+1 | Perfil · Privado · Desconectado · Web |
| 22 mensajes. Página 1 de 2 |
· Portal · Foros · PHP |