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 13/12/2011, 23h35   #1
Futur Membre du Club
 
Homme
Assistant Maitrise d'Ouvrage
Inscription : novembre 2004
Messages : 34
Détails du profil
Informations personnelles :
Sexe : Homme
Âge : 32
Localisation : France, Yvelines (Île de France)

Informations professionnelles :
Activité : Assistant Maitrise d'Ouvrage
Secteur : Industrie

Informations forums :
Inscription : novembre 2004
Messages : 34
Points : 15
Points : 15
Par défaut Valeur choisie (presque) au hasard

Bonjour,

J'avance tout doucement dans mon apprentissage de PHP et MySQL et j'aurais aimé vos avis sur la manière de traiter la problématique suivante.

J'ai une table contenant une colonne de prénoms et une colonne de valeurs.
Je souhaiterais faire une sorte de tirage au sort afin de récupérer un prénom au hasard dans ma colonne.... mais le nombre de chances que ce prénom sorte soit en fonction de la valeur de la deuxième colonne.

Exemple pour être plus clair :
Prénom / Valeur
Prénom1 / 1
Prénom2 / 2
Prénom3 / 2
Prénom4 / 3

En gros, Prénom1 a plus de chance de sortir au tirage que Prénom2 3 ou 4.
Prénom 2 ou 3 a plus de chance de sortir au tirage que Prénom4.

Merci d'avance pour votre aide.
memento80 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 14/12/2011, 10h29   #2
Expert Confirmé
 
Avatar de rawsrc
 
Homme Martin
Dev indep
Inscription : mars 2004
Messages : 1 462
Détails du profil
Informations personnelles :
Nom : Homme Martin
Âge : 35
Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

Informations professionnelles :
Activité : Dev indep

Informations forums :
Inscription : mars 2004
Messages : 1 462
Points : 2 552
Points : 2 552
Envoyer un message via Skype™ à rawsrc
Bonjour,

Regardes ce fil. La réponse est dedans
__________________
# Dans la Création, tout est permis mais tout n'est pas utile...
rawsrc est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 14/12/2011, 14h32   #3
Futur Membre du Club
 
Homme
Assistant Maitrise d'Ouvrage
Inscription : novembre 2004
Messages : 34
Détails du profil
Informations personnelles :
Sexe : Homme
Âge : 32
Localisation : France, Yvelines (Île de France)

Informations professionnelles :
Activité : Assistant Maitrise d'Ouvrage
Secteur : Industrie

Informations forums :
Inscription : novembre 2004
Messages : 34
Points : 15
Points : 15
Bonjour,

Merci pour ce lien. Effectivement, c'est exactement la même demande que moi.
Je n'ai apparemment pas utilisé les bons mots clés pour chercher sur le forum avant, ou je n'ai pas cherché sur le bon forum aussi....

Citation:
Bonjour,
si fréquence pour toi signifie donner plus de chance, ce qui pour de l'aléatoire est surprenant, une solution serait de mettre les ID dans un tableau avec autant d'entrée que la fréquence que tu souhaites
en résumé
Citation:
1,1,1,1,1,1,1,1,1,1,2,2,2,2,2,2,2,2,3,3,3,3,3,3,3,3,3,3,4,4,4,4,4,..etc...
Néanmoins, j'ai un doute :
étant donné que j'aurais plusieurs milliers de lignes dans ma table, l'utilisation d'un tableau dans ce cas n'est-il pas limité ?
Un tableau avec 100 000 entrées par exemple serait peut-être un peu trop (performance, mémoire, .... ) ?
memento80 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 15/12/2011, 10h41   #4
Expert Confirmé
 
Avatar de rawsrc
 
Homme Martin
Dev indep
Inscription : mars 2004
Messages : 1 462
Détails du profil
Informations personnelles :
Nom : Homme Martin
Âge : 35
Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

Informations professionnelles :
Activité : Dev indep

Informations forums :
Inscription : mars 2004
Messages : 1 462
Points : 2 552
Points : 2 552
Envoyer un message via Skype™ à rawsrc
Bonjour,

Si tu as peur de mettre à genoux ton serveur, tu peux tout à fait procéder autrement.
Tu créés une table t_participant dans laquelle tu mets autant de noms (et/ou copies de noms) que tu veux en fonction de ta valeur de fréquence et ensuite il ne te reste plus qu'à faire :
Code sql :
SELECT id, nom FROM t_participant ORDER BY RAND() LIMIT 1;
Avec ça le serveur mysql te décharge de toute la lourdeur, de ton côté tu dois bien évidemment suivre précisément en PHP les entrées sorties de ta table t_participant.
Et normalement le tour est joué
__________________
# Dans la Création, tout est permis mais tout n'est pas utile...
rawsrc est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 15/12/2011, 22h34   #5
Futur Membre du Club
 
Homme
Assistant Maitrise d'Ouvrage
Inscription : novembre 2004
Messages : 34
Détails du profil
Informations personnelles :
Sexe : Homme
Âge : 32
Localisation : France, Yvelines (Île de France)

Informations professionnelles :
Activité : Assistant Maitrise d'Ouvrage
Secteur : Industrie

Informations forums :
Inscription : novembre 2004
Messages : 34
Points : 15
Points : 15
Merci pour la piste.
Du coup, j'ai un peu mélangé les solutions pour trouver ce qui me convenait.

Comme dans la première réponse :
1 - J'ai ajouté une colonne fréquence à ma table des prénoms
2 - J'ai généré un tableau contenant l'ensemble des fréquences ([1,2,2,3,3,3 ... ])

A ma manière :
3 - J'ai tiré au sort la fréquence dans le tableau
4 - J'ai tiré au hasard dans ma table de prénoms en faisant une pré-sélection sur le fréquence déterminée avant.

Voilà.
Merci pour l'aide apportée.
memento80 est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 04h43.


 
 
 
 
Partenaires

Hébergement Web