Précédent   Forum des professionnels en informatique > PHP > PHP & SGBD > PHP & MySQL
PHP & MySQL Forum d'entraide sur les fonctions MySQL avec PHP. Avant de poster -> FAQ MySQL, Cours MySQL et Sources MySQL. Pour les questions concernant le moteur MySQL plutôt que les fonctions PHP, merci d'utiliser le forum MySQL.
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
Vieux 24/01/2010, 16h16   #1 (permalink)
Membre du Club
 
Date d'inscription: juillet 2008
Messages: 85
Par défaut Tirage au sort selon pourcentage de chance

Bonjour à tous, voici ma question :

Je dispose de la table "cadeaux" qui se présente sous cette forme (champs avec exemple de valeurs sur 4 lignes) :

id_cadeau = 1
nom_cadeau = canard
pourcentage = 25


id_cadeau = 2
nom_cadeau = chat
pourcentage = 25

id_cadeau = 3
nom_cadeau = chien
pourcentage = 50

Ce que je cherche à faire, ensuite, dans une page PHP, c'est d'extraire ces trois lignes de la table et de "tirer au sort" une seule valeur (Peut être par ORDER BY rand() LIMIT 1 ? ) en prenant en compte le pourcentage de chance.

QQn1 peut m'aider ?

Merci d'avance !

C'est à dire que dans mon exemple, j'aurai largement plus souvent de chance de tomber sur le cadeau n°3.
vinze60 est déconnecté   Envoyer un message privé Réponse avec citation
Vieux 24/01/2010, 17h27   #2 (permalink)
Modérateur
 
Avatar de sabotage
 
Date d'inscription: juillet 2005
Messages: 10 050
Par défaut

Code sql :
SELECT RAND()*pourcentage AS tirage,id_cadeau FROM TABLE ORDER BY tirage DESC LIMIT 1
sabotage est déconnecté   Envoyer un message privé Réponse avec citation
Vieux 24/01/2010, 17h45   #3 (permalink)
Membre du Club
 
Date d'inscription: juillet 2008
Messages: 85
Par défaut

Houaaa génial !! Merci ça fonctionne parfaitement
vinze60 est déconnecté   Envoyer un message privé Réponse avec citation
Vieux 24/01/2010, 23h14   #4 (permalink)
Membre du Club
 
Date d'inscription: juillet 2008
Messages: 85
Par défaut

J'aimerais revenir sur ce sujet SVP pour comprendre un peu

Qqn1 pourrait m'expliquer comment ça fonctionne pour que je puisse réutiliser ce procéder par la suite ?

De plus, est-il possible d'utiliser ce code dans un UPDATE ? Si oui comment ? car si je fais :

Code sql :
 
 
UPDATE table2 SET id_cadeau = (SELECT RAND()*pourcentage AS tirage,id_cadeau FROM table1 ORDER BY tirage DESC LIMIT 1)
 
 

Comment faire pour que le SELECT me sorte uniquement id_cadeau ?
vinze60 est déconnecté   Envoyer un message privé Réponse avec citation
Vieux 24/01/2010, 23h51   #5 (permalink)
Modérateur
 
Avatar de sabotage
 
Date d'inscription: juillet 2005
Messages: 10 050
Par défaut

Code :
UPDATE table2 SET id_cadeau = (SELECT id_cadeau FROM table1 ORDER BY RAND()*pourcentage DESC LIMIT 1)
 
on multiplie on nombre au hasard par ton pourcentage qui sert de poids.
il y a quand meme une arnaque semantique : le pourcentage n'en est pas un ; il ne fait qu'augmenter la probabilité.
sabotage est déconnecté   Envoyer un message privé Réponse avec citation
Vieux 25/01/2010, 08h53   #6 (permalink)
Membre du Club
 
Date d'inscription: juillet 2008
Messages: 85
Par défaut

Je comprend mieux, merci beaucoup ça fonctionne comem je le souhaite !

Du coup si je comprend bien, je n'ai pas à m'arranger pour que les valeurs soient des pourcentages. Je peux utiliser 0.2, 1, ou 10 ou bien encore 2 000. C'est un coefficient.
vinze60 est déconnecté   Envoyer un message privé Réponse avec citation
NEWS PHPFAQ PHPCours PHPSources PHPLivres PHPScripts PHPOutils PHPComparatifsZend Framework

Réponse Proposer ce sujet en actualité

Précédent   Forum des professionnels en informatique > PHP > PHP & SGBD > PHP & MySQL



Outils de la discussion

Règles de messages
Vous ne pouvez pas créer de nouvelles discussions
Vous ne pouvez pas envoyer des réponses
Vous ne pouvez pas envoyer des pièces jointes
Vous ne pouvez pas modifier vos messages

Les balises BB sont activées : oui
Les smileys sont activés : oui
La balise [IMG] est activée : oui
Le code HTML peut être employé : non
Trackbacks are non
Pingbacks are non
Refbacks are non



Fuseau horaire GMT +1. Il est actuellement 14h21.


Vos questions techniques : forum d'entraide PHP - Publiez vos articles, tutoriels et cours
et rejoignez-nous dans l'équipe de rédaction du club d'entraide des développeurs francophones
Nous contacter - Hébergement - Participez - Copyright © 2000-2010 www.developpez.com - Legal informations.