Je souhaiterai savoir comment effectué un tirage aléatoire Mysql ca c'est bon mes je voudrais le faire par rapport à un pourcentage défini dans la basse de données ?
J'espère avoir été claire merci pour votre aide
Code : Tout sélectionner
+---------+-------------+
| valeur | pondération |
+---------+-------------+
| valeur1 | 20% |
| valeur2 | 30% |
| valeur3 | 50% |
+---------+-------------+Code : Tout sélectionner
SELECT * FROM laTable ORDER BY RAND() LIMIT 1Code : Tout sélectionner
valeur1
valeur1
valeur2
valeur2
valeur2
valeur3
valeur3
valeur3
valeur3
valeur3<?php
/**
* Basé sur le schéma suivant :
*
* CREATE TABLE `phpfrance`.`valeurs` (
* `id_valeur` INT UNSIGNED NOT NULL AUTO_INCREMENT ,
* `nom` VARCHAR( 255 ) NOT NULL ,
* `ponderation` INT NOT NULL ,
* PRIMARY KEY ( `id_valeur` )
* ) ENGINE = InnoDB
*/
// Exemple de connexion à une base MySQL
$dbh = new PDO('mysql:host=localhost;dbname=phpfrance', 'root', 'password');
$str_requete = 'SELECT nom, ponderation FROM valeurs';
$a_results = array();
// On parcours la liste des résultats
foreach( $dbh->query($str_requete) as $a_valeur )
{
// On ajoute autant de fois la valeur que la pondération l'indique
for($i = 0; $i < $a_valeur['ponderation']; $i++)
$a_results[] = $a_valeur['nom'];
}
// Et maintenant, on récupére une valeur aléatoirement dans ce tableau
$gagnant = $a_results[array_rand($a_results)];
echo "Et le gagnant est '".$gagnant."'";
Code : Tout sélectionner
+---------+-------------+
| valeur | pondération |
+---------+-------------+
| valeur1 | 20% |
| valeur2 | 30% |
| valeur3 | 50% |
+---------+-------------+if ($tirage<20) echo "valeur 1"; // donc entre 0 et 19
else
if ($tirage<50) echo "valeur 2"; // donc entre 20 et 49
else
echo "valeur 3";
Tout bêtement...