Classement automatique [Résolu]

wadpap13 67 Messages postés mercredi 14 février 2007Date d'inscription 22 mars 2009 Dernière intervention - 27 juin 2007 à 11:57 - Dernière réponse : wadpap13 67 Messages postés mercredi 14 février 2007Date d'inscription 22 mars 2009 Dernière intervention
- 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...

Merci de votre aide !!!
Afficher la suite 

2 réponses

Répondre au sujet
audayls 373 Messages postés samedi 9 juillet 2005Date d'inscription 11 août 2008 Dernière intervention - 27 juin 2007 à 14:09
+3
Utile
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";
}

?>

For every choice, a consequence (Fable)
Cette réponse vous a-t-elle aidé ?  
Commenter la réponse de audayls
wadpap13 67 Messages postés mercredi 14 février 2007Date d'inscription 22 mars 2009 Dernière intervention - 27 juin 2007 à 14:27
0
Utile
Merci beaucoup !!

T'embete pas pour les equipes exaequo, on peut refaire un sort diff avant le sort points.

Merci !!!
Commenter la réponse de wadpap13

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.