REQUETE DE TRI [ORDER BY]

- 7 oct. 2004 à 11:23
nougitch Messages postés 431 Date d'inscription mercredi 22 octobre 2003 Statut Membre Dernière intervention 17 novembre 2008 - 7 oct. 2004 à 14:11
Bonjour !

Je souhaiterais pouvoir classer mes données selon 3 critères : par nom de fiche, par date ou par thème.

Les requêtes seules fonctionnent (quand je les teste dans PHPMYADMIN).
Par contre, en réel, rien ne bouge.
J'ai essayé plusieurs possibilités et il me semble que le problème vient de la condition.

Quand je clique sur tri, la page est rechargée avec une variable appelée "tri= x" (x étant le nombre correspondant à la requête).

Si quelqu'un peut m'aider ce serait très sympathique !

Voici les informations nécéssaires :

La base de données :
pragma-z

Le fichier de connexion à la base :
<?
$connexion =mysql_connect("localhost","root","") or die("connexion impossible");
mysql_select_db("pragma-z", $connexion);
?>

Mon fichier (liste_fiches.php3) :
<?
include("connexion.php3");
echo $tri;
if ($tri= 1) {$requete2=mysql_query("SELECT * FROM fiches,themes WHERE fiches.theme_fiche=themes.id_theme ORDER BY date_fiche",$connexion);}
else if ($tri=2) {$requete2=mysql_query("SELECT * FROM fiches,themes WHERE fiches.theme_fiche=themes.id_theme ORDER BY theme_fiche",$connexion);}
else {$requete2=mysql_query("SELECT * FROM fiches,themes WHERE fiches.theme_fiche=themes.id_theme ORDER BY titre_fiche ASC",$connexion);}
echo ",
tri,
tri,
tri,
, \";
while($table=mysql_fetch_array($requete2,MYSQL_ASSOC)) {
echo \"----
$table[id_fiche],
$table[titre_fiche],
";
$date=$table[date_fiche];
$temps = explode ("-", $date);
$ladate = date ("d-m-Y", mktime(0,0,0,$temps[1],$temps[2],$temps[0]));
echo "$ladate,
$table[titre_theme],
voir, \";
}
exit;
echo "
";
echo "erreur";
?>

La table fiches :
CREATE TABLE fiches (
id_fiche mediumint(9) NOT NULL auto_increment,
date_fiche date NOT NULL default '0000-00-00',
titre_fiche varchar(32) NOT NULL default '',
theme_fiche mediumint(9) NOT NULL default '0',
fichier_fiche varchar(255) NOT NULL default '',
PRIMARY KEY (id_fiche)
) TYPE =MyISAM;

Contenu de la table fiches :
INSERT INTO fiches VALUES (59, '1976-11-22', 'Les différentes matières', 10, '11.jpg');
INSERT INTO fiches VALUES (58, '1999-06-17', 'Toutes les huiles', 8, '10.jpg');
INSERT INTO fiches VALUES (57, '2000-07-12', 'Les feux au xénon', 7, '09.jpg');
INSERT INTO fiches VALUES (48, '1981-08-11', 'La façade détachable', 1, '01.jpg');
INSERT INTO fiches VALUES (49, '1982-03-29', 'Le chargeur 10 Cds', 1, '02.jpg');
INSERT INTO fiches VALUES (50, '1987-09-15', 'Qu\'est ce que le GPS ?', 2, '03.jpg');
INSERT INTO fiches VALUES (51, '1988-08-08', 'A propos du satellite', 2, '04.jpg');
INSERT INTO fiches VALUES (53, '1971-12-13', 'Les pneus rechapés', 4, '05.jpg');
INSERT INTO fiches VALUES (54, '1983-03-07', 'La structure radiale', 4, '06.jpg');
INSERT INTO fiches VALUES (55, '2001-11-23', 'Les pots', 5, '07.jpg');
INSERT INTO fiches VALUES (56, '2003-05-21', 'Les jantes alliage', 6, '08.jpg');
INSERT INTO fiches VALUES (60, '1987-01-01', 'Les coloris', 11, '12.jpg');
INSERT INTO fiches VALUES (61, '1972-12-21', 'Les arbres magiques', 12, '13.jpg');

La table theme :
CREATE TABLE themes (
id_theme mediumint(9) NOT NULL auto_increment,
titre_theme varchar(32) NOT NULL default '',
PRIMARY KEY (id_theme)
) TYPE=MyISAM;

Contenu de la table theme :
INSERT INTO themes VALUES (1, 'Auto-radio');
INSERT INTO themes VALUES (2, 'GPS');
INSERT INTO themes VALUES (4, 'Pneumatique');
INSERT INTO themes VALUES (5, 'Echappement');
INSERT INTO themes VALUES (6, 'Jantes');
INSERT INTO themes VALUES (7, 'Feux');
INSERT INTO themes VALUES (8, 'Huiles');
INSERT INTO themes VALUES (10, 'Tapis');
INSERT INTO themes VALUES (11, 'Housses');
INSERT INTO themes VALUES (12, 'Accessoires');

Merci d'avance pour votre attention !

Nougitch

2 réponses

cs_lotr Messages postés 128 Date d'inscription mardi 11 mai 2004 Statut Membre Dernière intervention 12 août 2005
7 oct. 2004 à 12:49
Bonjour,

ton code est un peu long donc j'ai pas tout lu...
Effectivement, il y a un problème au niveau de la condition.$tri 1 c'est une assignation. Si tu veux faire une comparaison c'est $tri 1.
C'est donc if ($tri == 1) qu'il faut mettre.

Par ailleurs, php3 est un peu dépassé (le 5 vient de sortir). Tu devrais donc à mon avis renommer tes fichiers en ".php" au lieu de ".php3".
0
nougitch Messages postés 431 Date d'inscription mercredi 22 octobre 2003 Statut Membre Dernière intervention 17 novembre 2008
7 oct. 2004 à 14:11
Merci beaucoup LOTR !

Effectivement, je faisais une assignation et non une comparaison.

Je te remercie encore.

Nougitch
0
Rejoignez-nous