Page 1 sur 2

affichage d'un tableau par tri en DESC aide svp ???

Posté : 04 oct. 2006, 16:11
par zizou59
bonjour !
voilà çà va peut être vous paraitre idiot ce genre de question mais bon ...

j'ai un problème dans l'affichage de mon tableau de score !!

je veux faire un tri par point(pts),différence de but(dif) et par but pour(bp)

mais dans ma requette je l'ai sans doute mal ecrit !!!

si vous pouvez me donnez quelque info sil vous plait!!!


voici ma requete avec l'affichage!!!

<? 
require('private/config.php'); 
mysql_select_db("$database");
$table="resltat_match";
$line=1;

$nbdebut = mysql_query(" 
SELECT 
*
FROM $table
ORDER BY pts DESC,dif DESC,bp DESC


");

while ($donnees = mysql_fetch_array($nbdebut) )
{

$equipe=$donnees['club'];

$rep_p = mysql_query("SELECT COUNT(*) AS nbre_p FROM gst_match where gp='p' and equipe ='$equipe' ");
$donneesp = mysql_fetch_array($rep_p);
$nbre_p = $donneesp['nbre_p']; 

$rep_g = mysql_query("SELECT COUNT(*) AS nbre_g FROM gst_match where gp='g' and equipe ='$equipe' ");
$donneesg = mysql_fetch_array($rep_g);
$nbre_g = $donneesg['nbre_g']; 

$rep_n = mysql_query("SELECT COUNT(*) AS nbre_n FROM gst_match where gp='n' and equipe ='$equipe' ");
$donneesn = mysql_fetch_array($rep_n);
$nbre_n = $donneesn['nbre_n']; 


$rep_nB = mysql_query("SELECT SUM(but_p) as but_p , SUM(but_c) as but_c FROM gst_match where equipe ='$equipe' ");
$donneesB = mysql_fetch_array($rep_nB);
$but_p = $donneesB['but_p']; 
$but_c = $donneesB['but_c']; 
$dif = ($but_p-$but_c);


?>
                      <tr valign="middle">
                        <td > <div align="center"><? echo "$line";
							  $line++;?></div></td>
                        <td width="200" align="left">
                            <div align="left"><?=$donnees['club']?></div><div align="left"></div></td>
                        <td><div align="center">
                          <?=$donnees['pts']?>
                        </div></td>
                        <td>
                           <div align="center"><?=$donnees['jo']?></div></td>
                        <td>
                            <div align="center"><? echo $nbre_g;?></div></td>
                        <td> <div align="center"><? echo $nbre_n;?></div></td>
                        <td><div align="center"><? echo $nbre_p;?></div></td>
                        <td>
                          <div align="center"><? if (isset($but_p)) 
				{$but_p = $but_p;}
				else 
				{$but_p = 0;}
				echo $but_p;?></div></td>
                        <td>
                          <div align="center"><? 
				if (isset($but_c)) 
				{$but_c = $but_c;}
				else 
				{$but_c = 0;}
				
				
				echo $but_c;?></div></td>
                        <td>
                            <div align="center"><? if ($dif>=0)
{ 
$dif="+$dif";

}


echo "$dif";?></div></td>
                      </tr>
                      <?

}
//}
?>


Posté : 04 oct. 2006, 16:13
par fred9999
salut

tu ne peut pas ranger par trois termes en meme temps juste un seul

désolé

Posté : 04 oct. 2006, 16:19
par zizou59
ah bon????

et comment faire alors pour le tri????

chui obligé pour avoir un classement corect!!! :cry:

:arrow: je veux juste que mon affichage dans le tableau se fait par ordre décroissance pour les points;les buts pour et enfin les difs!!!

Posté : 04 oct. 2006, 16:21
par fred9999
en fait la solution pour moi serai de mettre le nombre de points comme tri par défaut
ensuite avec des liens on renvoi le tri qu'on souhaite

Posté : 04 oct. 2006, 18:37
par jojolapine
salut

tu ne peut pas ranger par trois termes en meme temps juste un seul

désolé
#

Vous mélangez ASC et DESC.

SELECT * FROM t1 ORDER BY key_part1 DESC, key_part2 ASC;
qui a raison ? (j'en sais pas plus j'ai pas trouvé plus d'exemples :roll: )

Posté : 04 oct. 2006, 19:20
par Cyrano
Si, on peut avoir plusieurs clauses de tri dans la même requête. Mais pour pouvoir répondre convenablement, il faudrait avoir la structure des tables utilisées et un jeu d'essai pour pouvoir faire éventuellement des essais en local. J'avais fait un truc du genre pour un club de foot il y a pas mal de temps et je me souviens que la requête pour afficher le classement était assez gratinée, mais c'est faisable.

Posté : 05 oct. 2006, 09:35
par fred9999
salut

Avec des requetes combinée c'es peut etre faisable (quoique j'ai jamais testé :lol: )

mais avec sa simple requete avoir trois agents de tri différent la j'en doute :?

Posté : 05 oct. 2006, 12:16
par Vikchill
Comme le dit Cyrano, avec la structure et un jeu d'essai on pourra en dire plus, mais a priori le plus simple est de tout avoir dans une requête, donc soit de calculer les données de chaque club en PHP puis de la stocker dans une table "classement" (pas complètement idiot puisqu'il s'agit de données fixes pendant une semaine en général) sur laquelle on fait un vieux SELECT ... ORDER BY... très simple, soit de faire une requête un peu plus compliquée qui te fait deux pierres d'un coup.

Posté : 05 oct. 2006, 14:10
par zizou59
ok donc pour info voici ma structure de table:

=> resltat_match
-- --------------------------------------------------------

--
-- Structure de la table `resltat_match`
--

CREATE TABLE `resltat_match` (
`numero` int(3) NOT NULL,
`club` text NOT NULL,
`pts` int(3) NOT NULL default '0',
`jo` int(3) NOT NULL default '0',
`g` int(3) NOT NULL default '0',
`n` int(3) NOT NULL default '0',
`p` int(3) NOT NULL default '0',
`bp` int(3) NOT NULL default '0',
`bc` int(3) NOT NULL default '0',
`dif` text NOT NULL,
`pen` text NOT NULL,
PRIMARY KEY (`numero`)
) TYPE=MyISAM AUTO_INCREMENT=13 ;

--
-- Contenu de la table `resltat_match`
--

INSERT INTO `resltat_match` (`numero`, `club`, `pts`, `jo`, `g`, `n`, `p`, `bp`, `bc`, `dif`, `pen`) VALUES (1, 'UXEM A.AM.J. 3', 7, 3, 1, 1, 1, 5, 3, '+2', 'opsssssssssssssssss'),
(2, 'TETEGHEM US 3', 9, 3, 2, 0, 1, 7, 6, '+1', 'opsssssssssssssssss'),
(3, 'GHYVELDE JS 3', 4, 3, 0, 1, 2, 4, 10, '-6', 'opsssssssssssssssss'),
(4, 'P.SYNTHE SM 3', 8, 3, 1, 2, 0, 5, 3, '+2', 'opsssssssssssssssss'),
(5, 'ST POL USCC 2', 10, 3, 2, 1, 0, 7, 1, '+6', 'opsssssssssssssssss'),
(6, 'WARHEM US 2', 7, 3, 1, 1, 1, 2, 4, '-2', 'opsssssssssssssssss'),
(7, 'BIERNE FC ', 7, 3, 1, 1, 1, 4, 4, '+0', 'opsssssssssssssssss'),
(8, 'QUAEDYPRE C.O 2', 4, 3, 0, 1, 2, 2, 9, '-7', 'opsssssssssssssssss'),
(9, 'MORINS F.C. ', 4, 3, 0, 1, 2, 3, 5, '-2', 'opsssssssssssssssss'),
(10, 'DKE DOCKERS ', 10, 3, 2, 1, 0, 10, 3, '+7', 'opsssssssssssssssss'),
(11, 'ASPTT DUNKERQ ', 7, 3, 1, 1, 1, 5, 5, '+0', 'opsssssssssssssssss'),
(12, 'COUDEKERQUE R ', 7, 3, 1, 1, 1, 5, 6, '-1', 'opsssssssssssssssss');
=> gst_match

-- --------------------------------------------------------

--
-- Structure de la table `gst_match`
--

CREATE TABLE `gst_match` (
`numero` int(11) NOT NULL,
`equipe` text NOT NULL,
`but_p` int(3) NOT NULL default '0',
`but_c` int(3) NOT NULL default '0',
`gp` char(1) NOT NULL default '',
`n_match` int(3) NOT NULL default '0',
`n_tour` int(3) NOT NULL default '0',
`date` date NOT NULL default '0000-00-00',
`heure` time NOT NULL default '00:00:00',
`com` text NOT NULL,
`N_journee` int(3) NOT NULL default '0',
`pt` int(3) NOT NULL default '0',
`cpt` int(3) NOT NULL default '0',
PRIMARY KEY (`numero`)
) TYPE=MyISAM AUTO_INCREMENT=55 ;

--
-- Contenu de la table `gst_match`
--

INSERT INTO `gst_match` (`numero`, `equipe`, `but_p`, `but_c`, `gp`, `n_match`, `n_tour`, `date`, `heure`, `com`, `N_journee`, `pt`, `cpt`) VALUES (22, 'QUAEDYPRE C.O 2', 2, 4, 'p', 1, 21, '2006-09-10', '10:30:00', 'rien', 1, 1, 1),
(23, 'WARHEM US 2', 2, 1, 'g', 0, 23, '2006-09-10', '09:00:00', 'rien', 1, 4, 4),
(24, 'BIERNE FC', 1, 2, 'p', 1, 23, '2006-09-10', '09:00:00', 'rien', 1, 1, 1),
(25, 'TETEGHEM US 3', 2, 1, 'g', 0, 25, '2006-09-10', '10:00:00', 'rien', 1, 4, 4),
(26, 'MORINS F.C.', 1, 2, 'p', 1, 25, '2006-09-10', '10:00:00', 'rien', 1, 1, 1),
(27, 'P.SYNTHE SM 3', 0, 0, 'n', 0, 27, '2006-09-10', '10:30:00', 'rien', 1, 2, 2),
(21, 'ASPTT DUNKERQ', 4, 2, 'g', 0, 21, '2006-09-10', '10:30:00', 'rien', 1, 4, 4),
(20, 'COUDEKERQUE R', 1, 1, 'n', 1, 1, '2006-09-10', '10:00:00', 'rien', 1, 2, 2),
(19, 'DKE DOCKERS', 1, 1, 'n', 0, 1, '2006-09-10', '10:00:00', 'rien', 1, 2, 2),
(28, 'UXEM A.AM.J. 3', 0, 0, 'n', 1, 27, '2006-09-10', '10:30:00', 'rien', 1, 2, 2),
(29, 'ST POL USCC 2', 4, 0, 'g', 0, 29, '2006-09-10', '15:00:00', 'rien', 1, 4, 4),
(30, 'GHYVELDE JS 3', 0, 4, 'p', 1, 29, '2006-09-10', '15:00:00', 'rien', 1, 1, 1),
(31, 'BIERNE FC', 0, 0, 'n', 0, 31, '2006-09-24', '10:30:00', 'rien', 2, 2, 3),
(32, 'ASPTT DUNKERQ', 0, 0, 'n', 1, 31, '2006-09-24', '10:30:00', 'rien', 2, 2, 6),
(33, 'MORINS F.C.', 0, 0, 'n', 0, 33, '2006-09-24', '10:30:00', 'rien', 2, 2, 3),
(34, 'WARHEM US 2', 0, 0, 'n', 1, 33, '2006-09-24', '10:30:00', 'rien', 2, 2, 6),
(35, 'QUAEDYPRE C.O 2', 0, 0, 'n', 0, 35, '2006-09-24', '10:30:00', 'rien', 2, 2, 3),
(36, 'ST POL USCC 2', 0, 0, 'n', 1, 35, '2006-09-24', '10:30:00', 'rien', 2, 2, 6),
(37, 'COUDEKERQUE R', 1, 3, 'p', 0, 37, '2006-09-24', '08:45:00', 'rien', 2, 1, 3),
(38, 'P.SYNTHE SM 3', 3, 1, 'g', 1, 37, '2006-09-24', '08:45:00', 'rien', 2, 4, 6),
(39, 'UXEM A.AM.J. 3', 2, 3, 'p', 0, 39, '2006-09-24', '10:00:00', 'rien', 2, 1, 3),
(40, 'TETEGHEM US 3', 3, 2, 'g', 1, 39, '2006-09-24', '10:00:00', 'rien', 2, 4, 8),
(41, 'GHYVELDE JS 3', 2, 4, 'p', 0, 41, '2006-09-24', '10:30:00', 'rien', 2, 1, 2),
(42, 'DKE DOCKERS', 4, 2, 'g', 1, 41, '2006-09-24', '10:30:00', 'rien', 2, 4, 6),
(43, 'ASPTT DUNKERQ', 1, 3, 'p', 0, 43, '2006-10-01', '10:30:00', 'rien', 3, 1, 7),
(44, 'ST POL USCC 2', 3, 1, 'g', 1, 43, '2006-10-01', '10:30:00', 'rien', 3, 4, 10),
(45, 'BIERNE FC', 3, 2, 'g', 0, 45, '2006-10-01', '10:30:00', 'rien', 3, 4, 7),
(46, 'MORINS F.C.', 2, 3, 'p', 1, 45, '2006-10-01', '10:30:00', 'rien', 3, 1, 4),
(47, 'DKE DOCKERS', 5, 0, 'g', 0, 47, '2006-10-01', '10:00:00', 'rien', 3, 4, 10),
(48, 'QUAEDYPRE C.O 2', 0, 5, 'p', 1, 47, '2006-10-01', '10:00:00', 'rien', 3, 1, 4),
(49, 'TETEGHEM US 3', 2, 3, 'p', 0, 49, '2006-10-01', '10:00:00', 'rien', 3, 1, 9),
(50, 'COUDEKERQUE R', 3, 2, 'g', 1, 49, '2006-10-01', '10:00:00', 'rien', 3, 4, 7),
(51, 'WARHEM US 2', 0, 3, 'p', 0, 51, '2006-10-01', '09:00:00', 'rien', 3, 1, 7),
(52, 'UXEM A.AM.J. 3', 3, 0, 'g', 1, 51, '2006-10-01', '09:00:00', 'rien', 3, 4, 7),
(53, 'P.SYNTHE SM 3', 2, 2, 'n', 0, 53, '2006-10-01', '10:30:00', 'rien', 3, 2, 8),
(54, 'GHYVELDE JS 3', 2, 2, 'n', 1, 53, '2006-10-01', '10:30:00', 'rien', 3, 2, 4);

Posté : 05 oct. 2006, 16:37
par Vikchill
Je suis pas sûr de comprendre tes règles de gestion, sans description c'est pas évident.

Ta table resltat_match ressemble beaucoup à une table de classement (club, pts, matchs joués, matchs gagnés, matchs perdus, matchs nuls, etc...) tandis que ta table gst_match a l'air de stocker les informations de chaque match.

Si c'est bien ça, tu dois mettre à jour la première table en fonction des données de la seconde? Auquel cas il suffit de faire une requête sur la première pour avoir le classement non?

Posté : 05 oct. 2006, 16:43
par Victor BRITO
Salut!

Essaie de regarder du côté de la fonction "GROUP BY". :wink:

Posté : 05 oct. 2006, 20:37
par zizou59
oui c'est exactement celà!!!

la premiere table reprend tous les resultat d'un classement qui mise à jour grace a la deuxième qui elle reprend chaque match avec les score!!!

voilà donc j'attent vos réponse les amis !!!

parce que mçme en métant le tri juste by pts le tbleau n'est pas logique!!!

doit y avoir un truc mais quoi :idea:

:arrow: je cherche aussi jvous rassure!!! :roll:

Posté : 05 oct. 2006, 21:11
par Cyrano
Bon, ben déjà, c'est pas très sorcier sur la table des résultats :
une simple requête sans tri donne ceci :

Code : Tout sélectionner

mysql> SELECT * FROM `resltat_match`; +--------+-----------------+-----+----+---+---+---+----+----+-----+---------------------+ | numero | club | pts | jo | g | n | p | bp | bc | dif | pen | +--------+-----------------+-----+----+---+---+---+----+----+-----+---------------------+ | 1 | UXEM A.AM.J. 3 | 7 | 3 | 1 | 1 | 1 | 5 | 3 | +2 | opsssssssssssssssss | | 2 | TETEGHEM US 3 | 9 | 3 | 2 | 0 | 1 | 7 | 6 | +1 | opsssssssssssssssss | | 3 | GHYVELDE JS 3 | 4 | 3 | 0 | 1 | 2 | 4 | 10 | -6 | opsssssssssssssssss | | 4 | P.SYNTHE SM 3 | 8 | 3 | 1 | 2 | 0 | 5 | 3 | +2 | opsssssssssssssssss | | 5 | ST POL USCC 2 | 10 | 3 | 2 | 1 | 0 | 7 | 1 | +6 | opsssssssssssssssss | | 6 | WARHEM US 2 | 7 | 3 | 1 | 1 | 1 | 2 | 4 | -2 | opsssssssssssssssss | | 7 | BIERNE FC | 7 | 3 | 1 | 1 | 1 | 4 | 4 | +0 | opsssssssssssssssss | | 8 | QUAEDYPRE C.O 2 | 4 | 3 | 0 | 1 | 2 | 2 | 9 | -7 | opsssssssssssssssss | | 9 | MORINS F.C. | 4 | 3 | 0 | 1 | 2 | 3 | 5 | -2 | opsssssssssssssssss | | 10 | DKE DOCKERS | 10 | 3 | 2 | 1 | 0 | 10 | 3 | +7 | opsssssssssssssssss | | 11 | ASPTT DUNKERQ | 7 | 3 | 1 | 1 | 1 | 5 | 5 | +0 | opsssssssssssssssss | | 12 | COUDEKERQUE R | 7 | 3 | 1 | 1 | 1 | 5 | 6 | -1 | opsssssssssssssssss | +--------+-----------------+-----+----+---+---+---+----+----+-----+---------------------+ 12 rows in set (0.00 sec)
Rajoutons quelques clauses de tri :

Code : Tout sélectionner

mysql> SELECT * FROM `resltat_match` -> ORDER BY pts DESC, g DESC, n DESC, p DESC; +--------+-----------------+-----+----+---+---+---+----+----+-----+---------------------+ | numero | club | pts | jo | g | n | p | bp | bc | dif | pen | +--------+-----------------+-----+----+---+---+---+----+----+-----+---------------------+ | 5 | ST POL USCC 2 | 10 | 3 | 2 | 1 | 0 | 7 | 1 | +6 | opsssssssssssssssss | | 10 | DKE DOCKERS | 10 | 3 | 2 | 1 | 0 | 10 | 3 | +7 | opsssssssssssssssss | | 2 | TETEGHEM US 3 | 9 | 3 | 2 | 0 | 1 | 7 | 6 | +1 | opsssssssssssssssss | | 4 | P.SYNTHE SM 3 | 8 | 3 | 1 | 2 | 0 | 5 | 3 | +2 | opsssssssssssssssss | | 1 | UXEM A.AM.J. 3 | 7 | 3 | 1 | 1 | 1 | 5 | 3 | +2 | opsssssssssssssssss | | 6 | WARHEM US 2 | 7 | 3 | 1 | 1 | 1 | 2 | 4 | -2 | opsssssssssssssssss | | 7 | BIERNE FC | 7 | 3 | 1 | 1 | 1 | 4 | 4 | +0 | opsssssssssssssssss | | 11 | ASPTT DUNKERQ | 7 | 3 | 1 | 1 | 1 | 5 | 5 | +0 | opsssssssssssssssss | | 12 | COUDEKERQUE R | 7 | 3 | 1 | 1 | 1 | 5 | 6 | -1 | opsssssssssssssssss | | 3 | GHYVELDE JS 3 | 4 | 3 | 0 | 1 | 2 | 4 | 10 | -6 | opsssssssssssssssss | | 8 | QUAEDYPRE C.O 2 | 4 | 3 | 0 | 1 | 2 | 2 | 9 | -7 | opsssssssssssssssss | | 9 | MORINS F.C. | 4 | 3 | 0 | 1 | 2 | 3 | 5 | -2 | opsssssssssssssssss | +--------+-----------------+-----+----+---+---+---+----+----+-----+---------------------+ 12 rows in set (0.00 sec)
Et encore j'aurais pu en rajouter, il suffit simplement de préciser pour chaque colonne dans quel ordre tu le veux, par défaut, c'est ASC (du plus petit au plus grand, mais tu peux demander en ordre DESC.

Là par exemple tu pourrais rajouter la colonne dif pour le cas où ça se jouerait sur le goal-average.

Posté : 05 oct. 2006, 21:20
par zizou59
ouep j'ai très bien saisi cyrano mais a tu bien vérifié?

par pts no prob
gagner no prob mais après regarde là plus de classement décroissant!!!


c'est la methode que j'ai faites!!!
:wink:

Posté : 05 oct. 2006, 21:25
par Cyrano
Le tri va se faire par ordre de priorité : si tu as par un exemple un tri sur trois colonnes, le tri sera effectué d'abord sur la première : s'il y a des égalités sur cette première colonne entre plusieurs lignes, le tri sera alors refait sur la seconde, puis, toujours en cas d'égalité sur la troisième.

Donc ce qu'il faut que tu détermines, c'est comment tu dois classer tes clubs.

Éventuellement, fais le classement à la main et affiche-nous ça ici qavec les explications qu'on puisse t'indiquer comment mettre tes clauses.