Aller au contenu

Fonctions calcul sql/php pour football


Sujets conseillés

Posté

Salut...

1) C'est cool si ça marche!!! C'est déjà ça de pris! Par contre, l'affichage des deux chiffres après la virgule, je ne sais pas comment on fait (ça doit être par défaut chez moi... :unsure: )

2) Je viens de m'apercevoir d'une boulette dans cette requête... le max au début ne sert à rien normalement!!! C'est peut être ça qui la faisait bugger!

3)Normalement, elle devrait fonctionner sans groupe by... mais bon, y a peut être une boulette! Par contre, si tu veux vraiment connaitre les raisons des erreurs SQL, fais tes requêtes comme suit :

$Resultat=mysql_query($TaRequete) or die(mysql_error());

en phase de production, c'est super utile...après quand ça marche, tu peux le virer...

Voilà...

PS : Plus de 2000 lectures pour ce fil!!! Doit pas y avoir énormément de post avec une telle statistique!!!! ;)

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

Contributeurs actifs dans ce sujet

Contributeurs actifs dans ce sujet

Images postées

Posté (modifié)

Salut, et oui plus de 2000 lectures , bientôt on va pouvoir editer un livre" php sql pour les footeux" :)

Bon j'ai mis ton code pour voir les erreurs dans ma requête et çà m'a mis çà :

Unknown column 'tablunion.IDcompetition' in 'field list'

Donc j'ai enlever une ligne qui faisait appel a tablunion.IDcompetition et çà a marché !

Juste encore le problème d'arrondi a 2 chiffres apres la virgule...

Voilà faut que je creuse encore un peu pour faire afficher la colonne de droite mais çà doit être bon (je pense copier coller la requête mais inverser les IdJoueur (1 par 2) ... et après va falloir passer à la dernière requête (étape 4) :

4/ page RECORDS (allez bourinho on y est presque ... lol !)

merci encore

Modifié par spamyx
Posté (modifié)

Salut, pour les tableaux "records", je te propose ça... J'ai pas testé car ma base n'est plus à jour... Mais vu que t'as réussi à négocier mes dernières boulettes, tu devrais t'en tirer avec ça! (les noms doivent être assez explicites pour savoir quelle requête fait quoi ;))

$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,
matchs.joueur1_id AS IDjoueur
FROM matchs
GROUP BY IDjoueur,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,
matchs.joueur2_id AS IDjoueur
FROM matchs
GROUP BY IDjoueur,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,
tablunion.IDjoueur AS IDjoueur
FROM ($queryunion) AS tablunion
GROUP BY IDjoueur,IDcompetition";

$queryMeilleureAttaque="SELECT *,
tournoi.nom_tournoi AS competition,
tablunion2.NbButP/tablunion2.NbMatchs AS NbButPPM,
joueur.nom_joueur AS NomJoueur
FROM ($queryall) AS tablunion2, tournoi, joueur
WHERE tournoi.id=tablunion2.IDcompetition AND joueur.id=tablunion2.IDjoueur
ORDER BY NbButPPM DESC
LIMIT 0,5";

$queryMeilleureDefense="SELECT *,
tournoi.nom_tournoi AS competition,
tablunion2.NbButC/tablunion2.NbMatchs AS NbButCPM,
joueur.nom_joueur AS NomJoueur
FROM ($queryall) AS tablunion2, tournoi, joueur
WHERE tournoi.id=tablunion2.IDcompetition AND joueur.id=tablunion2.IDjoueur
ORDER BY NbButCPM
LIMIT 0,5";

$queryMeilleurePourcentage="SELECT *,
tournoi.nom_tournoi AS competition,
tablunion2.NbVictoires/tablunion2.NbMatchs AS PourcentV,
joueur.nom_joueur AS NomJoueur
FROM ($queryall) AS tablunion2, tournoi, joueur
WHERE tournoi.id=tablunion2.IDcompetition AND joueur.id=tablunion2.IDjoueur
ORDER BY PourcentV DESC
LIMIT 0,5";

$queryGrosEcart ="SELECT *,
matchs.score1-matchs.score2 AS Ecart,
joueur1.nom_joueur AS NJ1,
joueur2.nom_joueur AS NJ1,
equipe1.nom_equipe AS NE1,
equipe2.nom_equipe AS NE2
FROM matchs, joueur AS joueur1, joueur AS joueur2, equipe AS equipe1, equipe AS equipe2
WHERE matchs.joueur1_id=joueur1.id
AND matchs.joueur2_id=joueur2.id
AND matchs.equipe1_id=equipe1.id
AND matchs.equipe2_id=equipe2.id
ORDER BY Ecart DESC
LIMIT 0,5";

A+

PS : pour le pourcentage de victoire, tu aurais probablement corrgié de toi même, ce n'est pas

tablunion2.NbVictoires/tablunion2.NbMatchs AS PourcentV,

mais

100*tablunion2.NbVictoires/tablunion2.NbMatchs AS PourcentV,

;)

Modifié par Bourinho
Posté

Salut !

Super tes requêtes comme d'hab, :thumbsup: elles fonctionnent nickel et j'arrive bien (pour l'instant ) à les customiser. J'ai vraiment l'impression de participer ! :)

Il me reste 2 petits soucis :

1/ toujours cet histoire d'arrondi a 2 chiffres apres la virgule (je crois que je vais ouvrir un nouveau post dans le forum, peut être que quelqu'un connaît..)

2/ Je veux afficher un classement des joueurs suivant leur nombre de pts (champ POF de la table joueur). Ma requête est bonne mais comment fait t'on pour afficher la place des joueurs dans le classement comme çà (avec les chiffres 1-2-3 etc.. ):

1- bourinho (42,3pts)

2- spamyx (40,1)

3-

etc..

Ma requête :

requête SQL:

SELECT joueur.nom_joueur, joueur.pof

FROM joueur

ORDER BY joueur.pof DESC

LIMIT 0 , 30

Une idée ? :rolleyes:

a+

;)

Posté

Salut,

2/ Je veux afficher un classement des joueurs suivant leur nombre de pts (champ POF de la table joueur). Ma requête est bonne mais comment fait t'on pour afficher la place des joueurs dans le classement comme çà (avec les chiffres 1-2-3 etc.. ):

1- bourinho (42,3pts)

2- spamyx (40,1)

3-

etc..

Ma requête :

requête SQL:

SELECT joueur.nom_joueur, joueur.pof

FROM joueur

ORDER BY joueur.pof DESC

LIMIT 0 , 30

Tu n'a qu'a rajouter un compteur quand tu l'affiches...

$cpt=1;
while (...)
{
...//La, tu affiches ce aui t'interesse...
$cpt++;
}

C'est a mon avis le plus simple... et en plus ca ne doit pas etre tres couteux en ressources. Ca permettra d'etre sur d'etre a jour a chaque affichage!

A+

Posté

Salut !

bon, je m'immisce un peu (Bourinho a tellement répondu; c'est son sujet wink.gif).

Pour l'arrondi, tu as deux solutions possibles :

la fonction round(), ou la fonction number_format(). A toi de voir laquelle te convient le mieux.

Captain torche est de retour (je crois que tu es un des 1er à m'avoir répondu sur ce post) :) !

J'ai essayer ton round(), çà marche pour une valeur fixe mais je ne sais pas comment l'intégrer pour faire un arrondi sur un resultat de base de données. Prenons un exemple :

Je veux afficher mon classement comme ceci :

pos / nom joueur / pof

1- Bourinho 42,38 pts

2- spamyx 23,46 pts

3- torche 21,48 pts

J'ai donc fait cette requête ( au passage merci Bourinho pour le tips du compteur) :

<?
mysql_select_db($database_ConnexionScore, $ConnexionScore);
$queryPOF="SELECT joueur.nom_joueur AS NJ, joueur.pof AS POF
FROM joueur
ORDER BY joueur.pof DESC
LIMIT 0 , 30";
$reponse=mysql_query($queryPOF);
if ($reponse)
{
?>
<table border: 1px solid black>
<tr>
<td>class</td>
<td>nom</td>
<td>pof</td>
</tr>

<?
$cpt=1;
while ($donnees = mysql_fetch_array($reponse) )
{
?>
<tr>
<td><? echo $cpt++; ?></td>
<td><? echo $donnees['NJ']; ?></td>
<td><? echo $donnees['POF']; ?></td>
</tr>
<?
}
?>
</table>
<?
}
?>
</body>
</html>

Et donc je na'rrive pas à faire en sorte que mon chiffre 'POF' soit arrondi à un chiffre apres la virgule . J'ai essayé un truc du style :

<? round ($donnees['POF'],1); ?>

<? echo $donnees['POF']; ?>

mais çà n'a rien donné :blush:

une idée?

merci a+

Posté

Et si tu mettais

<?php echo round($donnees['POF'], 1); ?>

Ce que tu fais dans le code de ton message précédent :

- Tu calcules effectivement l'arrond à un chiffre après la virgule, mais tu ne l'attribues à aucune variable, ce qui fait que PHP ne pourra rien en faire.

- Tu affiches ensuite le contenu de ta variable, qui n'a pas changé entretemps.

Pour faire ce que tu pensais faire, il faudrait faire comme ça :

<?php
$data = round ($donnees['POF'],1);
echo $data;
?>

Posté

Salut,

Pour ton

echo cpt++;

Je ne sais pas si cela marche... et je ne sais pas ce que cela fait!

A ta place, je ferais plus cela :

$cpt=0;
while ($donnees = mysql_fetch_array($reponse) )
{
?>
<tr>
<td><? $cpt++;echo $cpt; ?></td>
<td><? echo $donnees['NJ']; ?></td>
<td><? echo $donnees['POF']; ?></td>
</tr>
<?
}

A+

Posté

Oui effectivement c'est parfait ! :P

j'ai reussi aussi pour le round() donc c'est bien je continue d'avancer ( l'objectif étant d'arriver à 3000 lectures du post ;) )

a+

Posté

De retour !

Je continue à bidouiller les requêtes de Maître Bourinho. J'ai réussi par exemple à calculer le nb d'équipes prises par un joueur. (exemple : pour spamyx : 18 matchs avec Lyon, 26 avec Madrid etc...)

Par contre j'ai un ptit problème pour la requête de la page STATS JOUEURS. Elle marche très bien, elle permet de regrouper les résultats d'un joueur par tournoi MAIS (et oui il y a un MAIS :rolleyes: )

j'aimerais avoir aussi en dernière ligne du tableau récapitulatif du joueur : son nombre TOTAL de matchs , son nombre total de victoires etc..; En fait une ligne recapitulatif ( sans GROUP BY IDCompetition)...

Je continue a coder mais si tu es là Bourinho... :whistling:

a+

Posté (modifié)

Salut,

en reprenant les mêmes "sous-requêtes" qu'avant, c'est à dire :

$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";

ou avec les modifs evetuelles que tu as du faire si ça ne fonctionnait pas...

Je pense qu'il faut faire un truc du genre :

$queryDerniereLigne = "SELECT SUM(table1.NbMatchs) AS NbMatchs,
SUM(table1.NbVictoires) AS NbVictoires,
SUM(table1.NbDefaites) AS NbDefaites,
SUM(table1.NbNuls) AS NbNuls,
... (les trucs que tu veux avec les formules qui vont bien)
FROM ($query) AS table1";

Normalement, ça doit être ça... Après, je sais pas ce que tu mets dans le "etc", mais je pense que tu peux y arriver... au pire, tu sais ou poster!

A+

PS : Plus de 2500 lectures!!!! :wacko:

Modifié par Bourinho
Posté

Salut !!!! :)

Alors j'essaye de faire cette requêteDerniere Ligne mais j'obtient l'erreur suivante : Duplicate column name 'id'.

Ma page php :

<?php require_once('Connections/ConnexionScore.php'); ?>
<!DOCTYPE html PUBLIC "–//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1–strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr" >
<body>
<?
$IdJoueur=1;//
mysql_select_db($database_ConnexionScore, $ConnexionScore);
$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";

mysql_select_db($database_ConnexionScore, $ConnexionScore);
$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";

mysql_select_db($database_ConnexionScore, $ConnexionScore);
$queryunion="$query1 UNION $query2";

mysql_select_db($database_ConnexionScore, $ConnexionScore);
$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";

mysql_select_db($database_ConnexionScore, $ConnexionScore);
$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,
tablunion2.NbVictoires/tablunion2.NbMatchs*100 AS PourcentV,
elimination.nom_elimination AS Elim
FROM ($queryall) AS tablunion2, tournoi, elimination_joueur, elimination
WHERE tournoi.id=tablunion2.IDcompetition
AND elimination_joueur.joueur_id=$IdJoueur
AND elimination_joueur.niveau_elimination=elimination.id
AND elimination_joueur.tournoi_id=tournoi.id";
$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>
<td>Elim</td>
<td>GA</td>
<td>%V</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>
<td><? echo $donnees['Elim']; ?></td>
<td><? echo $donnees['Goalaverage']; ?></td>
<td><? echo $donnees['PourcentV']; ?></td>
</tr>
<?
}
?>
</table>
<?
}
?>
<? $queryDerniereLigne = "SELECT SUM(table1.NbMatchs) AS NbMatchsT,
SUM(table1.NbVictoires) AS NbVictoiresT,
SUM(table1.NbDefaites) AS NbDefaitesT,
SUM(table1.NbNuls) AS NbNulsT,
SUM(table1.NbButP) AS NbButPT,
SUM(table1.NbButC) AS NbButCT,
NbButPT/NbMatchsT AS NbButPPMT,
NbButCT/NbMatchsT AS NbButPCMT,
NbButPT-NbButCT AS GoalaverageT,
NbVictoiresT/NbMatchsT*100 AS PourcentVT
FROM ($query) AS table1";

$reponse=mysql_query($queryDerniereLigne);
$Resultat=mysql_query($queryDerniereLigne) or die(mysql_error());
if ($reponse)
{
?>
<table border: 1px solid black>
<tr>
<td> </td>
<td>-----TOTAL-----</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>
<td>GA</td>
<td>%V</td>
</tr>
<?
while ($donnees = mysql_fetch_array($reponse) )
{
?>
<tr>
<td> </td>
<td> </td>
<td>
<? echo $donnees['NbMatchsT']; ?></td>
<td>
<? echo $donnees['NbVictoiresT']; ?></td>
<td>
<? echo $donnees['NbNulsT']; ?></td>
<td>
<? echo $donnees['NbDefaitesT']; ?></td>
<td>
<? echo $donnees['NbButPT']; ?></td>
<td>
<? echo $donnees['NbButCT']; ?></td>
<td>
<? echo $donnees['NbButPPMT']; ?></td>
<td>
<? echo $donnees['NbButCPMT']; ?></td>
<td><? echo $donnees['GoalaverageT']; ?></td>
<td><? echo $donnees['PourcentVT']; ?></td>
</tr>
<?
}
?>
</table>
<?
}
?>

</body>
</html>

J'ai fait 2 tableaux : 1 tableau pour presenter les resultats par tournois et puis un tableau "derniereligne" pour présenter les resulatts TOTAUX du joueur. Serait il possible de l'intégrer dans le 1er tableau ou non?

merci encore

PS : alleez les bleuuuuus

Posté

Salut,

je n'ai pas la réponse à ta question mais il y a des trucs qui me plaisent pas du tout dans ton code...

1)

mysql_select_db($database_ConnexionScore, $ConnexionScore);

Tu n'est pas obligé de te reconnecter à chaque fois à ta base de données... Une fois suffit.... :1eye:

2)

$reponse=mysql_query($queryDerniereLigne);
$Resultat=mysql_query($queryDerniereLigne) or die(mysql_error());

Euh... j'ai beau cherché, je vois pas à quoi ça sert! :fou: Tu n'utilises jamais $Resultat par la suite, alors fait donc :

$reponse=mysql_query($queryDerniereLigne) or die(mysql_error());

Voilà...Sinon, je vois pas trop d'où vient l'erreur... Est ce que cela marche avec uniquement:

$queryDerniereLigne = "SELECT SUM(table1.NbMatchs) AS NbMatchs,
SUM(table1.NbVictoires) AS NbVictoires,
SUM(table1.NbDefaites) AS NbDefaites,
SUM(table1.NbNuls) AS NbNuls
FROM ($query) AS table1";

A+

Posté

Salut !!!! :)

Alors j'essaye de faire cette requêteDerniere Ligne mais j'obtient l'erreur suivante : Duplicate column name 'id'.

Ma page php :

<?php require_once('Connections/ConnexionScore.php'); ?>
<!DOCTYPE html PUBLIC "–//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1–strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr" >
<body>
<?
$IdJoueur=1;//
mysql_select_db($database_ConnexionScore, $ConnexionScore);
$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";

mysql_select_db($database_ConnexionScore, $ConnexionScore);
$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";

mysql_select_db($database_ConnexionScore, $ConnexionScore);
$queryunion="$query1 UNION $query2";

mysql_select_db($database_ConnexionScore, $ConnexionScore);
$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";

mysql_select_db($database_ConnexionScore, $ConnexionScore);
$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,
tablunion2.NbVictoires/tablunion2.NbMatchs*100 AS PourcentV,
elimination.nom_elimination AS Elim
FROM ($queryall) AS tablunion2, tournoi, elimination_joueur, elimination
WHERE tournoi.id=tablunion2.IDcompetition
AND elimination_joueur.joueur_id=$IdJoueur
AND elimination_joueur.niveau_elimination=elimination.id
AND elimination_joueur.tournoi_id=tournoi.id";
$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>
<td>Elim</td>
<td>GA</td>
<td>%V</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>
<td><? echo $donnees['Elim']; ?></td>
<td><? echo $donnees['Goalaverage']; ?></td>
<td><? echo $donnees['PourcentV']; ?></td>
</tr>
<?
}
?>
</table>
<?
}
?>
<? $queryDerniereLigne = "SELECT SUM(table1.NbMatchs) AS NbMatchsT,
SUM(table1.NbVictoires) AS NbVictoiresT,
SUM(table1.NbDefaites) AS NbDefaitesT,
SUM(table1.NbNuls) AS NbNulsT,
SUM(table1.NbButP) AS NbButPT,
SUM(table1.NbButC) AS NbButCT,
NbButPT/NbMatchsT AS NbButPPMT,
NbButCT/NbMatchsT AS NbButPCMT,
NbButPT-NbButCT AS GoalaverageT,
NbVictoiresT/NbMatchsT*100 AS PourcentVT
FROM ($query) AS table1";

$reponse=mysql_query($queryDerniereLigne);
$Resultat=mysql_query($queryDerniereLigne) or die(mysql_error());
if ($reponse)
{
?>
<table border: 1px solid black>
<tr>
<td> </td>
<td>-----TOTAL-----</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>
<td>GA</td>
<td>%V</td>
</tr>
<?
while ($donnees = mysql_fetch_array($reponse) )
{
?>
<tr>
<td> </td>
<td> </td>
<td>
<? echo $donnees['NbMatchsT']; ?></td>
<td>
<? echo $donnees['NbVictoiresT']; ?></td>
<td>
<? echo $donnees['NbNulsT']; ?></td>
<td>
<? echo $donnees['NbDefaitesT']; ?></td>
<td>
<? echo $donnees['NbButPT']; ?></td>
<td>
<? echo $donnees['NbButCT']; ?></td>
<td>
<? echo $donnees['NbButPPMT']; ?></td>
<td>
<? echo $donnees['NbButCPMT']; ?></td>
<td><? echo $donnees['GoalaverageT']; ?></td>
<td><? echo $donnees['PourcentVT']; ?></td>
</tr>
<?
}
?>
</table>
<?
}
?>

</body>
</html>

J'ai fait 2 tableaux : 1 tableau pour presenter les resultats par tournois et puis un tableau "derniereligne" pour présenter les resulatts TOTAUX du joueur. Serait il possible de l'intégrer dans le 1er tableau ou non?

merci encore

Posté

Salut, tu viens donc de découvrir le "codebox"... mais faut le faire en cliquant sur Editer juste en dessous de ton message!!! (au lieu de Citation!!!)

A+

Posté

Désolé pour le code à rallonge... maintenant j'utiliserais la balise codeboc. Merci

Donc la requête ne marche pas, je pense qu'il faut spécifier un GROUP BY a la fin de la requête car j'ai l'impression que pour une synthaxe SQL comportant les "SUM" ou COUNt il faut obligatoirement faire un GROUP BY en fin de requête... Le problème c'est que je ne veux afficher sur cette dernière ligne QUE les résulatts TOTAUX et non pas groupés par tournoi....

:wacko:

Posté

Salut,

je te donnes une piste avant d'aller me coucher pour tenter le coup du Group By... y a qu'a s'arranger pour faire un group by sur l'ID du joueur... étant donné que cela ne bouge pas... mais ça me parait bizarre...j'espère qu'il va y avoir des pros du SQL pour nous éclairer la dessus!!!

;)

A+

Posté (modifié)

effectivement si ce met un :

GROUP BY joueur.id

LIMIT 0,1" ;

j'obtiens le bon et unique resultat TOTAL (à creuser...)

a+

Modifié par spamyx

Veuillez vous connecter pour commenter

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



Connectez-vous maintenant

×
×
  • Créer...