wadpap13
Messages postés67Date d'inscriptionmercredi 14 février 2007StatutMembreDernière intervention22 mars 2009
-
27 juin 2007 à 11:57
wadpap13
Messages postés67Date d'inscriptionmercredi 14 février 2007StatutMembreDernière intervention22 mars 2009
-
27 juin 2007 à 14:27
Bonjour à tous !!!
Suite à des résultats de Rugby, j'aimerais faire un classement automatique en fonction des points et de la différence de points.
Imaginons un groupe de 4 avec les equipe a, b, c et d.
Avec des matchs :
a-b
c-d
Je pense qu'une idée de départ serait de stockée les scores de a, b, c et d dans des variables comme score_a, score_b... pour ensuite pouvoir les comparer et affecter 4 points à l'equipe qui gagne, 2 points pour match nul et 0 pour la defaite.
Mais apres je ne vois pas comment faire pour obtenir et afficher un classement trié par points et différence de points...
audayls
Messages postés373Date d'inscriptionsamedi 9 juillet 2005StatutMembreDernière intervention11 août 2008 27 juin 2007 à 14:09
Salut,
Voici un petit code qui pourrait t'aider ;-) Par contre il ne gère pas les équipes exaequo j'essaye de régler çà ce soir ^^
<?php
$classement = array(); // Tableau qui contiendra les points.
$equipes = array('Equipe A', 'Equipe B', 'Equipe C', 'Equipe D'); // Equipes.$resultats array('Equipe A-Equipe B'> '7-0', 'Equipe C-Equipe D' => '14-7', 'Equipe C-Equipe A' => '14-24'); // Resultats.
$hight = 0; // Variable contenant le score le plus élevé.
$i = -1;
$keys = array_keys($resultats); // On prends toutes les clés du tableau de résultat.
while (isset($equipes[++$i])) {
$classement[$equipes[$i]] = 0; // On fixe le score par défaut (0 du moins normalement XD)
$j = -1;
while (isset($keys[++$j])) {
$pos = strpos($keys[$j], $equipes[$i]); // On vérifie si le nom de l'équipe et dans la clé du match.
if ($pos !== FALSE) {
$temp = explode('-', $resultats[$keys[$j]]); // On "explose" le tiret du score pour obtenir les 2 résultats.
if ((int) $temp[0] === (int) $temp[1]) $classement[$equipes[$i]] += 2; // Si les 2 scores sont identiques (match nul) on ajoute 2 points à l'équipe.
elseif ($pos === 0 AND (int) $temp[0] > (int) $temp[1]) $classement[$equipes[$i]] += 4; // Si l'équipe est placée avant le tiret et que le nombre avant le tiret est supérieur (match gagné) on ajoute 4 points à l'équipe.
elseif ($pos !== 0 AND (int) $temp[0] < (int) $temp[1]) $classement[$equipes[$i]] += 4; // Si l'équipe est placée après le tiret et que le nombre après le tiret est supérieur (match gagné) on ajoute 4 points à l'équipe.
}
if ($classement[$equipes[$i]] > $hight) $hight = $classement[$equipes[$i]]; // Si le score de l'équipe est meilleur que la variable "$hight" on remplace la variable par ce score.
}
}
arsort($classement); // On trie le classement par ordre décroissant en conservant les clés.
$keys = array_keys($classement); // On prends toutes les clés du tableau de classement.
$i = -1;
while (isset($keys[++$i])) {
// "$i+1" => Rang de l'équipe.
// "$keys[$i]" => Nom de l'équipe.
// "$classements[$keys[$i]]" => Score de l'équipe.
// "$classement[$keys[$i]]-$hight" => Différence de points avec la première équipe.
echo $i+1,' - ',$keys[$i],' - Différence de ',$classement[$keys[$i]]-$hight,"
\n";
}