IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage PHP Discussion :

Génération Classement via SQL


Sujet :

Langage PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Ingénieur Systèmes Embarqués
    Inscrit en
    Février 2013
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37

    Informations professionnelles :
    Activité : Ingénieur Systèmes Embarqués
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Février 2013
    Messages : 8
    Par défaut Génération Classement via SQL
    Bonjour, je viens vers vous car j'aimerai générer un classement en PHP en récupérant des informations dans une base SQL.
    Les informations SQL proviennent du script zKup (gestionnaire de compétition), j'aimerai récupérer les infos du classement pour créer un bloc "Classement" sur mon site.

    Récupérer les infos n'est pas un problème, mais ma table est particulière.
    Je n'ai pas des simples champs : id, nom_equipe, match_gg, match,_eq, match_pd (par exemple, dans ce cas le classement aurait été simple à faire)

    Ma table "rel_tns_eqi_mat" contient les champs (qui nous intéresse) :
    MAT_CLE : id (unique) du match
    TNS_CLE : numéro de la compétition
    EQI_CLE1 : id de l'équipe1
    EQI_S1 : score de l'équipe1
    EQI_CLE2 : id de l'équipe2
    EQI_S2 : score de l'équipe2
    MAT_ETAT : état du match (0 = pas joué, 1 = joué)

    pour récupérer le nom de l'équipe il faut faire une jointure avec la table "tab_equipes" (EQI_CLE, EQI_NOM).

    J'aimerai donc un script qui dès que j'accepte à http://www.toto.com/classement.php?champ=2 (par exemple), m'affiche le classement de TNS_CLE = 2.

    Pour le classement il faut trouver un moyen de calculer le nombre de point de chaque équipe en fonction des victoires, défaites et match nul.
    Si EQI_S1 > EQI_S2 => pts_EQI1 = pts_EQI1+3
    Si EQI_S1 < EQI_S2 => pts_EQI1 = pts_EQI1
    Si EQI_S1 = EQI_S2 => pts_EQI1 = pts_EQI1+1

    A noter que pour une équipe EQI_CLE1, elle va affronter plusieurs EQI_CLE2 différent.

    Et ceux pour tous les matchs.

    Donc je ne sais pas comment compter les matchs, compter les points de chaque équipe, afficher toutes les équipes dans le classement (même celle qui n'ont pas encore fait de match) le tout sur une page php (biensur avec du html si besoin pour faire le tableau etc...)

    Le classement doit être aussi sous la forme :
    Position | Nom Equipe | Nb Match Gagné | Nb Match Nul | Nb Match Perdu | Différence de point (but) | Points


    Voilà, j'espère avoir fourni assez d'information et que quelqu'un pourra m'aider.

    Merci d'avance.

  2. #2
    Membre Expert
    Homme Profil pro
    Inscrit en
    Septembre 2009
    Messages
    875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Isère (Rhône Alpes)

    Informations forums :
    Inscription : Septembre 2009
    Messages : 875
    Par défaut
    1) tu récupères tous tes matchs
    2) tu fais le calcul de point en php, et tout autre calcul dont tu as besoin
    3) tu ordonnes tout cas
    4) tu affiches ca dans un tableau

  3. #3
    Membre averti
    Homme Profil pro
    Ingénieur Systèmes Embarqués
    Inscrit en
    Février 2013
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37

    Informations professionnelles :
    Activité : Ingénieur Systèmes Embarqués
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Février 2013
    Messages : 8
    Par défaut
    La logique je l'a connais je vous l'ai même indiqué.

    Là je ne sais pas comment récupérer les matchs qui m’intéresse et faire le traitement exemple :
    MAT_CLE | TNS_CLE | EQI_CLE1 | EQI_S1 | EQI_CLE2 | EQI_S2 | MAT_ETAT
    1; 1; 2; 3; 3; 0; 1
    1; 1; 2; 2; 4; 1; 1
    1; 1; 5; 3; 3; 0; 1
    1; 1; 6; 2; 4; 1; 1
    Ce qui fait comme match :
    Equipe2 3 - 0 Equipe3
    Equipe2 2 - 1 Equipe4
    Equipe5 3 - 0 Equipe3
    Equipe6 2 - 1 Equipe4

    Le classement doit être :
    # | Equipe | MJ | MG | MN | MP | Diff | Pts
    1 | NomEq2 | 2 | 2 | 0 | 0 | 4 | 6
    2 | NomEq5 | 1 | 1 | 0 | 0 | 3 | 3
    3 | NomEq6 | 1 | 1 | 0 | 0 | 1 | 3
    4 | NomEq3 | 2 | 0 | 0 | 2 | -6 | 0
    5 | NomEq4 | 2 | 0 | 0 | 2 | -2 | 0

  4. #4
    Membre Expert Avatar de Djakisback
    Profil pro
    Inscrit en
    Février 2005
    Messages
    2 023
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 2 023
    Par défaut
    Salut,
    un exemple vite faite, reste plus qu'à remplir le tableau PHP :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    $data[0]['EQI_CLE1'] = 12;
    $data[0]['EQI_S1'] = 3;
    $data[0]['EQI_CLE2'] = 7; 
    $data[0]['EQI_S2'] = 2;
     
    $results = array();
     
    for($i = 0, $c = count($data); $i < $c; $i++)	{
     
    	$pointEqu1 = 1;
    	$pointEqu2 = 1;
     
    	if($data[$i]['EQI_S1'] > $data[$i]['EQI_S2'])	{
    		$pointEqu1 = 3;
    		$pointEqu2 = 1;
    	}
    	else if($data[$i]['EQI_S1'] < $data[$i]['EQI_S2'])	{
    		$pointEqu1 = 1;
    		$pointEqu2 = 3;
    	}
     
    	if(isset($results[$data[$i]['EQI_CLE1']]))	{
    		$results[$data[$i]['EQI_CLE1']] += $pointEqu1;
    	}
    	else	{
    		$results[$data[$i]['EQI_CLE1']] = $pointEqu1;
    	}
     
    	if(isset($results[$data[$i]['EQI_CLE2']]))	{
    		$results[$data[$i]['EQI_CLE2']] += $pointEqu2;
    	}
    	else	{
    		$results[$data[$i]['EQI_CLE2']] = $pointEqu2;
    	}
     
    }

  5. #5
    Membre averti
    Homme Profil pro
    Ingénieur Systèmes Embarqués
    Inscrit en
    Février 2013
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37

    Informations professionnelles :
    Activité : Ingénieur Systèmes Embarqués
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Février 2013
    Messages : 8
    Par défaut
    Merci je vais tester, par contre je n'ai pas précisé qu'on peut avoir par exemple :
    Eq4 (EQI_CLE1) 1-0 Equ5 (EQI_CLE2)
    et
    Eq5 (EQI_CLE1) 1-2 Equ4 (EQI_CLE2)

    Donc Eq4 et Eq5 peuvent une fois être attribué à EQI_CLE1 ou EQI_CLE2, mais quoi qu'il arrive on doit retenir que les 2 victoires de Eq4 (et 2 défaites de Eq5).

Discussions similaires

  1. Base de Registre via SQL
    Par mihmoh75 dans le forum MS SQL Server
    Réponses: 1
    Dernier message: 07/11/2005, 14h28
  2. classement en sql (enfin je ne sais pas comment appeler)
    Par shirya dans le forum Langage SQL
    Réponses: 1
    Dernier message: 27/09/2005, 08h29
  3. Generer du xml via SQL(oracle) avec de l'asp
    Par jpg dans le forum XQUERY/SGBD
    Réponses: 6
    Dernier message: 03/08/2004, 12h36
  4. Maj d'un champ Blob via SQL
    Par Prince of mirkwood dans le forum Bases de données
    Réponses: 3
    Dernier message: 01/07/2004, 20h19
  5. Génération de script SQL avec les données
    Par borgfabr dans le forum MS SQL Server
    Réponses: 3
    Dernier message: 05/03/2004, 13h57

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo