Bonsoir à tous,
Je suis actuellement en train de réaliser un site internet de football dynamique en PHP. Pour le moment tout ce qui suis est fonctionnel et gérable depuis un panel admin: saison, calendrier, championnat, équipe, joueurs, rencontre, classement buteurs, rencontre en live (affichage composition, buteurs, score etc.).
Il me reste donc à faire le classement des équipes, donc des championnats, que tout soit automatique.
En bref voilà comment ca marche, j'ai une table t_rencontre ou figure toutes les rencontres de la saison (eq1, eq2, date, resultat_eq1, resultat_eq2)
Par defaut les resultats sont null, dès lors que j'ajoute le résultat, une ligne est créée dans une autre table t_points indiquant l' id de l'équipe et ses points, donc par de simple if() detect si il s'agit d'une victoire: 3p, d'un nul: 1p ou d'une defaite: 0p.
Avec cette table t_points, il m'est ensuite possible de compter les points avec la fonction sql: SUM(poi_points) AS TOTAL par exemple. Cette requête je la tri en ORDER BY TOTAL DESC. Pour que mon classement soit dans l'ordre.
Jusque là tout est ok!
Mais comme par la suite il faudra que figure le nombre de match joué, de victoire, de nul, de défaite etc.
J'insère ma requete dans un tableau php:
Code :
- $i=0;
- do {
- $num[$i]['nb']=$row_Recordset_points_totaux['TOTAL'];
- $num[$i]['equipe']=$row_Recordset_points_totaux['equipes'];
- $i++;
- } while ($row_Recordset_points_totaux = mysql_fetch_assoc($Recordset_points_totaux));
|
Quand je l'affiche le classement est tjs bien ordré, avec les équipes et leur points dans l'ordre.
Code :
- for($f=0 ; $f < count($num) ; $f++){
- <table>
- <tr>
- <td>echo $num[$f]['equipe'];</td>
- <td> echo $num[$f]['nb'];</td>
- </tr>
- </table>
|
Par la suite j'ai créé une requête comptant le nombre de ligne par équipe, celà represente enfait le nombre de match qu'a effectué les équipes. Avec la fonction sql nomé Recordset_nb_match: COUNT(*) AS nbGAMES etc.
Jusqu'ici ca fonctionne encore, mais je bloque dès lors qu'il faut afficher le nombre de match jouer en face des equipes et leur nombre de point.
Donc j'utilise une technique, qui me met les bons nombres de match enface des équipes et leur points, mais celà me change l'ordre du tableau, il prend enfait l'ordre de la requete du comptage des match.
Voici comment je m'y suis pris:
Code :
- do {
- for($f=0 ; $f < count($num) ; $f++){
- if($row_Recordset_nb_match['equ_id']==$num[$f]['id']){
- ?>
- <tr>
- <td><?php echo $num[$f]['nom']; ?></td>
- <td><?php echo $num[$f]['nb']-4; ?></td>
- <td><?php echo $row_Recordset_nb_match['nbGAMES']-3; ?></td>
- </tr>
- <?php
- }
- }
- } while ($row_Recordset_nb_match = mysql_fetch_assoc($Recordset_nb_match)); ?>
|
Donc le do while pour afficher la requete, et un if() pour mettre le nombre de match enface de la bonne équipe.
Cette manière de faire me désordonne mon tableau, et donc ce n'est pas un classement, puisque il retri en fonction de la requete Recordset_nb_match, et ne tiens plus compte de mon ORDER BY TOTAL DESC.
Voilà, très complexe, j'ai fais de mon mieux pour que ca soit compréhensif, si qqch vous échappe je me ferai un plaisir de vous éclaicir encore une fois sur mon problème.
Bonne soirée à tous et vive le php