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

Eléphant du PHP | 94 Messages

04 oct. 2006, 16:11

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>
                      <?

}
//}
?>

~~~~$$$$www.asptt-dunkerque.com$$$$~~~~

Mammouth du PHP | 592 Messages

04 oct. 2006, 16:13

salut

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

désolé

Eléphant du PHP | 94 Messages

04 oct. 2006, 16:19

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!!!
Modifié en dernier par zizou59 le 04 oct. 2006, 16:22, modifié 1 fois.
~~~~$$$$www.asptt-dunkerque.com$$$$~~~~

Mammouth du PHP | 592 Messages

04 oct. 2006, 16:21

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

ViPHP
ViPHP | 3607 Messages

04 oct. 2006, 18:37

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: )

Mammouth du PHP | 19672 Messages

04 oct. 2006, 19:20

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.
Codez en pensant que celui qui maintiendra votre code est un psychopathe qui connait votre adresse :axe:

Mammouth du PHP | 592 Messages

05 oct. 2006, 09:35

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 :?

Eléphant du PHP | 193 Messages

05 oct. 2006, 12:16

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.

Eléphant du PHP | 94 Messages

05 oct. 2006, 14:10

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);
~~~~$$$$www.asptt-dunkerque.com$$$$~~~~

Eléphant du PHP | 193 Messages

05 oct. 2006, 16:37

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?

Mammouth du PHP | 2937 Messages

05 oct. 2006, 16:43

Salut!

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

Eléphant du PHP | 94 Messages

05 oct. 2006, 20:37

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:
~~~~$$$$www.asptt-dunkerque.com$$$$~~~~

Mammouth du PHP | 19672 Messages

05 oct. 2006, 21:11

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.
Codez en pensant que celui qui maintiendra votre code est un psychopathe qui connait votre adresse :axe:

Eléphant du PHP | 94 Messages

05 oct. 2006, 21:20

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:
~~~~$$$$www.asptt-dunkerque.com$$$$~~~~

Mammouth du PHP | 19672 Messages

05 oct. 2006, 21:25

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.
Codez en pensant que celui qui maintiendra votre code est un psychopathe qui connait votre adresse :axe: