Page 1 sur 2
tirrage au sort.
Posté : 01 déc. 2008, 19:55
par fabrice88250
bonjour,
il y a quelques jours j'avais posé une question sur ce forum pour savoir comment mettre en place un tirage au sort mais je ne retrouve plus mon message (il a disparu).
je vous ressoumet donc ma demande :
voila on est 6 personnes et on souhaites mettre en place un système de tirage au sort pour savoir qui doit faire un cadeau a qui pour noël.
Évidement vous allez me dire prend 6 papiers met les dans un chapeau et fait tiré chaque personnes sa ira plus vite.
Le problème est que les 6 personnes ne sont pas tous réuni et c'est pour ça que j'avais pensé mettre se système en place.
j'ai pensé a faire comme cela : je stock mes 6 prénoms dans une base de données et après grasse a php je programme un system de tirage au sort. Chaque des 6 personnes pourra ensuite en cliquant sur un bouton voir a qui elle dois faire un cadeau.
pour les noms dans la base de donnée ces bon je les ai rentré par contre pour la partie tirage au sort ben j'ai besoin de votre aide.
Vous pouvez m'aidez ?
Posté : 01 déc. 2008, 20:03
par Mathieu68
mysql_connect("serveur","identifiant","motdepass");
mysql_select_db("ma_base");
$query = "SELECT * FROM nomdelatable ORDER BY RAND() LIMIT 1";
$result = mysql_query($query);
$row = mysql_fetch_row($result);
echo $row[0];
mysql_close();
voilà

Posté : 01 déc. 2008, 20:13
par fabrice88250
ok mais comment faire pour que les noms qui ont deja été tiré ne soit plus accessible ?
Posté : 01 déc. 2008, 20:52
par Mathieu68
mysql_connect("serveur","identifiant","motdepass");
mysql_select_db("ma_base");
$query = "SELECT nom FROM nomdelatable WHERE dispo=0 ORDER BY RAND() LIMIT 1";
$result = mysql_query($query);
$row = mysql_fetch_row($result);
echo $row[0];
$query = "UPDATE nomdelatable SET dispo=1 WHERE nom='".$row[0]."'";
$result = mysql_query($query);
mysql_close();
si tu comprends pas dit le je t'explique

Posté : 01 déc. 2008, 21:23
par hakazizi
tu pourrais egalement utiliser une oucle for pour tire les 6 en meme temps
($result);
mysql_connect("serveur","identifiant","motdepass");
mysql_select_db("ma_base");
i=0;
for( $i=0; $i < 6;$i++)
{
$_query($query);
}query = "SELECT nom FROM nomdelatable WHERE dispo=0 ORDER BY RAND() LIMIT 1";
$result = mysql_query($query);
$row = mysql_fetch_row
echo $row[0];
$query = "UPDATE nomdelatable SET dispo=1 WHERE nom='".$row[0]."'";
$result = mysql
}
mysql_close();
Posté : 01 déc. 2008, 21:42
par fabrice88250
j'ai un petit probleme pour la mise a jour de la bdd :
dans ma table j'ai créé des champs idtir, prenom, dispo, aqui.
pour mettre a jour ma bdd j'ai donc fais comme suit :
$query = "UPDATE tirage SET dispo=1 , aqui='".$row[0]."' WHERE prenom='".$row[0]."'";
mais sa fonctionne pas. je voudrais que le nom tiré soit donc stocké en memoire afin de faire affiché par la suite
telpersonne a tiré telpersonne alors que la j'ai par exemple fabrice a tiré fabrice, laetitia a tiré laetitia......
et je voudrai fabrice a tiré nicolas, laetitia a tiré natacha....
je ne voi pas ou est l'erreur.
Posté : 01 déc. 2008, 22:38
par Calimero
Ca fonctionne très bien par rapport à ton besoin initial. Tu as formulé toi-même la solution à ce nouveau besoin :
je voudrais que le nom tiré soit donc stocké en memoire afin de faire affiché par la suite
Il faut d'abord stocker cette information au moment ou tu la connais, pour pouvoir la réafficher. A vue de nez, cela se ferait dans une nouvelle table.
Posté : 01 déc. 2008, 23:35
par fabrice88250
oui j'arrive bien a recupérer le prenom qui est sortie aleatoirement et je le stock dans cette meme table dans le champs "aqui" (mais bon sa sert pas a grand chose au final car on est sur la meme id).
qu'est ce que je dois faire pour avoir le resultat voulu :
"1er prenom tiré" au sort est attribué a un des prenoms de la liste (qui bien evidement laetitia ne peu pas tiré laetitia).
a ton besoin de 2 tables ? si oui comment on fait ?
voila comment se presente ma table tirage :
Code : Tout sélectionner
CREATE TABLE `tirage` (
`idtir` mediumint(75) unsigned NOT NULL auto_increment,
`prenom` varchar(255) character set latin1 collate latin1_german2_ci default NULL,
`dispo` varchar(255) character set latin1 collate latin1_german2_ci default NULL,
`aqui` varchar(8) default NULL,
PRIMARY KEY (`idtir`)
) ENGINE=MyISAM AUTO_INCREMENT=7 DEFAULT CHARSET=utf8 AUTO_INCREMENT=7 ;
--
-- Contenu de la table `tirage`
--
INSERT INTO `tirage` VALUES (1, 'Laetitia', '0', NULL);
INSERT INTO `tirage` VALUES (2, 'Fabrice', '0', NULL);
INSERT INTO `tirage` VALUES (3, 'Vanessa', '0', NULL);
INSERT INTO `tirage` VALUES (4, 'Pascal', '0', NULL);
INSERT INTO `tirage` VALUES (5, 'Natacha', '0', NULL);
INSERT INTO `tirage` VALUES (6, 'Nicolas', '0', NULL);
mon code php actuel :
$query = "SELECT prenom FROM tirage WHERE dispo=0 ORDER BY RAND() LIMIT 1";
$result = mysql_query($query);
$row = mysql_fetch_row($result);
echo "A été tirer au sort : ";
echo $row[0];
$query = "UPDATE tirage SET dispo=1, aqui='".$row[0]."' WHERE prenom='".$row[0]."'";
$result = mysql_query($query);
mysql_close();
Posté : 02 déc. 2008, 10:44
par Invité
Voici pour moi la structure de ta base de données.
id int(1) //id
prenom varschar (255) //Les prénoms des personnes
dispo int(1) //quand la valeur vaux 1 alors il a déjà été tiré et ne pas l'être encore
$query = "SELECT prenom FROM tirage WHERE dispo=0 ORDER BY RAND() LIMIT 1";
$result = mysql_query($query);
$row = mysql_fetch_row($result);
echo "A été tirer au sort : ";
echo $row[0];
$query = "UPDATE tirage SET dispo=1 WHERE prenom='".$row[0]."'";
$result = mysql_query($query);
mysql_close();
Attention si tout les "dispo" valent 1 alors plus personnes ne peut être tirée donc pensent a réinitialiser le tout.
Posté : 02 déc. 2008, 11:25
par Mathieu68
le message avant est de moi

Posté : 02 déc. 2008, 12:35
par fabrice88250
ok mathieu.
mais j'ai toujours le mem probleme. comment je fais si je veus afficher par exemple laetitia a tirée au sort natacha.
j'ai mis dans ma table le champ aqui afin de recuperer le nom qui vient d'etre tiré au sort mais je ne suis pas sur de cette solution. On me parlait un peu plus haut d'utilisé deux tables mais je ne sais pas comment faire.
j'ai crée un deuxieme table tirageok avec un id en autoincrement et un champ aqui qui du coup disparaitrait de ma table tirage.
Apres mon probleme et comme faire la mise a jour des deux tables en meme temps (si c'est bien ca qu'il faut faire) et ensuit coment faire afficher par exemple en fonctione des tirage laetitia a tirée a sort natchat ?
Posté : 02 déc. 2008, 14:54
par Mathieu68
pourquoi deux tables?????
Tu demandes le prénom de la personne via un formulaire
Tu vérifie que la personne ce trouve bien dans la base de données
Tu fais ton tirage au sort en rajoutant le paramètre rand() et en précisant WHERE prenom!='".$_POST['prenom']."' pour ne pas que le tirage au sort te choisisse toi.
Ensuite tu mets à jour le truc acqui en 1 pour que si tu tires(recharge la page) cela ne recommence pas
le $_post['prenom'] tu le met dans la base de donnée
et voilà
tu peux faire une boucle pour afficher tout le monde et à le cadeaux va
Posté : 02 déc. 2008, 16:18
par fabrice88250
ok pour le formulaire mais pour le reste je bug un peu.
mon formulaire je l'ai fais comme ça :
Code : Tout sélectionner
<form action="tirage.php" method="get" enctype="application/x-www-form-urlencoded" name="Tirage" target="_blank">
<p>Entre ton prenom pour savoir a qui tu dois faire un gros cadeau pour noel puis clique sur le bouton OK</p>
<p>
<input name="prenomtir" type="text" value="Note ton prenom ici" />
<label>
<input type="submit" name="ok" value="OK" />
</label>
</p>
</form>
ma page tirage se presente donc :
$_post['prenomtir']; //je recupere le prenom saisie dans le formulaire
$query = "SELECT prenom FROM tirage WHERE dispo=0 ORDER BY RAND() LIMIT 1";
$result = mysql_query($query);
$row = mysql_fetch_row($result);
echo $_post['prenomtir'];
echo "tu devras faire un cadeau a ";
echo $row[0];
$query = "UPDATE tirage SET dispo=1, aqui='".$row[0]."' WHERE prenom='".$row[0]."'";
$result = mysql_query($query);
mysql_close();
apres pour faire le reste...

Posté : 02 déc. 2008, 19:05
par Mathieu68
Code : Tout sélectionner
<form action="tirage.php" method="post" name="tirage">
<p>Entre ton prenom pour savoir a qui tu dois faire un gros cadeau pour noel puis clique sur le bouton OK</p>
<p>
<input name="prenom" type="text" value="Note ton prenom ici" />
<label>
<input type="submit" name="ok" value="OK" />
</label>
</p>
</form>
$query = "SELECT prenom FROM tirage WHERE dispo=0 ORDER BY RAND() LIMIT 1";
$result = mysql_query($query);
$row = mysql_fetch_row($result);
echo $_POST['prenom'];
echo "tu devras faire un cadeau à ";
echo $row[0];
$query = "UPDATE tirage SET dispo=1, aqui='".$_POST['prenom']."' WHERE prenom='".$row[0]."'";
$result = mysql_query($query);
mysql_close();
Posté : 03 déc. 2008, 00:42
par fabrice88250
ok super sa fonctionne. merci bien pour votre aide.