8800 sujets

Développement web côté serveur, CMS

Bonjour,

Afin d'ordonner correctement un tableau qui regroupe des mots recherchés sur un site, je classe mes résultats en fonction du nombre de recherches effectuées pour chaque mot.

Voila ma requête :


SELECT * FROM search ORDER BY Compteur_Search ASC 


Quand je la teste sous mysql, aucun soucis, le classement se fait normalement. Mais une fois dans mon code php, le classement ne se fait plus normalement.


$req = "SELECT * FROM search ORDER BY Compteur_Search ASC ";
$result = mysql_query($req);


Je m'explique :
- quand j'arrive sur ma page où le tableau s'affiche, les 63 premieres lignes sont bien ordonnées comme demandé dans la requête mais les ligne suivantes sont classées de façon aléatoire. Smiley confus

Voila une partie des résultats pour vous permettre de voir ce que ça donne :

2 Carte
3 Alpha
3 Beta
3 Exigence
3 Elephant
3 Fouine
4 Alice
4 Cola
4 Druide
4 Plan
4 Sirop
5 Aventure
7 Nuage
7 Soleil - Jusque là le tri est ok, ensuite ça se gâte
1 Nounou
1 Stylo
1 Elargir
3 Coudre
2 Barre
2 Santé
1 Dicton
2 Colle
1 Inscription
2 Juste
2 Sirène
1 Cheveux
5 Amande
2 Loupe

J'ai également le même soucis, lorsque je trie mes résultats par Lib_Search ASC, le début est bien trié et la suite ne l'est pas Smiley decu

J'ai cherché un peu partout mais sans succès. Si quelqu'un sait pourquoi ce tri ne fonctionne plus correctement une fois fait dans mon code.

Merci d'avance
Modifié par lilinette (22 Apr 2011 - 11:46)
Voila, j'espère que ça ira :

Colonne------------Type--------Null-----------Défaut------Extra
ID_Search----------int(11)------Non-----------Aucun------AUTO_INCREMENT
Lib_Search---------varchar(50)--Non-----------Aucun
Date_Search-------datetime-----Oui------------NULL
Compteur_Search---int(11)-------Oui------------NULL
Je n'ai rien d'extraordinaire, je trouve ça bizarre aussi (surtout que la requete SQL testée dans la base fonctionne et une fois ici, ça ne fonctionne plus). Je n'avais jamais eu le problème auparavant :


//Ouverture de la BDD
bdd_open();

//Requete SQL
$req = "SELECT * FROM search ORDER BY Compteur_Search ASC ";
$result = mysql_query($req);

//Tableau
echo "<table><tr><th>Compteur</th><th>Mot</th></tr>";

                       
while($row = mysql_fetch_array($result))
{
   
    echo "<tr>";
    //Affichage de la date 
    $d = utf8_encode($row['Date_Search']);
    echo "<td>".date("d", strtotime($d))."-".date("m", strtotime($d))."-".date("Y", strtotime($d))."</td>";
    //Affichage du compteur       
    echo "<td>".utf8_encode($row['Compteur_Search'])."</td>";
    //Affichage du mot
    echo "<td>".utf8_encode($row['Lib_Search'])."</td>";
    echo "</tr>";
}

echo "</table>";

//Fermeture BDD
bdd_close();
J'ai trouvé d'où vient l'erreur. C'est tout bête.

Le tri ne se faisait plus une fois la 73e ligne passée. J'ai donc compté et recompté, et en fait j'ai 73 entrées dans ma table.

Le tri s'effectue donc bien Smiley smile Une seconde requête non triée s'effectuait à la suite, je ne sais pas pourquoi. J'ai delete ma table et je l'ai refaite. Depuis plus aucun soucis.


-> Topic à clore Smiley lol