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

Résolu
silver Messages postés 18 Date d'inscription   Statut Membre Dernière intervention   -  
silver Messages postés 18 Date d'inscription   Statut Membre Dernière intervention   -
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

  1. Reivax962 Messages postés 3742 Statut Membre 1 011
     
    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
  2. silver Messages postés 18 Date d'inscription   Statut Membre Dernière intervention   1
     
    Cette solution fonctionne !

    Merci beaucoup de votre aide :)

    Silver
    0