Page 1 sur 1

pourquoi me requet ne fonctionne pas ?

Posté : 19 sept. 2009, 21:15
par fabrice88250
bonsoir,
j'ai une requette pour un petit moteur de recherche sur mon site qui fonctionne tres bien sauf que le trie (order by) ne fonctionne pas.
voici ma requet :
$resultat=mysql_query("SELECT * FROM IWgalerie WHERE type='$champ' AND match(`ref`,`exemple`,`alt`) against ('$mot') ORDER BY type ASC");

Re: pourquoi me requet ne fonctionne pas ?

Posté : 19 sept. 2009, 22:55
par Ryle
Et qu'est ce qui te fait croire que le tri ne fonctionne pas ? :)

Tu demandes de trier les résultats de ta requête suivant la colonne "type" par ordre croissant, mais dans ta requête tu ne récupères que des enregistrements dont le type est égal à $champ....
Vu que tous les enregistrements ont la même valeur pour le type, ils sont forcément triés ;)

Re: pourquoi me requet ne fonctionne pas ?

Posté : 20 sept. 2009, 00:06
par @rthur
Hello,

Pour info, les recherches full-text de MySQL te renvoie un score de pertinence qui permet de classer les résultats du plus pertinent au moins pertinent (c'est ce qu'on utilise le + dans un moteur de recherche).
Explications ici:
http://dev.mysql.com/doc/refman/5.0/fr/ ... earch.html

Re: pourquoi me requet ne fonctionne pas ?

Posté : 20 sept. 2009, 11:18
par fabrice88250
ah bon après vos réponses je me suis apercu que j'avais mis mon order by sur la mauvaise requet.
Effectivement sa fonctionne.

autre petite question avant de mettre résolu, peut t'on faire un tri sur plusieurs champs ?
par exemple je tri et j'affiche d'abord en fonction de mon champ 'type' et ensuite en fonction de mon champ 'description'.
de cette maniere j'aurai :

Paysage : automne 2008 les arbres....
paysage : pendant une randonnée sur les crêtes....
Paysage : Sur le lac de longemer...

Villes et villages : autre ville qui dans son...
Villes et villages : la place aux doigts d'or....

Re: pourquoi me requet ne fonctionne pas ?

Posté : 20 sept. 2009, 11:24
par fabrice88250
ok j'ai trouvé un solution :
$resultat=mysql_query("SELECT * FROM IWgalerie WHERE match(`ref`,`exemple`,`alt`) against ('$mot') ORDER BY type, ref, alt  ASC");
c'est tout bête !

Re: pourquoi me requet ne fonctionne pas ?

Posté : 20 sept. 2009, 12:38
par sylvaing26
Pour l'optimisation le SELECT * ou le SELECT ALL n'est pas très recommandé
Il vaut mieux renseigner tous les champs de ta table
SELECT champ1,champ2,champ3 FROM IWgalerie WHERE match(`ref`,`exemple`,`alt`) against ('$mot') ORDER BY type, ref, alt  ASC