[réglé] tirage au sort - forum alsacréations : css et standards web
[réglé] tirage au sort - forum alsacréations : css et standards web
forum alsacréations : css et standards web
accueil
s'inscrire
règles
recherche
faqtutorielsblogemploiboutique
nouveau sur le forum ? voici votre case départ pour bien débuter.
liens contextuels :
forum alsacréations : css et standards web · standards web et langages serveurs · [réglé] tirage au sort
rechercher dans le sujet :
auteur
makta
# 29 oct 2007 - 15:31:38
9 posts
bonjour,
j'ai actuellement deux problèmes, un concerne l'insertion de données dans une table (j'utilise mysql 5.0) et mon autre problème concerne la réalisation d'un tirage au sort sur les valeur de la table précédente.
pour mon premier problème voici mon code :
<!doctype html public "-//w3c//dtd xhtml 1.0 strict//en" "http://www.w3.org/tr/xhtml1/dtd/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr" >
<head>
<title>rédiger une news</title>
<meta http-equiv="content-type" content="text/html; charset=iso-8859-1" />
<style type="text/css">
h3, form
{
text-align:center;
}
</style>
</head>
<body>
<form action="joueur.php" method="post">
nom: <input type="text" name="nom" ><br><br>
login: <input type="text" name="login"><br><br>
email: <input type="text" name="email" ><br><br>
<input type="submit" value="envoyer">
<?php
if (isset ($_post['nom']) and isset ($_post['login']) and isset ($_post['mail']))
{
//connection a la base de données
$host = localhost;
$user = ***;
$bdd = ***;
$passwd = ***;
mysql_connect($host, $user,$passwd) or die("erreur de connexion au serveur");
mysql_select_db($bdd) or die("erreur de connexion a la base de donnees");
if ($_post['nom']!= null and $_post['login']!=null and $_post['mail']!=null)
{
//on passe a des variables les differents textes entres par l'admin
$nom = htmlentities ($_post['nom']);
$login = htmlentities ($_post['login']);
$email = htmlentities ($_post['email']);
//insertion des nouvelles news sous forme de variable dans la base de données
mysql_query("insert into joueur1 values('', '" . $nom . "', '" . $login . "', '" . $email . "')");
mysql_close();
}
else
{ echo "veuillez remplir tous les champs";}
}
?>
</form>
</body>
</html>
le problème est que les valeurs entrées dans les champs ne rnetre pas dans la table, ça sent l'erreur con mais je vois pas ^^'
pour mon deuxième problème je vous explique un peu, le formulaire précédent enregistre donc des utilisateurs pour un concour. ces utilisateurs peuvent s'enregistrer plusieurs durant toute la durée du concours (super des doublons dans la table... ).
a la fin de la période de jeu, je rempli un autre formulaire qui permettra de lancer le tirage au sort. ce formulaire est composé d'un champs où l'on rentre le nombre de gagnant et d'un bouton lançant le tirage au sort.
ok "utilise la fonction random me dira-t-on" et je suis d'accord mais j'ai un peu de mal à saisir le code qu'il faut générer pour tirer au sort 8 personnes differentes dans ma table sachant qu'il y a des doublons et cela en un seul click bouton ^^'
si quelqu'un avait une piste ou suggestion à ce sujet je suis preneur. modifié par makta (06 nov 2007 - 14:15)
brucefeuillette
# 29 oct 2007 - 16:48:23
84 posts
hello !
personnellement je ne suis pas très fan de l'écriture values() pour le insertions.
insert into joueur1 set login='$login', nom='$nom'... etc
l'avantage c'est que les champs qui s'auto-incrémentent se mettent à jour tout seuls.
pour ton problème de doublons, 2 solutions.
soit tu vérifies à l'inscription que le login ou le nom ou le mail ou les 3 n'existent pas dans ta table avant insertion.
soit tu fais une requête avec un group by pour éliminer les doublons en sortie.
le code dessous groupe les réponses par login, donc si un login est noté 10 fois, il ne sortira qu'une seule fois.
il est possible de grouper sur plusieurs colonnes.
select login, nom, email from joueur1 group by login order by rand() limit 8
avec ça, ça devrait tourner... modifié par brucefeuillette (29 oct 2007 - 16:49)
heyoan
# 29 oct 2007 - 17:35:04
un p'tit kiwiz coca ? 1041 posts
salut,
brucefeuillette a écrit :l'avantage c'est que les champs qui s'auto-incrémentent se mettent à jour tout seuls.euh... ben c'est pareil avec values ...
sinon makta ton code ne peut pas fonctionner puisque tu testes $_post['mail'] alors que le name de ton <input> est email !
une suggestion :<form action="joueur.php" method="post">
<p>
<label for="nom">nom:</label>
<input type="text" name="nom" />
</p>
<p>
<label for="login">login:</label>
<input type="text" name="login" />
</p>
<p>
<label for="email">email:</label>
<input type="text" name="email" />
</p>
<p>
<input type="submit" name="envoyer" value="envoyer" />
</p>
</form>
<?php
if (isset($_post['envoyer'])) {
if ((!empty($_post['nom'])) && (!empty($_post['login'])) && (!empty($_post['email']))) {
//connection a la base de données
// ...
//on passe a des variables les differents textes entres par l'admin
$nom = htmlentities ($_post['nom']);
$login = htmlentities ($_post['login']);
$email = htmlentities ($_post['email']);
//insertion des nouvelles news sous forme de variable dans la base de données
$sql = "insert into joueur1 values('', '" . $nom . "', '" . $login . "', '" . $email . "')";
mysql_query($sql) or die('erreur');
mysql_close();
}
else
{
echo "veuillez remplir tous les champs";
}
}
?>
a+un être en tant qu'être ne peut-il être autre qu'il n'est s'il n'exprime pas lui même son être ?
siddhy
# 29 oct 2007 - 17:35:36
49 posts
salut,
a priori, pour ton 1er probleme, il y aurait peut etre une erreur de frappe sur le champ 'mail' ou 'email':
php :
if ($_post['nom']!= null and $_post['login']!=null and $_post['mail']!=null)
html :
email: <input type="text" name="email" ><br><br>
<edit>... trop lent modifié par julien royer (29 oct 2007 - 17:45)il faut s'élever au moyen de ce qui cause la chute...
makta
# 29 oct 2007 - 17:39:19
9 posts
le problème ne vient pas de la requête j'en suis quasiment certain (testé directement sur la base ça fonctionne parfaitement), de plus la syntaxe que tu me donnes ne fonctionne malheureusement pas non plus.
pour le problème numero 2, les doublons ne me gêne pas tant que ça, je suis de toute façon obligé de les garder vu que cela m'est demandé. du coup pour le rand j'utilise un rand dans une requête ce qui donne :
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr" >
<head>
<title>rédiger une news</title>
<meta http-equiv="content-type" content="text/html; charset=iso-8859-1" />
<style type="text/css">
h3, form
{
text-align:center;
}
</style>
</head>
<body>
<form action="mo.php" method="post">
nombre de gagnants :<input type ="text" name="hasard">
<?php
//connection a la base de données
$host = localhost;
$user = root;
$bdd = jeux_pdcn;
$passwd = vpfgmwnv;
mysql_connect($host, $user,$passwd) or die("erreur de connexion au serveur");
mysql_select_db($bdd) or die("erreur de connexion a la base de donnees");
if ($_post['hasard'] != null)
{
$hasard = htmlentities($_post['hasard']);
$r = mysql_query("select email from joueur1 order by rand() limit '".$hasard."'");
mysql_close();
}
?>
<input type="submit" value="tirage">
</form>
</body>
</html>
du coup même probleme que pour le 1 echo du champs ça marche j'ai bien la valeur que je met dans les champs, echo du resultat...rien même en rentrant comme valeur 1 pour qu'il ne me sorte qu'un seul email, il me le sort pas :s
makta
# 29 oct 2007 - 17:59:34
9 posts
merci heyoan et siddhy pour vos réponses, en effet ça sentait l'erreur d'innatention.
réponse de ton code heyoan, erreur. la query ne passe pas
heyoan
# 29 oct 2007 - 20:27:46
un p'tit kiwiz coca ? 1041 posts
re',
en remplaçant :mysql_query($sql) or die('erreur');parmysql_query($sql) or die(mysql_error());tu auras un message plus clair sur ce qui ne va pas...
et sinon un echo $sql."<br />"; après avoir alimenté la variable permettrait de voir tout de suite l'erreur.
autresinon : la table joueur1 contient bien 4 champs dont le premier a l'attribut auto_increment ?
a+ modifié par heyoan (29 oct 2007 - 20:28)un être en tant qu'être ne peut-il être autre qu'il n'est s'il n'exprime pas lui même son être ?
brucefeuillette
# 30 oct 2007 - 08:33:52
84 posts
la différence entre set et le values() c'est que dans values, il faut renseigner tous les champs, y compris ceux qui sont vides, et dans l'ordre alors qu'avec set, on adresse directement les champs concernés, sans s'occuper de ceux qui sont vides. (oui, je suis fainéant des fois )
pour la requête qui coince, quelque fois ce que je fais c'est un echo, comme heyoan indique, c'est de tester directement la requête dans mysql.
une fois qu'elle est d'aplomb je rajoute mes variables php et je la mets dans le code.
au moins ça réduit les champs de recherche, si ça fonctionne avant et que le fait de passe en php coince, c'est qu'une variable passe mal.
makta
# 30 oct 2007 - 09:26:57
9 posts
personnelement le "set" je ne m'en sert que pour les update
merci à vous en tout cas, cela fonctionne. bien que je ne comprenne pas en quoi remplacer le "or die('erreur')" par "or die(mysql_error());" ait un quelconque rapport avec le fonctionnement de la requête...m'enfin^^
maintenant ça ofnctionne alors qu'hier soir non, je vais voir pour mon problème de tirage au sort si le problème n'est pas le même.
encore merci pour votre aide.
p.s: oui oui le premier champs étant l'id il était bien en auto-incrémente ^^
halindel
# 30 oct 2007 - 11:38:08
faite attention aux kiwiz !! 430 posts
bonjour,
remplacer ceux que tu as dit permet de récupéré l'erreur mysql qui est retournée afin de savoir pourquoi celle ci ne c'est pas exécute. c'était pour vérifier que ta requête était bonne. et ne changer rien à ton code.je comprends jamais rien :'(
makta
# 30 oct 2007 - 11:49:37
9 posts
je sais bien, c'est pour ça que je ne comprends aps pourquoi ça ne marchait pas hier et que ce matin cela fonctionne très bien. ^^
makta
# 06 nov 2007 - 09:38:35
9 posts
je me permets de faire remonter le topic n'ayant pas réussi à résoudre mon problème.
je suis toujours avec ma table à doublons, suite à ça les enregistrements des joueurs tirés au sort seront donc stockés dans une table que j'appelle "gagnant" ayant pour caractéristique un email unique. donc si je tire au sort 2 fois la même personne il va falloir que que je boucle afin de relancer le tirage automatiquement et avoir le bon nombre de ggnants sélectionnés.
voilà le début de mon code:
<form action="new_5.php" method="post">
nombre de gagnants :<input type ="text" name="hasard">
<?php
//connection a la base de données
...
mysql_connect($host, $user,$passwd) or die("erreur de connexion au serveur");
mysql_select_db($bdd) or die("erreur de connexion a la base de donnees");
if ($_post['hasard'] != null)
{
$hasard = htmlentities($_post['hasard']);
$result = mysql_query("select email from joueur7 order by rand() limit ".$hasard);
if (!$result) {
echo 'impossible d\'exécuter la requête : ' . mysql_error();
exit;
}
$row = mysql_fetch_array($result);
echo $row[0]; //la valeur du champ email
$s = mysql_query("insert into gagnant values ('".$row[0]."')");
mysql_close();
}
?>
<input type="submit" value="tirage">
un probleme de réglé, reste plus que le fait de tirer plusieurs personne et de n'avoir qu'un seul résultat qui foire.
merci de m'éclairer, pour le premier problème faut-il boucler?^^' modifié par makta (06 nov 2007 - 11:03)
heyoan
# 06 nov 2007 - 11:14:42
un p'tit kiwiz coca ? 1041 posts
salut makta,
tu te simplifierais la vie en ne sélectionnant pas 2 gagnants ayant le même email !
pour cela (en reprenant le code de brucefeuillette) tu pourrais faire :select login, nom, email from joueur1 group by email order by rand() limit 8
a+un être en tant qu'être ne peut-il être autre qu'il n'est s'il n'exprime pas lui même son être ?
makta
# 06 nov 2007 - 11:29:30
9 posts
j'avoue le "groupe by" est une solution aux doublons même si cela ne me dérange vu que dans ma table gagnant j'ai mis l'email en clé unique, il ne peut donc être enregistré qu'une fois.
pour le coup c'est vrai que ça optimise le tirage évitant la boucle au niveau du php, je n'y avais pas pensé merci.
c'est l'insertion dans la table qui me pose plus probleme sachant que la valeur email inséré dans la table est ici le $row[0] or ce $row ne m'affiche qu'un seul résultat même lorsque je lui en demande 2. je n'ai donc la possibilité d'enregistrer qu'un seul email par clic...
modification à faire au niveau du tableau ou?
en tout cas encore merci heyoan. modifié par makta (06 nov 2007 - 11:50)
heyoan
# 06 nov 2007 - 12:43:14
un p'tit kiwiz coca ? 1041 posts
heu... ben faut faire une boucle (foreach, while, ou autre...) !
sinon dans ton cas il suffit de le faire en une seule fois :insert into gagnant (select distinct email from joueur1 order by rand() limit 8)
a+
ps: un exemple de boucle avec while. modifié par heyoan (06 nov 2007 - 13:32)un être en tant qu'être ne peut-il être autre qu'il n'est s'il n'exprime pas lui même son être ?
makta
# 06 nov 2007 - 14:14:14
9 posts
encore merci heyoan, tout fonctionne.
désolé du dérangement pour rien ^^'
je m'étais déjà servi de ton lien pour d'autre partie de mon code. très utile les liens à lire avant de poster^^
prévenir un modérateur
aller à * accueilsalon général et débutantssalon spécifique aux tutoriels et articles alsacréationshtml, xhtml, sémantique webxml / xsl / rss / foafcss et mise en formedom, javascript, ecmascriptapplications web en lignestandards web et langages serveursaccessibilité du webencodage et internationalisationressources et liens sur les standardsergonomie et esthétique générale, demandes d'avis et de critiquesle bar du forumjeux et concours du forumsalon des modosa vos marquesbest-of
les références web : openweb.eu.org - opquast.com - webmaster-hub.com - webrankinfo.com - salemioche.net - web-pour-tous.org - webonorme.org
nos partenaires : editions eyrolles - location vacances france - location vacances europe - bons plans paris
nikozen : hébergement - réalisation : alsacreations.fr
mesure d'audience roi frequentation par
powered by phedio v3.7.9 © dewcontacter l'administrateur - 21.1 ms - charte
Acceuil
suivante
[réglé] tirage au sort - forum alsacréations : css et standards web RMC.fr - Tirage au sort des quarts de finale de la Coupe de la Ligue - Photocouleur : vos tirages photos couleur grand format d’après ... Tirage de l'oracle de la Triade Football - Le tirage du 7e tour Football - 7e tour : le tirage d'Outre-mer Astrologie, tirage de tarot et numérologie Votre labo de développement photo en ligne - Photostore FB Numérique, tirage photo numérique sur toile et transfert de ... FRANCE 2 - Tirage ardu pour le TFC, délicat pour Rennes - Coupes d ... Le tirage de l’Euro 2008 avec Estelle Denis - Toutelatele.com Fastlab - Service en ligne de tirage photo numérique Masters Cup à Shangaï, le tirage au sort ! - Parlons Tennis, le ... FOTO.com France : Développement photo, Tirage photo numérique ... Voyance par l'Oracle de Belline, tirage et interprétation de l ... Fotodiscount : Tirage et développement photo numérique de qualité ... Pixiphot : tirage photo numérique ICONEA : développement photo numérique - tirage photo ... Bienvenue - Participez chaque mois au tirage au sort ! Tirage photo numérique grand format : Photogénie tirage Tirage photo et developpement de photo numérique Tennis: tirage favorable pour Federer au Masters de Shanghaï - La ... Photographie: gagner au tirage - La Tribune.fr Sport24 - Football : Tirage paisible pour la Ligue 2 (08/11/2007 ... Yahoo! Astrologie Perso TousLesLabos.com : Tirage photo (gratuit, code promo, comparatif ... Développement Photo, Comparatif Des Prix De Tirage Photos Numériques Le Figaro - Automobile : Alfa Romeo 8c : tirage limité Tirage photo en ligne : Annuaire OositoO Tirage Tarots Gratuits - Tirage des tarots : gratuit ! - auFeminin.com Tirages Limités Coupe de la Ligue : Quarts de finale :<BR> Tirage au sort aujourd'hui Tirage au sort : 10 albums Heavy Liquid (Paul Pope) à gagner avec ... Bellapix : developpement photo - tirage photo numerique - albums photo Tarot Voyance Gratuit Tirage Jeu de Tarots de Marseille Tarologie ... [Photoshop] Préparer un fichier pour tirage Photoweb Tirage au sort de l'open d'ALLEMAGNE - ITTF Pro Tour - Tennis de ... Le tirage photo numérique Tirage photo numérique Coupe de France 2e tour Tirage Coupe de France 1e tour Tirage et développement photo numérique sur internet Photoweb Tirage photo numérique sur Internet Jeux gratuits tirage au sort Informatique Gifs [Big Bang Blog] - Le tirage au sort, d’Etienne Chouard à Ségolène ... Chambre avec vues édition et vente de tirages Tarot de Marseille gratuit Sport24 - Football : Le tirage du 7e tour tirage photos Comparer les prix et offres Développement Photo ... Apple - Support - Services photo - Options de commande et de tirage Tirage photos : guide d'achat nouvelle génération Tirage photo numérique : comparatif des offres. MisterClic, developpement en ligne de photo numerique, tirage ... Flickr soigne le tirage de vos photos par CNETFrance.fr allAfrica.com: Tunisie: CAN 2008 en Angola - Tirage au sort allAfrica.com: Sénégal: Tirage au sort des préliminaires du ... Loto, tirage du Samedi 10 Novembre 2007 Tirage photo numérique – développement photos numériques tirage au charbon direct tirage contact sur papier azo