[Aide PHP/Mysql] Compter le nombre de participation.

Petit nouveau ! | 3 Messages

13 janv. 2009, 13:10

Bonjour,
Nouveau sur le forum je viens vers vous car je bloque sur un problème... je m'autoforme sur PHP en réalisant un système de classement pour un futur site (pour l'instant ça reste du local).
Je ne sais pas si ce que je vais vous demander est possible mais vous allez me le dire (si ça se trouve c'est tout bête...).

Alors ce que j'ai déjà fait c'est un système de création de tournoi, de joueur, mise à jour des points et classement des joueurs. Là où je bloque c'est pour compter le nombre de partie de chaque joueur.

Ma base ce présente de la manière suivante (avec exemples d'enregistrements):
----------------
Base: Tournoi
----------------

* Table joueurs avec les enregistrements:

id joueurid
1 riri
2 fifi
3 loulou

* Table Tournoi où son enregistré les tournois:

id tournoiid nom_tournoi
1 122369887 tournoi de janvier
2 1459874563 tournoi de fèvrier


* Table score avec les résultats:

id *** joueurid *** tournoiid *** points
1 *** riri *** 122369887 *** 10
2 *** fifi *** 122369887 *** 30
3 *** loulou *** 122369887 *** 15
4 *** riri *** 1459874563 *** 50
5 *** loulou *** 1459874563 *** 20
_____

C'est sur cette dernière base que je veux compter le nombre de participations par exemple riri et loulou 2 participations et fifi une seule participation. Pour les points ça ne me pose pas de problèmes je fais:

"SELECT joueurid,SUM(points) AS points FROM ".$score_table." GROUP BY joueurid ORDER BY points DESC"

J'espère que j'ai été assez clair dans mes explications, au besoin je peux compléter si ça peut aider... merci par avance ! :D

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 10684 Messages

13 janv. 2009, 13:17

Tu n'es pas très loin de la solution... de la même manière que tu regroupes tes lignes en faisant la somme des points (avec la fonction SUM() de ta base de données), tu peux également lui demander de compter les enregistrements avec la fonction COUNT() ;)
Ce n'est pas en améliorant la bougie que l'on a inventé l'ampoule...

Petit nouveau ! | 3 Messages

13 janv. 2009, 16:32

Tu n'es pas très loin de la solution... de la même manière que tu regroupes tes lignes en faisant la somme des points (avec la fonction SUM() de ta base de données), tu peux également lui demander de compter les enregistrements avec la fonction COUNT() ;)
Super tu m'as lancer sur la bonne voie ! :D un grand merci ! Avec ça effectivement j'ai bien le bon nombre d'enregistrements pour chaque joueur:

SELECT joueurid, COUNT( joueurid ) AS joueurid
FROM ".$score_table."

Là où je bloque maintenant ( oui oui je suis débutant faut bien bloquer quelque part :D ) c'est comment insérer cette requête dans mon php et que le nombre de parties corresponde bien au bon joueur... actuellement mon code ressemble à ça:
	  $rows = $sql->execute ( "SELECT joueurid,SUM(points) AS points FROM ".$score_table."   GROUP BY joueurid ORDER BY points DESC", SQL_RETURN_ASSOC ) or die ("$DatabaseError");   
echo "<table width="80%" border="0" align="center" cellpadding="4" cellspacing="1" bgcolor="#999999" bordercolor="#000000">
<tr bgcolor="#F9F3EE"><td width="10" align="center">Position</td><td align="center" width="50">Nom</td><td align="center" width="25">Points</td><td align="center" width="25">Nbre partie</td></tr>";
    $num = sizeof ( $rows );      
      for ( $i = 0; $i < $num; ++$i )
      {
		$points = $rows [ $i ] [ "points" ];
		$joueurid = $rows [ $i ] [ "joueurid" ];
		$pos = $i + 1;
echo "<tr bgcolor="#ffffff" align="center">
<td align="center">$pos</td>
<td>";
	$prows = $sql->execute ( "SELECT * FROM ".$joueur_table." WHERE joueurid='$joueurid'",
    SQL_RETURN_ASSOC );
  $prow = $prows [ 0 ]; 
  echo "$prow[name]";
	  
echo" - $joueurid</td>
<td align="center">$points</td>
</tr>";
La présentation en tableau est sommaire mais c'est juste pour le test pour le moment le plus important c'est le code.
J'ai tenté quelques bidouilles à droite et à gauche mais pour l'instant ma colonne reste désespérément vierge, je ne dois pas faire la requête ou l'insertion des lignes au bon endroit...

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 10684 Messages

13 janv. 2009, 17:56

Et si la requête qui te retourne le score total du joueur te retournait également le nombre de parties qu'il a fait pour obtenir un tel score ? :)

Code : Tout sélectionner

SELECT joueurid, SUM(points) AS points, COUNT(joueurid) AS parties FROM ...
Tu pourrais ainsi de la même manière que tu affiches son score, indiquer son nombre de parties ;)
Ce n'est pas en améliorant la bougie que l'on a inventé l'ampoule...

Petit nouveau ! | 3 Messages

13 janv. 2009, 18:37

Et si la requête qui te retourne le score total du joueur te retournait également le nombre de parties qu'il a fait pour obtenir un tel score ? :)

Code : Tout sélectionner

SELECT joueurid, SUM(points) AS points, COUNT(joueurid) AS parties FROM ...
Tu pourrais ainsi de la même manière que tu affiches son score, indiquer son nombre de parties ;)
heu alors... comment te remercier ? :D
je n'étais pas trop loin de ça mais encore loin en fin de compte ! :D