8797 sujets

Développement web côté serveur, CMS

Bonjour, j'ai une requête ou le ORDER BY ne fonctionne pas, si quelqu'un peu m'aider car je séche Smiley decu

Voici la requête:

$result2 = mysql_query('SELECT name, img, quality, type, slot, zam, level FROM items WHERE zam = \''. $id .'\' OR id = \''. $id .'\'') or die('Query failed' );
oui moi je l'avais placer la

$result2 = mysql_query('SELECT name, img, quality, type, slot, zam, level FROM items WHERE zam = \''. $id .'\' OR id = \''. $id .'\' ORDER BY test') or die('Query failed' );
Pas d'erreur de syntaxe ? Ta colonne s'appelle bien "test" ?

Quand tu dis "ne fonctionne pas", ça te renvoi une erreur ou c'est le ORDER BY qui ne range pas les résultats dans l'ordre ?
Modifié par Apoooo (05 Feb 2013 - 10:06)
Voila exactement ce que je veux faire:

$result2 = mysql_query('SELECT name, img, quality, type, slot, zam, level FROM items WHERE zam = \''. $id .'\' OR id = \''. $id .'\' ORDER BY type ASC') or die('Query failed' );


Le ORDER ne classe pas les resultat
Modifié par Erewen (05 Feb 2013 - 10:06)
A vu d'oeil comme ça, je vois pas. Je viens de tester chez moi et cela fonctionne.

Essais en évitant les échappements de simples quotes avec des doubles quotes :

mysql_query("SELECT name, img, quality, type, slot, zam, level FROM items WHERE zam = '". $id ."' OR id = '". $id ."' ORDER BY type ASC")
De quel type est ta colonne "test" ? Par expérience, le tri sur un char ou varchar peut donner des résultats assez bizarre.


Tente d'ajouter ton "test" dans les champs sélectionnés, ça te donnera une idée de comment il trie ^^
Dans le cas d'un enum, elle trie dans l'ordre dans lequel l'enum a été défini ^^

si tu as défini ton énum dans l'ordre ("CD","Vynil","Casette","DVD","Video"), l'ordre de sortie via order by asc sera "CD", "Vynil", "Cassette", "DVD", "Video".
Dans l'ordre desc "Video","DVD","Cassette","Vynil","CD"


La solution pour avoir par ordre alphabétique :
ORDER BY cast(`type` AS char)

Et par ordre numérique (à ne faire que sur des énums de type "1,2,3,4") :
order by cast(`type` as int)

(plus d'information sur la fonction "cast" > Manuel mysql)