CONNEXION
  • RetourJeux
    • Sorties
    • Hit Parade
    • Les + populaires
    • Les + attendus
    • Soluces
    • Tous les Jeux
    • Gaming
  • RetourActu Gaming
    • News
    • Astuces
    • Tests
    • Previews
    • Toute l'actu gaming
  • RetourBons plans
    • Bons plans
    • Bons plans Smartphone
    • Bons plans Hardware
    • Bons plans Image et Son
    • Bons plans Amazon
    • Bons plans Cdiscount
    • Bons plans Decathlon
    • Bons plans Fnac
    • Tous les Bons plans
  • RetourJVTech
    • Actus High-Tech
    • Intelligence Artificielle
    • Smartphones
    • Mobilité urbaine
    • Hardware
    • Image et son
    • Tutoriels
    • Tests produits High-Tech
    • Guides d'achat High-Tech
    • JVTech
  • RetourCulture
    • Actus Culture
    • Culture
  • RetourVidéos
    • A la une
    • Gaming Live
    • Vidéos Tests
    • Vidéos Previews
    • Gameplay
    • Trailers
    • Chroniques
    • Replay Web TV
    • Toutes les vidéos
  • RetourForums
    • Hardware PC
    • PS5
    • Switch 2
    • Xbox Series
    • Switch
    • Pokemon pocket
    • FC 25 Ultimate Team
    • League of Legends
    • Tous les Forums
  • PC
  • PS5
  • Xbox Series
  • Switch 2
  • PS4
  • One
  • Switch
  • iOS
  • Android
  • MMO
  • RPG
  • FPS
En ce moment Genshin Impact Valhalla Breath of the wild Animal Crossing GTA 5 Red dead 2
Liste des sujets

[ SQL ] Tirage de tombola

balkhubam
balkhubam
Niveau 3
30 juillet 2019 à 17:18:14

Bonjour,

Quelque à une idée pour faire un tirage de type tombola en SQL ?

la structure de ma table est ainsi (en simplifier ):

id | member_id | total_ticket

il faudrait donc que le joueur qui a le plus de ticket ai le plus de chance de gagner , mais pas forcement.

Merci.

TidoDaWiseOlMan
TidoDaWiseOlMan
Niveau 7
31 juillet 2019 à 11:05:30

Ce n'est pas comme ça que tu devrais designer ta table SQL.

Pour moi, la colonne "total_ticket" n'a rien à faire là et empêche le système de tombola de se gérer de façon aléatoire. Le mieux serait de faire une entrée pour chaque achat de ticket et non comptabiliser le nombre total de tickets achetés.

En gros :

1 | toto
2 | toto
3 | toto
4 | titi
5 | titi
6 | tata

Ensuite, tu as juste à faire un RAND() SQL pour sortir une ligne au hasard en limitant à 1, par exemple :

SELECT id, member_id FROM table
ORDER BY RAND()
LIMIT 1
balkhubam
balkhubam
Niveau 3
31 juillet 2019 à 14:50:27

Merci pour ta réponse TidoDaWiseOlMan, pour le design de la DB, elle était déjà comme ça :\

Finalement je suis partie sur un traitement en PHP, Si ça intéresse des personnes :
https://stackoverflow.com/questions/445235/generating-random-results-by-weight-in-php/11872928#11872928

Highscore
Highscore
Niveau 7
07 août 2019 à 22:58:27

Ouaip en SQL c'est complexe, bien que ça doive être possible !
Mais en PHP tu peux faire qqchose comme ça :

$results = Tombola::all()      // l'ensemble de tes entrées en db
foreach($results as $r) {
   for ($i = 0 ; $i < $r->totalTickets ; $i++) {
      $lottery[] = $r->membreId;
   }
}
shuffle($lottery);
array_rand($lottery);
echo $lottery[0];
Message édité le 07 août 2019 à 22:58:59 par Highscore
Sous forums
  • Aide à l'achat Mac
  • Création de Jeux
  • Linux
  • Programmation
  • Création de sites web
  • Internet
  • Steam Deck
  • Macintosh
  • Hardware
La vidéo du moment