J'aimerais installer une loterie sur mon site et pour cela j'aurais quelques questions à vous poser. J'ai décidé d'enregsitrer 6 numéros dans un seul champ dans une bdd. Pour pouvoir ensuite le comaprer avec le tirage, je vais utiliser la fonction (je ne me souviens plus du nom) qui permet de découper une chaine de caractères avec un espaceur (ici le tiret-) et de placer les différentes parties dans un tableau.
Ensuite pour comaprer, je prend le 1er numero du tirage et je parcours le tableau de la personne qui a joué pour voir si il a touve le meme numero. et je repete cette operation pour les 6 numéros.
Pensez vous que je dois utilier cette méthode, elle ne risque pas d'etre trop longue?
Merci beaucoup
Publicité
Posté le 06-06-2005 à 09:52:44
yoyo354
Yoyo, le roi du ...
Posté le 06-06-2005 à 10:00:38
Et si dans ton numéro de loterie tu as deux fois le même numéro ?
Sinon, il me semble que c'est la fonction explode().
jeff@be
Posté le 06-06-2005 à 10:01:43
Il y a plus simple: tu tries le tirage, tu tries les numéros choisis par les joueurs, et tu compares les chaînes de caractères en une fois.
Message édité par jeff@be le 06-06-2005 à 10:02:15
Pense tu que c'est la bonne méthode ?
Surtout qu'il n'y aura pas 2 fois le meme numéro (comme au loto quoi).
Ok,ce qui me parait logique...
dedefou
Allias Fiddelcastor
Posté le 06-06-2005 à 10:10:27
et y'aura des sous a gagner sur ton site ?
angel92
Posté le 06-06-2005 à 10:15:31
lol nan meme po ! ptet des lots ou un truc dans le genre, mais bon c'est a l'étude !
et sinon, je me demande aussi comment faire le tirage !
enfin pour tirer 6 numéros mais que aucun ne soit pareil.
J'utilise la fonction rand(1,49) mais y a trop de conditions a gérer, donc je me demande si y a pas un truc plus simple !
dedefou
Allias Fiddelcastor
Posté le 06-06-2005 à 10:17:19
comment ca trop de condition?
Publicité
Posté le 06-06-2005 à 10:17:19
jeff@be
Posté le 06-06-2005 à 10:20:10
array_rand()
angel92
Posté le 06-06-2005 à 10:20:13
ben on tire le premier numéro avec un rand(1,49), ensuite on tire un 2ieme avec aussi rand(1,49), et on le compare au premier tiré, si c'est egale on refait un rand(1,49), et il faut le recomparé encore une fois etc ...
Il faudrais que j'utilise une fonction de récursivité nan ?
Parce que imaginons que le rand(1,49) donc 10 fois d'affilé le meme numéro, faudrait que j'ai prevenu 10 fois la condition.
Ou alors je fait un while( numero2 = numéro 1) ...
ben on tire le premier numéro avec un rand(1,49), ensuite on tire un 2ieme avec aussi rand(1,49), et on le compare au premier tiré, si c'est egale on refait un rand(1,49), et il faut le recomparé encore une fois etc ...
Il faudrais que j'utilise une fonction de récursivité nan ?
Parce que imaginons que le rand(1,49) donc 10 fois d'affilé le meme numéro, faudrait que j'ai prevenu 10 fois la condition.
Ou alors je fait un while( numero2 = numéro 1) ...
Donc voila, récursivité ou boucle while ?
tu fais ca avec des array
angel92
Posté le 06-06-2005 à 10:23:54
cad ?
jeff@be
Posté le 06-06-2005 à 10:25:01
array_rand()
Message édité par jeff@be le 06-06-2005 à 10:25:22
angel92
Posté le 06-06-2005 à 10:25:04
parce que le while en fait c pas si mal que ca, y a que 5 while a faire quoi
Lol ! et je fais comment avec le array rand ?
je cré un tableau de 49 cases, et je pioche dedans ?
Mais comment faire pour ne pas tomber 2 fois sur la meme case ? Faudra aussi que je fasse des whiles nan ?
dedefou
Allias Fiddelcastor
Posté le 06-06-2005 à 10:31:37
euh vé pas bete
Citation :
array_rand ( array input [, int num_req] )
et num_req spécifie le nombre de valeurs que vous voulez obtenir (par défaut, c'est 1).*
est-ce que ca sort les même chiffre si tu met 10 à int num_req ???
Message édité par dedefou le 06-06-2005 à 10:33:31
Non, ça sortira des clés uniques, pas deux fois la même.
dedefou
Allias Fiddelcastor
Posté le 06-06-2005 à 10:45:38
eh bien voilà
pascal_
Posté le 06-06-2005 à 10:50:26
Pour ta requête, je pense que c'est une erreur d'enregistrer 6 numéros dans un seul champ. Au niveau de la rapidité c'est mal, et imagine la gueule des requêtes si tu veux faire par la suite des statistiques sur les numéros pariés.
Je te conseille d'enregistrer 6 nombres dans la base. Et en comptant un char par nombre (le TINYINT de mysql par ex), ça prendra moins de place que la chaine avec les tirets.
Après, pour avoir le tous les gagnants (ceux qui ont plus de 3 bons numéros par exemple), tu peux faire une requête du style :
SELECT *,
( IF( t1 IN( 15,7,9,14,16,36 ), 1, 0)
+ IF( t2 IN( 15,7,9,14,16,36 ), 1, 0)
+ ...
+ IF( t6 IN( 15,7,9,14,16,36 ), 1, 0 ) ) as nbJuste
FROM HAVING nbJuste > 3
ORDER BY nbJuste
avec 15,7,9,14,16,36 le tirage, tu compte en fait le nombre de bons numéros de chaque joueur.
Et tu obtiens d'un coup tous les joueurs qui ont plus de 3 bons numéros .