Je commence à m'arracher les cheveux (et vu l'heure la réflexion est tout sauf efficace vu que 7h30 la c'est encore le soir pour moi...)
Je galère betement sur un truc trés con, le stockage d'une variable dont la valeur est générée aléatoirement.
Prenons l'exemple suivant :
L'exemple est trés simple, on assigne une valeur aléatoire comprise entre 0 et 10 à une variable $test. On affiche cette variable, puis on la stocke en base et en session. Et bien la valeur stocké n'est pas la même que la valeur affichée. On peut utiliser la variable $test 15 fois dans le script, elle garde bien sûr sa valeur, mais si on essaye de la stocker dans une bdd ou en session, on dirait qu'un random est effectué à nouveau.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 $test=(rand()%10; echo $test; mysql_query("UPDATE t_test SET test=".$test." WHERE id=1"); $_SESSION['test']=$test;
J'ai bien sur essayé pas mal de trucs, un peu toutes les facons de faire de l'aléatoire (mt_rand, un tableau avec array_rand, shuffle($array) -> $array[0], et meme une requete avec ORDER BY RAND()), j'ai tenté avec $test=(int)rand(), de faire un $test=$test/1 apres le rand, et quelques trucs du genre.
Bref, rien n'y fait, pas moyen de concerver la valeur obtenue aléatoirement (ou alors peut être par des moyens encore plus tordus), et ce aussi bien en local que sur un serveur. Il reste des possibilités de générer du pseudo aléatoire a partir d'md5, time ou autre, mais ca n'explique pas ca, et j'aime pas ne pas comprendre ce sur quoi j'ai perdu betement du temps
J'ai pas non plus vu de références sur le sujet, la plupart des utilisations d'un générateur de nombres aléatoires se faisant avec usage direct de la variable.
Si je souhaite stocker cette valeur, c'est pour une rotation d'image. Je récupère aléatoirement l'id d'une image, que je voudrais stocker en session pour éviter d'afficher la même image sur 2 pages consécutives. Un truc tout simple qui aurait du me prendre 5 mins et sur lequel je suis peut être depuis 2-3h le temps de comprendre d'ou venait le problème et expérimenter dans un peu tous les sens...
Sur ce, je vais me coucher
Partager