Affichage complexe resultat jeu concours

Fermé
mouflux Messages postés 2 Date d'inscription lundi 19 novembre 2012 Statut Membre Dernière intervention 19 novembre 2012 - 19 nov. 2012 à 13:58
Nhay Messages postés 838 Date d'inscription vendredi 2 novembre 2012 Statut Membre Dernière intervention 17 décembre 2015 - 20 nov. 2012 à 08:42
Bonjour,

Tout en étant newb en PHP, je souhaite afficher sur une page la liste des 10 gagnants de mon jeu concours.
Un participant est considéré comme gagnant quand :
- il a repondu "1" à trois questions (question1/question2/question3)
- et qu'il a donné un chiffre le plus proche du nombre de participations global (nbparticipant) en positif comme en négatif!
- en cas de reponse identique, c'est celui qui a participé le premier... (id)

Vous n'auriez-pas une idée svp je ne sais pas par ou continuer???

J'ai reussi a afficher le nombre total de participations

// Requete nbr participations
$query_count = "SELECT COUNT(*) AS Nb FROM my_table";	 
$result_count = mysql_query($query_count) or die(mysql_error());

// Affichage nbr participations (basé sur le nombre d'enregistrement en base)
while($row = mysql_fetch_array($result_count)){
	echo "Il y a  ". $row['Nb'] ." participations.";
	echo "<br />";
	$count = $row['Nb']; // je crée cette variable pour la suite
	
	}



Ensuite j'arrive a faire un tableau (je ne mets que le php) et à insérer les données des participants mais sans faire le distingo des questions ni n'aficher que les 10 gagnants...


// Creation et envoi de la requete particpants

$query = "SELECT id,nom,prenom,adresse1,nbparticipant FROM my_table ORDER BY id"; 
$result = mysql_query($query);


// Recuperation des resultats
while($row = mysql_fetch_row($result)){
		$id = $row[0];
		$prenom = $row[1];
		$nom = $row[2];
		$adr = $row[3];
		$sub = $row[4];
		

		echo "<tr>\n
		<td>$id</td>\n
		<td>$prenom</td>\n
		<td>$nom</td>\n
		<td>$adr</td>\n
		<td>$sub</td>\n
		</tr>\n";

	}





A voir également:

3 réponses

Nhay Messages postés 838 Date d'inscription vendredi 2 novembre 2012 Statut Membre Dernière intervention 17 décembre 2015 126
19 nov. 2012 à 18:39
Je ne sais pas comment tes données sont renseigné dans ta table, mais une requête sql devrait te suffire à sortir les 10 gagnants

Tu rajoute dans la clause WHERE, reponse1=1 and reponse2=1 and reponse3=1
(bien sûr avec le nom de tes champs et les jointures si neccessaire)

ensuite, un p'tit order by ABS(estimation_participant-XXXXX) asc, id asc
(remplace XXXXX par le vrai nombre de participant.)
Pour finir, un Limit 0,10 limitera aux dix premier.
0
mouflux Messages postés 2 Date d'inscription lundi 19 novembre 2012 Statut Membre Dernière intervention 19 novembre 2012
19 nov. 2012 à 23:43
merci pour l'info!

Effectivement il il faut faire comme tu dis... j'ai essayé mais ca ne marche pas.
Pour résumé, j'ai le nombre de participation global dans la variable "$count".
Ca marche bien, la variable est bonne

Ensuite, j'ai créé une colonne "win" en fin table qui va être updatée par le calcul suivant :
"win" = l'estimation du participant "nbparticipant" - le nombre de participations global "$count". Il me faut le chiffre absolu, que les negatifs soient positifs.

Ensuite, je fais l'affichage, mais je n'ai pas fait le systeme des 10...

j'ai donc le code suivant mais ca ne marche pas.
Je ne sais pas pourquoi...
Comment dois-je configurer ma dernière colonne, j'ai mis colonne "win", type "int", valeur "6", defaut "null", interclassement vide, attribut vide, NULL coché, auto increment décoché

<html>

	<head>

	<title>title</title>

	</head>

<body>

<table border="1" cellpadding="0" cellspacing="0">

<tr>

<th>Id</th>
<th>prenom</th>
<th>nom</th>
<th>adresse</th>
<th>sub</th>
<th>win</th>


</tr>

<?php
// Déclaration des paramètres de connexion
$host = localhost;

$user = userID;

$bdd = BDDname;

$passwd  = PASS;

// Connexion au serveur
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");


// Requete nbr participations
$query_count = "SELECT COUNT(*) AS Nb FROM my_table";	 
$result_count = mysql_query($query_count) or die(mysql_error());

// Affichage nbr participations (basé sur le nombre d'enregistrement en base)
while($row = mysql_fetch_array($result_count)){
	echo "Il y a  ". $row['Nb'] ." participations.";
	echo "<br />";
	$count = $row['Nb'];
	echo "$count"; // ca s'affiche bien
	
	}

// Update de la base pour indiqué le delta entre estimation des participations et chiffre réel
mysql_query("UPDATE my_table SET win=ABS(nbparticipant - " . $count . ")");

// Creation et envoi de la requete particpants
$query = "SELECT id,nom,prenom,adresse1,nbparticipant,win FROM my_table WHERE autre1=1 AND autre2=1 AND autre3=1 ORDER BY id"; 
$result = mysql_query($query);


// Recuperation des resultats
while($row = mysql_fetch_row($result)){
		$id = $row[0];
		$prenom = $row[1];
		$nom = $row[2];
		$adr = $row[3];
		$sub = $row[4];
		$win = $row[5];
		
		echo "<tr>\n
		<td>$id</td>\n
		<td>$prenom</td>\n
		<td>$nom</td>\n
		<td>$adr</td>\n
		<td>$sub</td>\n
		<td>$count</td>\n
		</tr>\n";

	}


// Deconnexion de la base de donnees
mysql_close();

?>

</tr>

</table>

</body>


</html>
0
Nhay Messages postés 838 Date d'inscription vendredi 2 novembre 2012 Statut Membre Dernière intervention 17 décembre 2015 126
20 nov. 2012 à 08:42
$query = "SELECT id,nom,prenom,adresse1,nbparticipant,win FROM my_table WHERE autre1=1 AND autre2=1 AND autre3=1 ORDER BY id"; 

ça devrait plutôt être
$query = "SELECT id,nom,prenom,adresse1,nbparticipant,win FROM my_table WHERE autre1=1 AND autre2=1 AND autre3=1 ORDER BY win asc, id asc limit 0,10"; 
0