Classer les résultats d'une table mysql [Résolu]

Signaler
Messages postés
41
Date d'inscription
mardi 4 octobre 2005
Statut
Membre
Dernière intervention
9 septembre 2008
-
Messages postés
41
Date d'inscription
mardi 4 octobre 2005
Statut
Membre
Dernière intervention
9 septembre 2008
-
Bonjour, je voudrais savoir comment classer les résultats d'une requête mysql du plus grand nombre (le nombre se situe à l'interieur d'un champs nommé nb).
Je m'explique, je fais un moteur de recherche/annuaire, voici les composants de ma table :
titre
des
url
cles
nb
quand on clique sur un site dans mon moteur de recherche, il affiche une page avec un script ajoutant 1 à la table nb. Mais ensuite pendant que le visiteur recherche, je voudrais qu'il affiche les résultats du plus grand nombre de nb au plus petit, pour que les sites soient du plus populaire au moin populaire. Voici ma page de recherche complète, j'éspère que vous comprenderez :

<html>
<?php include('metatags/metatags-general.inc');





$r = explode(' ', $_GET['r']);
$last_word = $r[count($r)-1];
while(list($num, $word) = each($r)){
$req = '`cles` LIKE "%'.$word.'%"';
if($last_word != $word){
$req .= ' OR ';
}
}
include('__conf/mysql_conf.inc');
mysql_connect($serveur, $base, $pass);
mysql_select_db('sonarty');
$requete = mysql_query('SELECT id,titre,des,url,cles FROM sonarty_tout WHERE '.$req.';');
$id=mysql_num_rows($requete);


?>
<head>
<title>Sonarty - Résultat de la recherche</title>
</head>



&nbsp,

<table align="left" border="0" cellspacing="0" cellpadding="0" width="100%">
----,
<?php include('__inc/page-haut.inc'); ?>
</td>
----

,

----

,

----

<?php include('__inc/menu-haut.inc'); ?>

----

,

----

<? include('__pub/script-pub.php'); ?>,

----

,

----

<table border="0" width="740" cellspacing="0" cellpadding="0">,
<? echo $_GET['r']; ?> >
</td>

Il y a <?php echo $id; ?> résultat(s)

<?php


while ($donnees = mysql_fetch_array($requete) )
{
?>
&12378985278-98401=<? echo $donnees['id']; ?>"><? echo $donnees['titre']; ?>

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

Infos : <? echo $donnees['url']; ?> - ID : <? echo $donnees['id']; ?> - Haut de page

<?
}


mysql_close();


$r2=$_GET['r'];


mysql_connect("$serveur", "$base", "$pass");
mysql_select_db("sonarty");
mysql_query("INSERT INTO sonarty_clee VALUES('', '$r2')");
mysql_close();


?>

</td>
</tr>
<tr>
<td height="13" background="__img/site_15.png" width="740"></td>
</tr>
<tr>
<td height="13" background="__img/site_14.png" width="740"></td>
</tr>
</table>





</TD>
<TD WIDTH="11" BACKGROUND="__img/site_02.jpg">&nbsp</TD>
</TABLE>


</html>

Tony1239456

5 réponses

Messages postés
9433
Date d'inscription
mardi 9 octobre 2001
Statut
Membre
Dernière intervention
13 avril 2007
8
ORDER BY se met après le WHERE '.$req.'

<hr size="2" width="100%"><li>Entraide, dépannage et vulgarisation informatique : Mon site de vulgarisation informatique</li>
Messages postés
420
Date d'inscription
vendredi 28 novembre 2003
Statut
Membre
Dernière intervention
20 mars 2006

Et il me semble qu'il y a un ";" en trop et j'espère que tu as remplacé
"champ" par "nb" (qui est d'après ce que j'ai lu le champ a partir
duquel tu veux établir ton classement) <_<



D'ailleurs petit rappel lexical (car j'ai vu que tu confondais les deux dans ton premier post) :

"sonarty_tout" est une table

"id", "titre", "des", "url", "cles" et "nb" sont des champs (fields en anglais) de cette table



En gros, il faut mettre :

$requete = mysql_query( ' SELECT id, titre, des, url, cles FROM sonarty_tout WHERE '.$req.' ORDER BY nb DESC ' );



@Antho > t'es sûr que la position du ORDER BY a une importance? o.o
Messages postés
9433
Date d'inscription
mardi 9 octobre 2001
Statut
Membre
Dernière intervention
13 avril 2007
8
Salut,



pour classer en fonction d'un champ c'est ceci :



SELECT champ FROM table ORDER BY champ ASC



pour l'ordre décroissant :



SELECT champ FROM table ORDER BY champ DESC

<hr size="2" width="100%"><li>Entraide, dépannage et vulgarisation informatique : Mon site de vulgarisation informatique</li>
Messages postés
41
Date d'inscription
mardi 4 octobre 2005
Statut
Membre
Dernière intervention
9 septembre 2008

j'ai mit ma requête sql comme sa :
$requete = mysql_query('SELECT id,titre,des,url,cles FROM sonarty_tout ORDER BY champ DESC WHERE '.$req.';');
mais sa m'affiche une erreur.

Tony123945
Messages postés
41
Date d'inscription
mardi 4 octobre 2005
Statut
Membre
Dernière intervention
9 septembre 2008

Je voulais créer un petit moteur de recherche pour mon site, en classant les sites par leur popularitée, et je vois que sa marche très bien, car quand un visiteur tape une recherche et clique sur le site qu'il lui intéresse, mon script rajoute 1 point à la table nb du site.

Tony123945