English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

Tutoriel PHP de base

Tutoriel PHP avancé

PHP & MySQL

Manuel de référence PHP

ORDER BY MySQL PHP

Dans ce tutoriel, vous apprendrez à trier et afficher les données des tables MySQL en ordre croissant ou décroissant en utilisant PHP.

Tri des ensembles de résultats

ORDER BYLa clause peut être combinée avecSELECTLes clauses peuvent être combinées pour afficher les données des tables triées par un champ spécifique. La clause ORDER BY permet de définir le nom du champ sur lequel le tri s'effectue ainsi que la direction d'ordre croissant ou décroissant.

La syntaxe de base de cette clause peut être donnée de la manière suivante :

SELECT column_name(s) FROM table_name ORDER BY column_name(s) ASC|DESC

Utilisons une requête SQL avec la clause ORDER BY pour effectuer une requête SQL, puis nous exécuterons la requête en la passant à la fonction PHP mysqli_query() pour obtenir des données ordonnées. Considérez la table persons de la base de données de démonstration suivante :

+----+------------+-----------+----------------------+
| id | first_name | last_name | email              |
+----+------------+-----------+----------------------+
|  1 | Peter      | Parker    | [email protected] |
|  2 | John       | Rambo     | [email protected]   |
|  3 | Clark      | Kent      | [email protected]   |
|  4 | John       | Carter    | [email protected]  |
|  5 | Harry      | Potter    | [email protected] |
+----+------------+-----------+----------------------+

Dans l'exemple suivant, le code PHP sélectionne toutes les lignes de la table personsfirst_nameLes colonnes sont triées par ordre alphabétique des résultats.

Exemple : méthode procédurale

<?php
/* tentative de connexion au serveur MySQL. Supposons que vous exécutez MySQL.
Serveur avec configuration par défaut (utilisateur sans mot de passe "root") */
$link = mysqli_connect("localhost", "root", "", "demo");
 
//vérification de la connexion
if($link === false){
    die("erreur : impossible de se connecter. " . mysqli_connect_error());
}
 
//tentative d'exécuter une requête SELECT avec une clause ORDER BY
$sql = "SELECT * FROM persons ORDER BY first_name";
if($result = mysqli_query($link, $sql)){
    if(mysqli_num_rows($result) > 0){
        echo "<table>";
            echo "<tr>";
                echo "<th>id</th>";
                echo "<th>first_name</th>";
                echo "<th>last_name</th>";
                echo "<th>email</th>";
            echo "</tr>";
        while($row = mysqli_fetch_array($result)){
            echo "<tr>";
                echo "<td>" . $row['id'] . "</td>";
                echo "<td>" . $row['first_name'] . "</td>";
                echo "<td>" . $row['last_name'] . "</td>";
                echo "<td>" . $row['email'] . "</td>";
            echo "</tr>";
        }
        echo "</table>";
        //fermer le jeu de résultats
        mysqli_free_result($result);
    } else{
        echo "Aucun enregistrement correspondant à votre requête trouvé.";
    }
} else{
    echo "erreur : impossible d'exécuter $_sql. " . mysqli_error($link);
}
 
//Fermez la connexion
mysqli_close($link);
?>

Exemple : méthode orientée objet

<?php
/* tentative de connexion au serveur MySQL. Supposons que vous exécutez MySQL.
Serveur avec configuration par défaut (utilisateur sans mot de passe "root") */
$mysqli = new mysqli("localhost", "root", "", "demo");
 
//vérification de la connexion
if($mysqli === false){
    die("erreur : impossible de se connecter. " . $mysqli->connect_error);
}
 
//tentative de sélection de l'exécution de la requête avec une clause ORDER BY
$sql = "SELECT * FROM persons ORDER BY first_name";
if($result = $mysqli->query($sql)){
    if($result->num_rows > 0){
        echo "<table>";
            echo "<tr>";
                echo "<th>id</th>";
                echo "<th>first_name</th>";
                echo "<th>last_name</th>";
                echo "<th>email</th>";
            echo "</tr>";
        while($row = $result->fetch_array()){
            echo "<tr>";
                echo "<td>" . $row['id'] . "</td>";
                echo "<td>" . $row['first_name'] . "</td>";
                echo "<td>" . $row['last_name'] . "</td>";
                echo "<td>" . $row['email'] . "</td>";
            echo "</tr>";
        }
        echo "</table>";
        // Libérez la collection de résultats
        $result->free();
    } else{
        echo "Aucun enregistrement correspondant à votre requête trouvé.";
    }
} else{
    echo "erreur : impossible d'exécuter $_sql. " . $mysqli->error;
}
 
//Fermez la connexion
$mysqli->close();
?>

Exemple : méthode PDO

<?php
/* tentative de connexion au serveur MySQL. Supposons que vous exécutez MySQL.
Serveur avec configuration par défaut (utilisateur sans mot de passe "root") */
try{
    $pdo = new PDO("mysql:host=localhost;dbname=demo", "root", "");
    //configurer le mode d'erreur PDO en exception
    $pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
} catch(PDOException $e){
    die("erreur : impossible de se connecter. " . $e->getMessage());
}
 
//tentative de sélection de l'exécution de la requête
try{
    $sql = "SELECT * FROM persons ORDER BY first_name";
    $result = $pdo->query($sql);
    if($result->rowCount() > 0){
        echo "<table>";
            echo "<tr>";
                echo "<th>id</th>";
                echo "<th>first_name</th>";
                echo "<th>last_name</th>";
                echo "<th>email</th>";
            echo "</tr>";
        while($row = $result->fetch()){
            echo "<tr>";
                echo "<td>" . $row['id'] . "</td>";
                echo "<td>" . $row['first_name'] . "</td>";
                echo "<td>" . $row['last_name'] . "</td>";
                echo "<td>" . $row['email'] . "</td>";
            echo "</tr>";
        }
        echo "</table>";
        //Libérez la collection de résultats
        unset($result);
    } else{
        echo "Aucun enregistrement correspondant à votre requête trouvé.";
    }
} catch(PDOException $e){
    die("Erreur : Impossible d'exécuter $sql. \->getMessage());
}
 
//Fermez la connexion
unset($pdo);
?>

Après avoir trié les résultats, la collection de résultats sera comme suit :

+----+------------+-----------+----------------------+
| id | first_name | last_name | email              |
+----+------------+-----------+----------------------+
|  3 | Clark      | Kent      | [email protected]   |
|  5 | Harry      | Potter    | [email protected] |
|  2 | John       | Rambo     | [email protected]   |
|  4 | John       | Carter    | [email protected]  |
|  1 | Peter      | Parker    | [email protected] |
+----+------------+-----------+----------------------+

Avis :Par défaut, la clause ORDER BY trie les résultats par ordre croissant. Pour trier les enregistrements par ordre décroissant, vous pouvez utiliser la clé DESC.