Récupération de données triées

Résolu/Fermé
silver Messages postés 31 Date d'inscription mercredi 7 novembre 2001 Statut Membre Dernière intervention 2 avril 2016 - 25 nov. 2013 à 20:57
silver Messages postés 31 Date d'inscription mercredi 7 novembre 2001 Statut Membre Dernière intervention 2 avril 2016 - 26 nov. 2013 à 20:46
Bonjour,

Voici mon code simplifié :

$query = "SELECT * FROM Table WHERE ID IN ('8', '4', '2', '5', '1', '3', '7', '6')";
$film_sql = $bdd->query("$query");
while ($film = $film_sql->fetch()){
echo $film['ID'];
}

Ce code affiche mes ID dans l'ordre numérique : 1, 2, 3, 4, 5, 6, 7, 8.

Alors que j'ai besoin de conserver l'ordre suivant : '8', '4', '2', '5', '1', '3', '7', '6'.

Comment faire ?

En vous remerciant d'avance de votre aide.
Cordialement,
Silver

2 réponses

Reivax962 Messages postés 3672 Date d'inscription jeudi 16 juin 2005 Statut Membre Dernière intervention 11 février 2021 1 011
Modifié par Reivax962 le 26/11/2013 à 11:18
Bonjour,

J'ai une solution à proposer. Je ne sais pas si c'est la meilleur d'un point de vue lisibilité, mais ça devrait fonctionner avec de bonnes performances.

$query = "SELECT t.* FROM Table t
INNER JOIN (
    SELECT 1 as ordre, 8 as film
    UNION ALL SELECT 2, 4
    UNION ALL SELECT 3, 2
    UNION ALL SELECT 4, 5
    UNION ALL SELECT 5, 1
    UNION ALL SELECT 6, 3
    UNION ALL SELECT 7, 7
    UNION ALL SELECT 8, 6
) o ON o.film = t.ID
ORDER BY o.ordre";

Cette requête ne devrait pas être trop dur à générer en php.

Xavier
1
silver Messages postés 31 Date d'inscription mercredi 7 novembre 2001 Statut Membre Dernière intervention 2 avril 2016 1
26 nov. 2013 à 20:46
Cette solution fonctionne !

Merci beaucoup de votre aide :)

Silver
0