Classement automatique [Résolu]

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

Merci de votre aide !!!
Afficher la suite 

Votre réponse

2 réponses

Meilleure réponse
Messages postés
373
Date d'inscription
samedi 9 juillet 2005
Dernière intervention
11 août 2008
3
Merci
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)

Merci audayls 3

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources a aidé 97 internautes ce mois-ci

Commenter la réponse de audayls
Messages postés
67
Date d'inscription
mercredi 14 février 2007
Dernière intervention
22 mars 2009
0
Merci
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.