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

دروس PHP الأساسية

دروس PHP المتقدمة

PHP & MySQL

دليل PHP

ORDER BY MySQL

في هذا الدرس، ستعلم كيفية ترتيب البيانات في جدول MySQL باستخدام PHP بترتيب تصاعدي أو تنازلي وعرضها.

ترتيب النتائج

ORDER BYيمكن دمجها معSELECTاستخدام الجملة معًا، لمعرفة البيانات في جدول مرتب حسب حقل معين. جملة ORDER BY تسمح لك بتحديد اسم الحقل المستخدم للترتيب وكذلك اتجاه الترتيب (تصاعدي أو تنازلي).

لغة الجملة الأساسية يمكن تقديمها بالشكل التالي:

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

لنستخدم جملة SELECT مع جملة ORDER BY لتنفيذ استعلام SQL، ثم سنقوم بتوليد الاستعلام عبر تمريره إلى دالة PHP mysqli_query() لتنفيذ الاستعلام والحصول على نتائج مرتبة.

+----+------------+-----------+----------------------+
| 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] |
+----+------------+-----------+----------------------+

في المثال التالي، يتم اختيار جميع السجلات من جدول persons باستخدام PHP代码.first_nameترتيب النتائج حسب ترتيب الأحرف الأبجدية.

مثال: طريقة العملية

<?php
/* محاولة اتصال بخادم MySQL. افترض أنك تشغل MySQL.
خادم بإعدادات افتراضية (مستخدم بدون كلمة مرور "root") */
$link = mysqli_connect("localhost", "root", "", "demo");
 
// التحقق من الاتصال
إذا ($link === false){
    die("خطأ: لا يمكن الاتصال. " . mysqli_connect_error());
}
 
//تجربة استخدام جملة ORDER BY لتنفيذ استعلام SELECT
$sql = "SELECT * FROM persons ORDER BY first_name";
إذا ($result = mysqli_query($link, $sql)){
    إذا كان (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>";
        // إغلاق مجموعة النتائج
        mysqli_free_result($result);
    } else{
        echo "لا يمكن العثور على سجلات تتطابق مع استعلامك.";
    }
} else{
    echo "خطأ: لا يمكن تنفيذ $sql. " . mysqli_error($link);
}
 
//إغلاق الاتصال
mysqli_close($link);
?>

مثال: طريقة القياس

<?php
/* محاولة اتصال بخادم MySQL. افترض أنك تشغل MySQL.
خادم بإعدادات افتراضية (مستخدم بدون كلمة مرور "root") */
$mysqli = new mysqli("localhost", "root", "", "demo");
 
// التحقق من الاتصال
إذا ($mysqli === false) {
    die("خطأ: لا يمكن الاتصال. " . $mysqli->connect_error);
}
 
// محاولة تنفيذ استعلام اختياري مع بيانات ترتيب
$sql = "SELECT * FROM persons ORDER BY first_name";
إذا كان ($result = $mysqli->query($sql)) {
    إذا كان ($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>";
        // تحرير مجموعة النتائج
        $result->free();
    } else{
        echo "لا يمكن العثور على سجلات تتطابق مع استعلامك.";
    }
} else{
    echo "خطأ: لا يمكن تنفيذ $sql. " . $mysqli->error;
}
 
//إغلاق الاتصال
$mysqli->close();
?>

مثال: طريقة PDO

<?php
/* محاولة اتصال بخادم MySQL. افترض أنك تشغل MySQL.
خادم بإعدادات افتراضية (مستخدم بدون كلمة مرور "root") */
try{
    $pdo = new PDO("mysql:host=localhost;dbname=demo", "root", "");
    // إعداد نمط الأخطاء PDO على استثنائية
    $pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
} catch(PDOException $e){
    die("خطأ: لا يمكن الاتصال. " . $e->getMessage());
}
 
// محاولة تنفيذ استعلام
try{
    $sql = "SELECT * FROM persons ORDER BY first_name";
    $result = $pdo->query($sql);
    إذا كان ($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>";
        //إطلاق مجموعة النتائج
        unset($result);
    } else{
        echo "لا يمكن العثور على سجلات تتطابق مع استعلامك.";
    }
} catch(PDOException $e){
    die("خطأ: لا يمكن تنفيذ $sql. " . $e->getMessage());
}
 
//إغلاق الاتصال
unset($pdo);
?>

بعد ترتيب النتائج، ستكون النتائج كالتالي:

+----+------------+-----------+----------------------+
| 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] |
+----+------------+-----------+----------------------+

إشارة:بالتجريد، جملة ORDER BY تقوم بترتيب النتائج ترتيبًا تصاعديًا. إذا كنت ترغب في ترتيب السجلات بشكل تنازلي، يمكنك استخدام كلمة المفتاح DESC.