[résolu]Problème insoluble avec un ORBER BY

Nouveau WRInaute
Bonjour, j'ai un problème avec un ORBER BY, je met la requête mysql avant l'explication:
Code:
SELECT *  FROM table WHERE  acc='oui' AND ex='non' ORDER BY $order_by DESC LIMIT $1ermess, $nbrmess

Donc voilà, lorsque je veux trier les résultats par note ($order_by=note_video) j'ai un champ dans ma table nommé note_video qui contient la note de chaque vidéo sous cette forme: 15.66 ou encore 19...
Le problème c'est quand une note est inférieur à 10 par exemple 9.44 et bien celle-ci apparait en 1er résultat !! o_O
Voic un exemple de ce que pourrait être les résultats d'une de mes requêtes:
9.548
18.55
17
16
16
15.25
11
10.16

J'ai l'impression que order by interprète les notes sans le point ce qui donne:
9548
1855
17
16
1525
11
1016

Mais il y a encore un problème dans ce cas: en effet 16 est plus petit que 1525 ???

Donc voilà, je ne sais plus quoi faire :euh:

J'ai déja une idée d'où vient le pb, le script qui enregistre les notes dans la base de donnée enregistre les chiffres décimaux avec un point, et non une virgule de plus mon champ note_video est en varchar(5) (deux chiffre . deux décimles).

Pour finir voici comment je calcul la note:
Code:
$note_final= $total_vote / $nbr_vote;

$total_vote est l'addition de toutes les valeurs des votes (15+14+1+20+3+45 ......)
$nbr_vote est le nombre de votants (1+1+1+1+1+1+1+1+1.....)
et $note finale est enregistrée dans la base de donné en varchar(5)

Donc voilà à peu près toutes les infos
Merci d'avance pour votre aide !
 
WRInaute accro
Bah tu viens de répondre à ton problème rien qu'en nous l'exposant :mrgreen:













Tu vois toujours pas ? Tu le dis toi même, ton champ est en varchar et tu t'obstines encore à les voir comme des nombres ^^ Actuellement, le tri se fait caractère par caractère et non sur des nombres.

Donc oui, la requête renvoie le bon résultat. Change le type de tes données en FLOAT et ton problème est réglé.
 
Nouveau WRInaute
Merci beaucoup pour vos réponses, en faite c'était tout con, et oui, au fur et au mesure que j'écrivais le message, je me doutait de plus en plus d'où venait le problème, mais je ne savais pas quel type de champ choisir, donc un bon float et un round($note, 2) pour arrondir à réglé le problème, merci !
 
WRInaute accro
y a pas besoin d'arrondir si tu utilises FLOAT vu qu'il accepte justement les nombres à virgules. Et le point est utilisé comme virgule, donc c'est bon.
 
Discussions similaires
Haut