Chaine de charactères et base de données

Chaine de charactères et base de données - PHP - Programmation

Marsh Posté le 06-06-2005 à 09:52:44    

Salut tout le monde.
 
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

Reply

Marsh Posté le 06-06-2005 à 09:52:44   

Reply

Marsh 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().

Reply

Marsh 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
Reply

Marsh Posté le 06-06-2005 à 10:01:58    

yoyo354 a écrit :

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().


 
C'est possible?  :heink:

Reply

Marsh Posté le 06-06-2005 à 10:04:59    

Je veux dire par là :  
6-6-26-85-45-65
ou :  
8-85-63-7-7-25
(C'est dure le matin quand on se lève...Surtout quand on passe son bac dans 4 heures :o)

Reply

Marsh Posté le 06-06-2005 à 10:05:05    

ok merci pour le nom de la fonction.
 
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).

Reply

Marsh Posté le 06-06-2005 à 10:09:44    

yoyo354 a écrit :

Je veux dire par là :  
6-6-26-85-45-65
ou :  
8-85-63-7-7-25
(C'est dure le matin quand on se lève...Surtout quand on passe son bac dans 4 heures :o)


C'est ce que j'avais compris.
 

angel92 a écrit :

ok merci pour le nom de la fonction.
 
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...

Reply

Marsh Posté le 06-06-2005 à 10:10:27    

et y'aura des sous a gagner sur ton site ? :D

Reply

Marsh 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 !

Reply

Marsh Posté le 06-06-2005 à 10:17:19    

comment ca trop de condition?

Reply

Marsh Posté le 06-06-2005 à 10:17:19   

Reply

Marsh Posté le 06-06-2005 à 10:20:10    

array_rand()

Reply

Marsh 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) ...
 
Donc voila, récursivité ou boucle while ?

Reply

Marsh Posté le 06-06-2005 à 10:23:27    

angel92 a écrit :

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

Reply

Marsh Posté le 06-06-2005 à 10:23:54    

cad ?

Reply

Marsh Posté le 06-06-2005 à 10:25:01    

array_rand()  :fou:


Message édité par jeff@be le 06-06-2005 à 10:25:22
Reply

Marsh 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

Reply

Marsh Posté le 06-06-2005 à 10:27:17    

jeff@be a écrit :

array_rand()  :fou:


 
+1

Reply

Marsh Posté le 06-06-2005 à 10:28:15    

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 ?

Reply

Marsh Posté le 06-06-2005 à 10:31:37    

euh vé pas bete :D

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
Reply

Marsh Posté le 06-06-2005 à 10:38:04    

voila une tres bonne question !

Reply

Marsh Posté le 06-06-2005 à 10:40:15    

angel92 a écrit :

voila une tres bonne question !


 
 ;)  

Reply

Marsh Posté le 06-06-2005 à 10:41:30    

Non, ça sortira des clés uniques, pas deux fois la même.

Reply

Marsh Posté le 06-06-2005 à 10:45:38    

eh bien voilà

Reply

Marsh 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  :) .

Reply

Marsh Posté le    

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed