tirrage au sort.

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : tirrage au sort.

par hakazizi » 07 déc. 2008, 21:47

super l'orthographe meme moi je ne la ferais pas.
mais le
verbe mettre et pas mais qui veut dire autre chose

par Mathieu68 » 03 déc. 2008, 11:05

ok super sa fonctionne. merci bien pour votre aide.
mais le post en résolu :D

par fabrice88250 » 03 déc. 2008, 00:42

ok super sa fonctionne. merci bien pour votre aide.

par Mathieu68 » 02 déc. 2008, 19:05

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();

par fabrice88250 » 02 déc. 2008, 16:18

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... :roll:

par Mathieu68 » 02 déc. 2008, 14:54

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à :D

tu peux faire une boucle pour afficher tout le monde et à le cadeaux va

par fabrice88250 » 02 déc. 2008, 12:35

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 ?

par Mathieu68 » 02 déc. 2008, 11:25

le message avant est de moi :)

par Invité » 02 déc. 2008, 10:44

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.

par fabrice88250 » 01 déc. 2008, 23:35

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();

par Calimero » 01 déc. 2008, 22:38

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.

par fabrice88250 » 01 déc. 2008, 21:42

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.

par hakazizi » 01 déc. 2008, 21:23

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();

par Mathieu68 » 01 déc. 2008, 20:52

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 :D

par fabrice88250 » 01 déc. 2008, 20:13

ok mais comment faire pour que les noms qui ont deja été tiré ne soit plus accessible ?