Vous n'êtes pas identifié(e).
Bonjour,
J'essai de créé une mini loterie pour un site. avec des gains dégréssif. (5 numéros trouvé = 2000 points, 4 numéros = 1000...)
J'ai codé toutes la partie utilisateur pour enregistrer les grilles.
La table avec les parties sont du type : idtirate | idmembre | grille
grille contient les numéros choisis par l'utilisateur de la forme XX-XX-XX-XX-XX
Dans la partie administration, j'ai codé le tirage aléatoire, mais maintenant je bloque pour compter pour chaque grille le nombre de numéro trouvé dans le désordre.
$tirage qui contient les numéros du tirage est de la forme xx,xx,xx,xx,xx
Je ne sais pas du tout comment faire pour compter les bon numéros.
si quelqu'un pouvait m'orienter?
Je vous en remercie d'avance.
Hors ligne
Bonjour,
faire ça, directement avec une requète mysql, je ne sais pas !
Je peux toutefois te proposer une méthode :
[code php]
<?php
// Le tirage sous la forme d'un tableau
$tirage = array(12, 54, 7, 99, 45);
// La grille sous la forme d'un tableau
$grille = array(2, 52, 7, 99, 41);
// On retourne le tableau des numéros communs aux deux tableaux précédents
$nums_en_commun = array_intersect($tirage, $grille);
// On compte le nombre de numéro dans ce dernier tableau
echo count($nums_en_commun);
?>
[/code]
Pour obtenir les tirages sous la forme d'un tableau à la place d'une chaine de caractères, tu utilises :
[code php]
<?php
// Obtenu depuis la base de données
$tirage_str = '12,54,07,99,45';
$grille_str = '2-52-7-99-41';
// Converti une chaine de caractère en tableau en utilisant le séparateur ','
$tirage = explode(',', $tirage_str);
// Converti une chaine de caractère en tableau en utilisant le séparateur '-'
$grille = explode('-', $grille_str);
?>
[/code]
Ce qui donne :
[code php]
<?php
function nb_bon_num($tirage_str, $grille_str){
$tirage = explode(',', $tirage_str);
$grille = explode('-', $grille_str);
$nums_en_commun = array_intersect($tirage, $grille);
return count($nums_en_commun);
}
?>
[/code]
Ensuite, il reste à parcourir toutes les grilles et d'appliquer cette fonction...ce qui est peut-être assez long :S
D'autre part, dans un soucis de cohérence, il faudrait peut-être mieux utiliser la même typographie pour les chaines de caractères, à savoir tiret ou virgule, et que il ne peut-être pas nécessaire de vouloir enregistrer '02' pour '2' puisque l'on traite des entiers !
Dernière modification par moijhd (19-08-2009 13:26:45)
Hors ligne
Merci pour ta réponse.
Je vais tester cela dessuite dans ma boucle while.
Pour l'histoire du 02 à la place du 2 c'est une histoire avec le javascript.
Hors ligne
Saluton,
Une fois encore, le non-respect des formes normales dans la conception d'une base de données, débouche sur des problèmes pour écrire les requêtes.
La colonne grille contient une concaténation de 5 données élémentaires, les numéros joués. La table devrait être de la forme idtirate, idmembre , choix, choix recevant chacune des valeurs choisies pour un tirage. La clé primiare de la table serait composée de l'ensemble des colonnes un choix ne pouvant intervenir qu'une fois pour le tirage d'un membre
La requête se ferait alors naturellement par comptage avec groupage sur idtirate, idmembre pour les lignes dont choix seraient dans $tirage.
Gloire à qui n'ayant pas d'idéal sacro-saint,
Se borne à ne pas trop emmerder ses voisins. G. Brassens Don Juan 1976.
Avĉjo MoKo kantas
La chaîne YouTube MoKo Papy
Hors ligne
Est ce que je peux voir à quoi ressemble une telle requete ?
Hors ligne
Maljuna Kris j'avais pensé à une structure de ce genre.
Mais aprés je ne savais pas comment faire pour afficher chaque tirage du membre de la forme :
tirage 1 xx-xx-xx-xx-xx-xx
rirage 2 xx-xx-xx-xx-xx-xx
Hors ligne
Voila ma requète qui fonctionne :
while ($result = mysql_fetch_array ($req95))
{
$idpartie = $result['idpartie'];
$idmembre = $result['idmembre '];
$grille_str = $result['grille'];
$nbrnum = $result['nbrnum'];
echo "Numéro correspondant : $nbrnum : Grille : $grille_str | Tirage : $tirage_str<br>\n";
}
Attention, j'ai gardé le nom de grille pour la colonne, mais dedans est bien inséré un nombre par enregistrement
Par contre j'ai un problème pour afficher tous les numéro de la même grille.
Dernière modification par morgan47 (19-08-2009 15:59:56)
Hors ligne
Maljuna Kris j'avais pensé à une structure de ce genre.
Mais aprés je ne savais pas comment faire pour afficher chaque tirage du membre de la forme :
tirage 1 xx-xx-xx-xx-xx-xx
rirage 2 xx-xx-xx-xx-xx-xx
Il se trouve que MySQL propose une fonction native non-standard de la norme SQL, GROUP_CONCAT, qui réalise cette opération.
GROUP_CONCAT est aux colonnes de type VARCHAR, ce que SUM est aux colonnes numériques.
Gloire à qui n'ayant pas d'idéal sacro-saint,
Se borne à ne pas trop emmerder ses voisins. G. Brassens Don Juan 1976.
Avĉjo MoKo kantas
La chaîne YouTube MoKo Papy
Hors ligne
Merci beaucoup pour ton aide
Hors ligne