Aller au contenu

Fonctions calcul sql/php pour football


spamyx

Sujets conseillés

Posté (modifié)

Oulah, on franchit des paliers de jour en jour avec toi Bourinho !

Désolé si je n'arrive pas à te suivre mais pour moi le php et sql j'y connaissais rien y'a 1 mois ! Donc est ce que tu pourrais m'intégrer ces requêtes dans une page .php pour que je voye si çà peux ressembler à mon modèle de page (STATS JOUEUR). Comme çà je pourrais peut être mieux dechiffrer ton code. :blush:

Mais çà me semble bon dans la procédure !

Pour simplifier la requête et les calculs, je pense que je vais supprimer les champs Buts pour et Buts cntre en PROLONGATIONS (donc exit les scoreP1 et scoreP2) . Pareil pour les tirs au buts : prenons un exemple :

en poule : Bourinho 0-0 Spamyx (enregistrement en match nul pour les 2 joueurs)

en 1/2 Finale : Bourninho 2-2 Spamyx (victoire 3-2 aux péno) : (enregistrement en match nul pur les 2 joueurs, mais il faudrait ajouter une possibilité de cocher une case qui dirait "victoire aux péno" car çà serait utile pour trouver le niveau d'élimination )

Pour déterminer le niveau d'élimination (elimination.id) : c'est vrai que çà à l'air chaud, surtout pour déterminer le champion ! (quoique je pense rentrer les données dans la table matchs avec le joueur1 (gagnant) en 1er donc par exemple : Bourninho 2-0 Spamyx Finale. Ensuite il faudrait faire une requête qui dit " le joueur1 qui est en finale est le vainqueur (même si il ya match nul car je met toujours le joueur1 comme vainqueur)!

:wacko: ) . en gros

Je retourne à mon dreamweaver en essayant d'intégrer tes requêtes..; pas facile avec tous ses matchs de la coupe du monde

merci

Modifié par spamyx
Lien vers le commentaire
Partager sur d’autres sites

  • Réponses 70
  • Créé
  • Dernière réponse

Contributeurs actifs dans ce sujet

Contributeurs actifs dans ce sujet

Images postées

Salut...

Voilà pour le code php

<?
$IdJoueur=1;//modifiable bien sur...
$query1 = "SELECT matchs.tournoi_id AS IDcompetition,
COUNT(*) AS NbMatchs,
SUM(matchs.victoire) AS NbVictoires,
SUM(1-matchs.victoire) AS NbNuls,
0 AS NbDefaites,
SUM(matchs.score1)+SUM(matchs.scoreP1) AS NbButP,
SUM(matchs.score2)+SUM(matchs.scoreP2) AS NbButC
FROM matchs
WHERE matchs.joueur1_id=$IdJoueur
GROUP BY IDcompetition";

$query2 = "SELECT matchs.tournoi_id AS IDcompetition,
COUNT(*) AS NbMatchs,
0 AS NbVictoires,
SUM(1-matchs.victoire) AS NbNuls,
SUM(matchs.victoire) AS NbDefaites,
SUM(matchs.score2)+SUM(matchs.scoreP2) AS NbButP,
SUM(matchs.score1)+SUM(matchs.scoreP1) AS NbButC
FROM matchs
WHERE matchs.joueur2_id=$IdJoueur
GROUP BY IDcompetition";

$queryunion="$query1 UNION $query2";

$queryall="SELECT tablunion.IDcompetition AS IDcompetition,
SUM(tablunion.NbMatchs) AS NbMatchs,
SUM(tablunion.NbVictoires) AS NbVictoires,
SUM(tablunion.NbNuls) AS NbNuls,
SUM(tablunion.NbDefaites) AS NbDefaites,
SUM(tablunion.NbButP) AS NbButP,
SUM(tablunion.NbButC) AS NbButC
FROM ($queryunion) AS tablunion
GROUP BY IDcompetition";

$query="SELECT *,
tournoi.nom_tournoi AS competition,
tablunion2.NbButP/tablunion2.NbMatchs AS NbButPPM,
tablunion2.NbButC/tablunion2.NbMatchs AS NbButCPM
FROM ($queryall) AS tablunion2, tournoi
WHERE tournoi.id=tablunion2.IDcompetition";
$reponse=mysql_query($query);
if ($reponse)
{
?>
<table border: 1px solid black>
<tr>
<td>IdCompete</td>
<td>-----Compete-----</td>
<td>NbMatchs</td>
<td>NbVictoires</td>
<td>NbNuls</td>
<td>NbDefaites</td>
<td>NbButP</td>
<td>NbButC</td>
<td>NbButPPM</td>
<td>NbButCPM</td>
</tr>
<?
while ($donnees = mysql_fetch_array($reponse) )
{
?>
<tr>
<td>
<? echo $donnees['IDcompetition']; ?>
</td>
<td>
<? echo $donnees['competition']; ?>
</td>
<td>
<? echo $donnees['NbMatchs']; ?>
</td>
<td>
<? echo $donnees['NbVictoires']; ?>
</td>
<td>
<? echo $donnees['NbNuls']; ?>
</td>
<td>
<? echo $donnees['NbDefaites']; ?>
</td>
<td>
<? echo $donnees['NbButP']; ?>
</td>
<td>
<? echo $donnees['NbButC']; ?>
</td>
<td>
<? echo $donnees['NbButPPM']; ?>
</td>
<td>
<? echo $donnees['NbButCPM']; ?>
</td>
</tr>
<?
}
?>
</table>

PS : Je dois t'avouer que j'y connaissais absolument rien en php et sql il y a de cela a peu près 1 mois...certains hubeurs sont là pour en témoigner... :whistling: (j'ai commençais à m'intéresser au web en m'inscrivant au hub... ma date d'inscription faisant foi ;) )

A+

Modifié par Bourinho
Lien vers le commentaire
Partager sur d’autres sites

Posté (modifié)

tu la essayer cette requête avec ce code php?

car moi çà me fait une page blanche :nonono: (jarrive même pas a afgficher le tableau html)

Il manquerait pas par hasard une virgule ou une accoçlade de fin par hasard? :(

PS :j'aimerais progresé aussi vite que toi mais c vrai que je m'attaque à un projet pas évident donc je galère mais c normal ;)

Modifié par spamyx
Lien vers le commentaire
Partager sur d’autres sites

Salut,

Chez moi cette requête fonctionne... Je te rappelle que j'ai ajouté une colonne dans la table match appelée victoire... qui vaut un en cas de victoire et 0 en cas de nul... Si tu ne l'as pas rajouté, c'est normal que cette requête ne fonctionne pas!!! Faut aussi que tu te connectes à la base avant!!! Je ne sais pas si tu l'as fait???

<?
# Connect to the database
$dbhost = "localhost";
$dbuname = "root";
$dbpass = "";
$dbname = "spamyx";
$MonDomaine='http://127.0.0.1/MonSite/';

$GLOBALS["db_connexion"]=@mysql_connect($dbhost,$dbuname,$dbpass) or die ("CONNEXION IMPOSSIBLE");
$GLOBALS["db"]=@mysql_select_db($dbname, $GLOBALS["db_connexion"]);
?>

Quand tu dis que cela n'affiche rien, ça doit bien afficher des erreurs quand meme???

Voici le resultat de ce code

A+

Edit : Il manque une accolade à la fin, t'as raison mon copier/coller n'a pas été jusqu'au bout!!! ;)

Rajoute à la fin

<? } ?>

post-13210-1150146712_thumb.jpg

Modifié par Bourinho
Lien vers le commentaire
Partager sur d’autres sites

ben en fait j'ai fait un copier coller de ta requête (j'avais bien pensé quand me^me à me connecter à ma base). Voilà la 1ere erreur :

parse error : unexpected $end in "nom du fichier.php" in line 43 (dernière ligne).

C'est fou çà ... alors que toi çà marche nickel..; Alors est ce que c'est moi qui deforme ta requête en la remettant en forme (sautant des lignes ) dans dreamweaver.... Peux tu me donner ton fichier php pour que je compare ?

Merci

:smartass:

Lien vers le commentaire
Partager sur d’autres sites

Voilà :

<?
# Connect to the database
$dbhost = "localhost";
$dbuname = "root";
$dbpass = "";
$dbname = "spamyx";
$MonDomaine='http://127.0.0.1/MonSite/';

$GLOBALS["db_connexion"]=@mysql_connect($dbhost,$dbuname,$dbpass) or die ("CONNEXION IMPOSSIBLE");
$GLOBALS["db"]=@mysql_select_db($dbname, $GLOBALS["db_connexion"]);
?>
<!DOCTYPE html PUBLIC "//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr" >
<body>
<?
$IdJoueur=1;//pppk
$query1 = "SELECT matchs.tournoi_id AS IDcompetition,
COUNT(*) AS NbMatchs,
SUM(matchs.victoire) AS NbVictoires,
SUM(1-matchs.victoire) AS NbNuls,
0 AS NbDefaites,
SUM(matchs.score1)+SUM(matchs.scoreP1) AS NbButP,
SUM(matchs.score2)+SUM(matchs.scoreP2) AS NbButC
FROM matchs
WHERE matchs.joueur1_id=$IdJoueur
GROUP BY IDcompetition";

$query2 = "SELECT matchs.tournoi_id AS IDcompetition,
COUNT(*) AS NbMatchs,
0 AS NbVictoires,
SUM(1-matchs.victoire) AS NbNuls,
SUM(matchs.victoire) AS NbDefaites,
SUM(matchs.score2)+SUM(matchs.scoreP2) AS NbButP,
SUM(matchs.score1)+SUM(matchs.scoreP1) AS NbButC
FROM matchs
WHERE matchs.joueur2_id=$IdJoueur
GROUP BY IDcompetition";

$queryunion="$query1 UNION $query2";

$queryall="SELECT tablunion.IDcompetition AS IDcompetition,
SUM(tablunion.NbMatchs) AS NbMatchs,
SUM(tablunion.NbVictoires) AS NbVictoires,
SUM(tablunion.NbNuls) AS NbNuls,
SUM(tablunion.NbDefaites) AS NbDefaites,
SUM(tablunion.NbButP) AS NbButP,
SUM(tablunion.NbButC) AS NbButC
FROM ($queryunion) AS tablunion
GROUP BY IDcompetition";

$query="SELECT *,
tournoi.nom_tournoi AS competition,
tablunion2.NbButP/tablunion2.NbMatchs AS NbButPPM,
tablunion2.NbButC/tablunion2.NbMatchs AS NbButCPM
FROM ($queryall) AS tablunion2, tournoi
WHERE tournoi.id=tablunion2.IDcompetition";
$reponse=mysql_query($query);
if ($reponse)
{
?>
<table border: 1px solid black>
<tr>
<td>IdCompete</td>
<td>-----Compete-----</td>
<td>NbMatchs</td>
<td>NbVictoires</td>
<td>NbNuls</td>
<td>NbDefaites</td>
<td>NbButP</td>
<td>NbButC</td>
<td>NbButPPM</td>
<td>NbButCPM</td>
</tr>
<?
while ($donnees = mysql_fetch_array($reponse) )
{
?>
<tr>
<td>
<? echo $donnees['IDcompetition']; ?>
</td>
<td>
<? echo $donnees['competition']; ?>
</td>
<td>
<? echo $donnees['NbMatchs']; ?>
</td>
<td>
<? echo $donnees['NbVictoires']; ?>
</td>
<td>
<? echo $donnees['NbNuls']; ?>
</td>
<td>
<? echo $donnees['NbDefaites']; ?>
</td>
<td>
<? echo $donnees['NbButP']; ?>
</td>
<td>
<? echo $donnees['NbButC']; ?>
</td>
<td>
<? echo $donnees['NbButPPM']; ?>
</td>
<td>
<? echo $donnees['NbButCPM']; ?>
</td>
</tr>
<?
}
?>
</table>
<?
}
?>
</body>
</html>

A+

Lien vers le commentaire
Partager sur d’autres sites

Posté (modifié)

:) yes çà marche, j'ai enfin pu afficher le même tableau que toi. En fait l'erreur venait de l'écriture du code pour se connecter à la base de données. Et comme j'utilise Dreamweaver et une connection du type (<?php require_once('conexion.php'); ?>) il faut rajouter avant chaque requête la syntaxe : mysql_select_db ($database...) sinon çà marchait pas... Mais effectivement t'as solution, telquelle en copier coller FONCTIONNE ! :blush:

Y'a juste que je voulais rajouter une colonne GOALAVERAGE (NbutsPour-Nbuts Contre) dans le tableau : j'ai essayé de rajouté çà dans ta requête finale mais çà marche pas :

tablunion2.NbButP-tablunion2.NbButC AS Goalaverage (puis j'ai fait un <? echo $donnees['Goalaverage']; ?> . Une idée?

Sinon as tu trouvé quelquechose pour afficher le niveau d'élimination par tournoi ? Si c'est pas possible tantpis, je le mettrais à part (à la main :mad2: ) !

Pour la page DUELS entre joueurs, tu penses qu'il faut partir sur les mêmes requêtes ? As tu une idée, sachant que je pense qu'il faudra faire 2 étapes (pages?) : 1 étape pour selectionner le joueur1 et le joueur2 puis 1 étape d'affichage de résultats selon la mise en page que j'ai mis plus haut dans le post... :whistling:

a+

Modifié par spamyx
Lien vers le commentaire
Partager sur d’autres sites

Salut...

Je vais te dire ce qui devait certainement cloché dans ta requête...et à mon avis, tu feras pas cette erreur deux fois!!! ;)

En fait, je pense que t'as oublié de rajouté une virgule à la fin de la ligne juste au dessus de celle que tu as ajouté...

Voilà le code :

$query="SELECT *, 
tournoi.nom_tournoi AS competition,
tablunion2.NbButP/tablunion2.NbMatchs AS NbButPPM,
tablunion2.NbButC/tablunion2.NbMatchs AS NbButCPM,
tablunion2.NbButP-tablunion2.NbButC AS Goalaverage
FROM ($queryall) AS tablunion2, tournoi
WHERE tournoi.id=tablunion2.IDcompetition";

Sinon, l'idée était bonne!!!

Le niveau d'élimination est faisable de façon automatique, je te rassure!!! Mais j'attendais que la précédente requête fonctionne correctement pour réfléchir sur la suite!!!

A+

PS : J'ai trouvé l'idée pour le niveau de l'élimination!!! En fait, je regarde le nombre de matchs...et si le dernier match joué est une victoire.... A partir de cela, c'est facile de savoir le niveau de la compétition ou il a été éliminé!!! J'envois un nouveau message prochainement... T'auras la reponse dans moins de deux heures...là, y a la redif des matchs de la coupe du monde... car je suis en Nouvelle Zelande et les matchs, et bah, c'est la nuit!!!

Modifié par Bourinho
Lien vers le commentaire
Partager sur d’autres sites

Posté (modifié)

euh finalement jme suis emballé un peu vite.... :nonono:

La requête m'affiche bien un tableau mais c pas le même que le tien... En fait je n'arrive pas a calculer le nombre de Victoires... Peux tu me dire quel est le type de champ pour victoire dans la base sql (type : int ? unsigned?) car je pense que çà vient de là... vu que dans mon tableau çà me compte que des matchs nuls alors que le nb total de matchs est bon.... :?:

Est ce à moi de mettre un 0 ou 1 dans le champ victoire lorsque je rentre un score?

Modifié par spamyx
Lien vers le commentaire
Partager sur d’autres sites

Salut...

Voici le code :

$query1 = "SELECT matchs.tournoi_id AS IDcompetition,
COUNT(*) AS NbMatchs,
SUM(matchs.victoire) AS NbVictoires,
SUM(1-matchs.victoire) AS NbNuls,
0 AS NbDefaites,
SUM(matchs.score1)+SUM(matchs.scoreP1) AS NbButP,
SUM(matchs.score2)+SUM(matchs.scoreP2) AS NbButC,
MAX(matchs.victoire*matchs.id) AS IdDV,
MAX(matchs.id) AS IdDM
FROM matchs
WHERE matchs.joueur1_id=$IdJoueur
GROUP BY IDcompetition";

$query2 = "SELECT matchs.tournoi_id AS IDcompetition,
COUNT(*) AS NbMatchs,
0 AS NbVictoires,
SUM(1-matchs.victoire) AS NbNuls,
SUM(matchs.victoire) AS NbDefaites,
SUM(matchs.score2)+SUM(matchs.scoreP2) AS NbButP,
SUM(matchs.score1)+SUM(matchs.scoreP1) AS NbButC,
0 AS IdDV,
MAX(matchs.id) AS IdDM
FROM matchs
WHERE matchs.joueur2_id=$IdJoueur
GROUP BY IDcompetition";

$queryunion="$query1 UNION $query2";

$queryall="SELECT tablunion.IDcompetition AS IDcompetition,
SUM(tablunion.NbMatchs) AS NbMatchs,
SUM(tablunion.NbVictoires) AS NbVictoires,
SUM(tablunion.NbNuls) AS NbNuls,
SUM(tablunion.NbDefaites) AS NbDefaites,
SUM(tablunion.NbButP) AS NbButP,
SUM(tablunion.NbButC) AS NbButC,
MAX(tablunion.IdDV) AS IdDV,
MAX(tablunion.IdDM) AS IdDM
FROM ($queryunion) AS tablunion
GROUP BY IDcompetition";

$query="SELECT *,
tournoi.nom_tournoi AS competition,
tablunion2.NbButP/tablunion2.NbMatchs AS NbButPPM,
tablunion2.NbButC/tablunion2.NbMatchs AS NbButCPM,
tablunion2.NbButP-tablunion2.NbButC AS Goalaverage,
elimination.nom_elimination AS Elim
FROM ($queryall) AS tablunion2, tournoi, elimination
WHERE tournoi.id=tablunion2.IDcompetition
AND ((tablunion2.IdDV<tablunion2.IdDM AND elimination.id=2*tablunion2.NbMatchs)
OR (tablunion2.IdDV=tablunion2.IdDM AND elimination.id=2*tablunion2.NbMatchs+1))";

Et dans ta table elimination, pour chaque stade de la competition tu mets deux fois le nombre de match joue pour arriver jusque là... Sauf :

_pour les poules ou tu ajoutes "poule" pour l'id "deux fois le nombre de matchs en poules +1"

_pour la finale ou tu ajoutes "champion" pour l'id "idfinale+1"

Un exemple par exemple :

pour la coupe du monde, ta table elimination ressemblerait à cela

Id/Nom

6 Poule

7 Poule

8 1/8

10 1/4

12 1/2

14 Finaliste

15 Champion

Pour le champ victoire dans la table match, c'est 1 en cas de victoire et 0 en cas de nul...et "c'est à toi de le remplir"...mais en fait, tu fais une routine PHP a la fin de ton formulaire qui te permet de déterminer suivant le score entré s'il s'agit bien d'une victoire ou d'un nul!!!! Et hop, tu rentres la valeur dans la table! et le type, c'est bien un int unsigned!!! Ou alors tu mets un bouton type radio dans ton formulaire pour le savoir...

Mais je sens que notre histoire n'est pas terminée car je pense que tu ne fais pas toujours le meme type de tournoi (type CdM, UEFA, Champion's League....) Enfin bref, fais deja tourner ça et on en reparlera apres! ;)

PS : Je ne sais pas comment tu fais pour rentrer tes scores sur ton site... mais si tu passes par PHPMyAdmin à chaque fois, tu vas t'amuser... crées toi un formulaire et je pense que cela sera plus sympa pour toi... Tu fais ça à base de requete SQL INSERT INTO... c'est pas complique, tu n'as qu'à aller sur le Site du Zero, c'est très bien expliqué!

PS2 : Y a eu plus de 1400 lectures sur ce topic!!! Comme quoi, le foot, ça a toujours la cote!

Modifié par Bourinho
Lien vers le commentaire
Partager sur d’autres sites

Pour le formulaire, j'avais déjà envisagé la chose (cf post plus haut dans la discussion, c'est déjà vieux :P ) sur la forme :

insert3vu.th.gif

donc çà c bon j'ai pigé (ouf!) Y'a plus qu'à rajouté un bouton victoire ou défaite car la routine en php :sick: ..

Parcontre pour ton raisonnement sur le niveau d'élimination, j'ai pas tout suivi (le fait de multiplier par 2) et j'émet quelques reserves pour 2 points :

- chaque tournoi a un nombre de matchs de poules différents (exemple : on fait un tournoi à 16 joueurs, on peut faire 2 poules de 8 ou 4 poules de 4)

- plus important encore, chaque joueur peut avoir plusieurs équipes par tournoi ce qui complique la chose pour tes calculs (exemple, le joueur 1 à 2 équipes, l'une se fait éliminé en poule, l'autre en finale)

A cause de ses paramètres je pense qu'il va falloir (hélas :unsure: ) me rabatre sur une solution B et avoir "seulement" une stat qui compte le nombre de fois où un joueur à été éliminé en poule, 1/4, finale etc...

Et qui se presenterait de la forme :

Tableau élimination : (nombre de fois où le joueur est éliminé) Exemple pour 8 tournois pour le joueur1

Poule / 8eme / 1/4 / 1/2 / Finale / Champion

2 / 1 / 2 / 2 / 0 / 1

PS2 : Y a eu plus de 1400 lectures sur ce topic!!! Comme quoi, le foot, ça a toujours la cote!

Oui c'est sûr, mais tu es le seul qui m'a aidé ! pour çà tu mérite le titre de champion du monde SQL :P

PS : les bleus ont fait vraiment pitié hier... :thumbsdown:

Lien vers le commentaire
Partager sur d’autres sites

Salut,

Je commence à me demander si tu n'inventes pas des trucs au fur et à mesure!!!! ;)

En effet, dans le tableau du début, tu ne spécifies pas l'équipe avec laquelle joue le joueur... Donc je te propose une requete pour que cela marche comme tu le souhaites...La requête, telle que je te la propose, ne fonctonnera pas pour plusieurs equipes!!! Mais bon, ça peut s'arranger :rolleyes: Tu souhaites voir une ligne de stats pour chacune des equipes du joueur ou juste une ligne qui resume ce qu'il a fait avec toutes ses équipes?

Ensuite, pour les types competition differents, il suffit de rajouter dans ta table tournoi, un champs typetournoi et dans la table elimination, faire comme suit :

Type/Id/Nom

1 6 Poule

1 7 Poule

1 8 1/8

1 10 1/4

1 12 1/2

1 14 Finaliste

1 15 Champion

2 6 Poule1

2 7 Poule1

2 12 Poule2

2 13 Poule2

2 16 1/8

2 20 1/4

2 24 1/2

2 26 Finaliste

2 27 Champion

3 4 1/128

3 8 1/64

3 12 1/32

3 16 1/16

3 20 1/8

3 24 1/4

3 28 1/2

3 32 Finaliste

3 33 Champion

le type de tournoi sera

1 CdM

2 Champions League

3 UEFA

Ca modifiera la requête bien sur...j'y jettes un oeil prochainement!

A+

Lien vers le commentaire
Partager sur d’autres sites

Posté (modifié)

Salut !

Je commence à me demander si tu n'inventes pas des trucs au fur et à mesure!!!!

Non non jt'assure, je n'invente rien de plus que mon 1er post !

Tu souhaites voir une ligne de stats pour chacune des equipes du joueur ou juste une ligne qui resume ce qu'il a fait avec toutes ses équipes?

Juste une ligne qui resume ce quil a fait avec toutes les équipes. Exemple dans le tableau STATS du joueur 1, qui a disputé 16 matchs avec 3 équipes différentes dans un même tournoi (lyon éliminé en 1/4, Barcelone éliminé en 1/2, et Arsenal éliminé en finale) :

nom tournoi / NbMatchs / NbVictoires / NbNuls / NbDéfaites/ ButsP / Buts Contre / Elimination

PESLEAGUE 01 / 16 / 10 Victoires / 2 Nuls / 4 Défaites / 16 buts pour / 8 buts Contre / Finale

Pour le niveau d'élimination, t'es sur que l'on pourrait pas faire une requête plus simple en cherchant le dernier match d'un joueur dans un tournoi. On aurait donc a cherché le dernier match d'un joueur en position joueur2 (car défaite) et ainsi on aurait son niveau d' élimination.

Exemple : dans ma table matchs, pour le tournoi 01, le joueur2 Spamyx a perdu en finale contre le joueur1 (bourinho). Pour trouver le champion, il suffirait de dire : pour le niveau elimination Finale, joueur1 = Champion et joueur2= finale....

Je pense que c'est possible, car je vais rentrer 1 à 1 les matchs de chaque tournoi dans l'ordre de la compétition (pour favoriser la requête de recherche)... Et je ne pense pas que çà soit nécessiare de créer plusieuyrs type de tournoi car c'est difficile de les classer comme tel ( chaque tournoi peut être différent selon le nb de participants et temps)

Je pense vraiment qu'il faudrait creuser dans ce sens....

Modifié par spamyx
Lien vers le commentaire
Partager sur d’autres sites

Et dans le cas d'une equipe qui gagne sont dernier match de poule en ayant perdu les deux premiers...et qui par conséquent pourrait se retrouver non qualifiée pour la suite de la competition.... Ta proposition ne fonctionnerait pas pour ce cas ci...

A+

Lien vers le commentaire
Partager sur d’autres sites

Posté (modifié)
Et dans le cas d'une equipe qui gagne sont dernier match de poule en ayant perdu les deux premiers...et qui par conséquent pourrait se retrouver non qualifiée pour la suite de la competition.... Ta proposition ne fonctionnerait pas pour ce cas ci...

Et si, vu que la requête cherchera le niveau d'élimination "le plus haut" d'un joueur en position de joueur2. Dans ce cas précis, le joueur sera en position joueur2 avec un niveau d'élimination le plus haut de "Poule" et effectivement il n'a pas dépassé les poules....

Modifié par spamyx
Lien vers le commentaire
Partager sur d’autres sites

Alors, j'ai quand meme un contre exemple...Na :P

Une equipe qui n'a jamais perdu pourrait très bien être éliminée en poule en raison de 3 nuls (dans le cas d'une poule de 4 equipes...) ou elle est placée"malencontreusement" en joueur1 à chaque fois... On pourra confondre cette equipe avec un champion qui a tout remporté...

Et c'est aussi possible dans l'autre sens... avec le champion qui perd un match en poule qui avec ta méthode, se retrouve éliminé en poule...

Donc ta solution ne me semble pas au point, en tout cas pour l'instant!!! Ceci dit, elle fonctionne pour les tournois a elimination directe...

A+

Modifié par Bourinho
Lien vers le commentaire
Partager sur d’autres sites

:( effectivement çà peut poser problème...

Bon je crois que je vais faire autrement :

faire une nouvelle table ELIMINATION_JOUEUR que je remplirais de ce type :

id / tournoi id / joueur_id / niveau_elimination / (pour l'exemple c'est le joueur1 qui a gagné le tournoi 1 )

1 / 1 / 1 / 0

je vois que çà comme solution.... Car faudrait pas trop s'attardé la dessus, la vraie valeur ajoutée pour moi réside dans les calculs de DUELS ... :cool:

Lien vers le commentaire
Partager sur d’autres sites

Salut,

tu sais, la solution que je te proposais avec une table elimination un peu plus grosse... elle ne va pas te couter grand chose...parce qu'il faut bien que tu dises a u moment ou a un autre comment se deroulent les elimination (poules, eliminations directes....). Je pense qu'elle n'est pas si lourde que ça étant donné que ça va t'éviter pas mal de trucs a faire à la main...

De plus, une fois que t'en as créé 4 ou 5...je pense que ca suffit....elles y seront toutes les differentes formes de competition que tu souhaites proposer!!!!

A+

PS : Par contre, si des joueurs ont des tours preliminaires et pas d'autres, ce que je t'ai proposé jusque là ne fonctionnera pas!

Modifié par Bourinho
Lien vers le commentaire
Partager sur d’autres sites

salut !

Par contre, si des joueurs ont des tours preliminaires et pas d'autres, ce que je t'ai proposé jusque là ne fonctionnera pas!

c'est bien çà le problème.

Exemple : dans le tournnoi 01, bourinhpo termine 1er de la poule , il est directement qualifié pour les 1/4 de Finale alors que le 2eme et le 3eme de la poule s'affronte en 8eme de finale ( le vainqueur de ce 8eme jouera contre bourinho)

Est ce que cette situation est gérable ou pas? ? :?:

Lien vers le commentaire
Partager sur d’autres sites

Dans l'etat actuel des chose....ce n'est pas possible.. Je pense que pour cela il va falloir créer une autre table plus complete que celle dont on dispose actuellement!!!

J'y réfléchie et je te tien s au courant!

A+

Lien vers le commentaire
Partager sur d’autres sites

ok...

bon en tous cas pour m'avancer, je commence à rentrer mes 2000 résulats :P dans excell en respectant l'ordre de la table match. Ensuite je n'aurais plus qu'a faire une load data...

en espérant que la table "matchs" ne subisse plus de modification :wacko:

Lien vers le commentaire
Partager sur d’autres sites

Salut,

si tu mets en route ta table elimination_joueur, le code suivant doit donner ce que tu souhaites

$query1 = "SELECT matchs.tournoi_id AS IDcompetition,
COUNT(*) AS NbMatchs,
SUM(matchs.victoire) AS NbVictoires,
SUM(1-matchs.victoire) AS NbNuls,
0 AS NbDefaites,
SUM(matchs.score1) AS NbButP,
SUM(matchs.score2) AS NbButC
FROM matchs
WHERE matchs.joueur1_id=$IdJoueur
GROUP BY IDcompetition";

$query2 = "SELECT matchs.tournoi_id AS IDcompetition,
COUNT(*) AS NbMatchs,
0 AS NbVictoires,
SUM(1-matchs.victoire) AS NbNuls,
SUM(matchs.victoire) AS NbDefaites,
SUM(matchs.score2) AS NbButP,
SUM(matchs.score1) AS NbButC
FROM matchs
WHERE matchs.joueur2_id=$IdJoueur
GROUP BY IDcompetition";

$queryunion="$query1 UNION $query2";

$queryall="SELECT tablunion.IDcompetition AS IDcompetition,
SUM(tablunion.NbMatchs) AS NbMatchs,
SUM(tablunion.NbVictoires) AS NbVictoires,
SUM(tablunion.NbNuls) AS NbNuls,
SUM(tablunion.NbDefaites) AS NbDefaites,
SUM(tablunion.NbButP) AS NbButP,
SUM(tablunion.NbButC) AS NbButC
FROM ($queryunion) AS tablunion
GROUP BY IDcompetition";

$query="SELECT *,
tournoi.nom_tournoi AS competition,
tablunion2.NbButP/tablunion2.NbMatchs AS NbButPPM,
tablunion2.NbButC/tablunion2.NbMatchs AS NbButCPM,
tablunion2.NbButP-tablunion2.NbButC AS Goalaverage,
elimination_joueur.niveau_elimination AS Elim
FROM ($queryall) AS tablunion2, tournoi, elimination_joueur
WHERE tournoi.id=tablunion2.IDcompetition
AND elimination_joueur.joueur_id=$IdJoueur
AND elimination_joueur.tournoi_id=tournoi.id";

avec une table elimination_joueur construite comme suit:

id / tournoi_id / joueur_id / niveau_elimination

A+

Lien vers le commentaire
Partager sur d’autres sites

Salut, pour tes duels, le code suivant devrait être Ok :

$query1 = "SELECT COUNT(*) AS NbMatchs,
SUM(matchs.victoire) AS NbVictoires,
SUM(1-matchs.victoire) AS NbNuls,
0 AS NbDefaites,
SUM(matchs.score1) AS NbButP,
SUM(matchs.score2) AS NbButC
FROM matchs
WHERE matchs.joueur1_id=$IdJoueur1 AND matchs.joueur2_id=$IdJoueur2";

$query2 = "SELECT COUNT(*) AS NbMatchs,
0 AS NbVictoires,
SUM(1-matchs.victoire) AS NbNuls,
SUM(matchs.victoire) AS NbDefaites,
SUM(matchs.score2) AS NbButP,
SUM(matchs.score1) AS NbButC
FROM matchs
WHERE matchs.joueur1_id=$IdJoueur2 AND matchs.joueur2_id=$IdJoueur1";

$queryunion="$query1 UNION $query2";

$queryall="SELECT tablunion.IDcompetition AS IDcompetition,
SUM(tablunion.NbMatchs) AS NbMatchs,
SUM(tablunion.NbVictoires) AS NbVictoires,
SUM(tablunion.NbNuls) AS NbNuls,
SUM(tablunion.NbDefaites) AS NbDefaites,
SUM(tablunion.NbButP) AS NbButP,
SUM(tablunion.NbButC) AS NbButC
FROM ($queryunion) AS tablunion";

$query="SELECT tablunion2.NbMatchs AS NbMatchs,
tablunion2.NbVictoires/tablunion2.NbMatchs AS PourcentV,
tablunion2.NbNuls/tablunion2.NbMatchs AS PourcentN,
tablunion2.NbDefaites/tablunion2.NbMatchs AS PourcentD,
tablunion2.NbButP/tablunion2.NbMatchs AS NbButPPM,
tablunion2.NbButC/tablunion2.NbMatchs AS NbButCPM,
elimination_joueur.niveau_elimination AS Elim
FROM ($queryall) AS tablunion2";

Mais je ne l'ai pas testé... Normalement, ça te donne les résultats de la colonne de gauche!!! Je te laisse deviner comment en déduire ceux de la colonne de droite...;)

A+

Modifié par Bourinho
Lien vers le commentaire
Partager sur d’autres sites

Salut, pour ton score le plus élevé :

$query = "SELECT max(abs(matchs.score1-matchs.score2)) AS DiffMax,
equipe1.nom_equipe AS Eq1,
equipe2.nom_equipe AS Eq2,
matchs.joueur1_id AS J1Id,
matchs.joueur2_id AS J2Id,
matchs.score1 AS S1,
matchs.score2 AS S2
FROM matchs, equipe AS equipe1, equipe AS equipe2
WHERE (matchs.joueur1_id=$IdJoueur1 AND matchs.joueur2_id=$IdJoueur2
AND equipe1.id=matchs.equipe1_id AND equipe2.id=matchs.equipe2_id)
OR (matchs.joueur1_id=$IdJoueur2 AND matchs.joueur2_id=$IdJoueur1
AND equipe1.id=matchs.equipe1_id AND equipe2.id=matchs.equipe2_id)
ORDER BY DiffMax DESC, matchs.id DESC
LIMIT 0,1";

Pour les derniers matchs, voili voilou :

$query= "SELECT equipe1.nom_equipe AS Eq1,
equipe2.nom_equipe AS Eq2,
matchs.joueur1_id AS J1Id,
matchs.joueur2_id AS J2Id,
matchs.score1 AS S1,
matchs.score2 AS S2
FROM matchs, equipe AS equipe1, equipe AS equipe2
WHERE (matchs.joueur1_id=$IdJoueur1 AND matchs.joueur2_id=$IdJoueur2
AND equipe1.id=matchs.equipe1_id AND equipe2.id=matchs.equipe2_id)
OR (matchs.joueur1_id=$IdJoueur2 AND matchs.joueur2_id=$IdJoueur1
AND equipe1.id=matchs.equipe1_id AND equipe2.id=matchs.equipe2_id)
ORDER BY matchs.id DESC
LIMIT 0,5";

A+

Pour utiliser le resultat de cette requête, il faut appeler les valeurs par le nom qui suit les "AS" dans la requête... Si tu n'arrives pas a comprendre, je te conseille d'aller sur le Site du Zero...parce que c'est bien joli de demander des requêtes...mais je ne serai certainement pas toujours là pour te les donner!!!

Modifié par Bourinho
Lien vers le commentaire
Partager sur d’autres sites

Posté (modifié)

Salut,

Merci pour toutes ces requêtes... :)

Donc voici où j'en suis... après quelques jours de travail...

1/ niveau elimination joueur par tournoi :

J'ai mis en route la table elimination_joueur, et avec ta requête çà marche nickel (mon tableau de matchs par joueur peut enfin s'afficher avec le niveau d'élimination par tournoi, certes il faut que je le rentre dans la table mais bon au moins çà marchs...)

Petite question : comment fait on pour afficher les chiffres de buts marqués avec 2 chiffres maxi apres la virgule (ex: 2,22)

2/ les 5 derniers matchs et le score le plus éléve :

J'ai fait quelques ajout et modifications de ta requête notamment pour afficher le nom des joueurs aulieu des Idjoueur,les images des équipes de fâçon dynamique. J'ai aussi rajouter GROUPBY matchs.id car sinon çà fonctionnait pas... Donc çà c'est plûtot sympa...

3/ la requête pour les duels...

Alors là, je bloque un peu car je n'arrive pas à afficher les resultats mais jy travaille . Je crois qu'il ya un problème d'execution de requête à cause du manque de GROUPE BY à la fin des query1 et 2...

a+

Modifié par spamyx
Lien vers le commentaire
Partager sur d’autres sites

Veuillez vous connecter pour commenter

Vous pourrez laisser un commentaire après vous êtes connecté.



Connectez-vous maintenant

×
×
  • Créer...