PHP – ترتیب‌دهی داده‌ها از پایگاه داده با دستور ORDER BY در MySQL

دستور ORDER BY برای مرتب‌سازی نتایج در پایگاه داده MySQL به کار می‌رود. این دستور به‌طور پیش‌فرض رکوردها را به‌صورت صعودی (ASC) مرتب می‌کند، اما می‌توان با استفاده از کلمه کلیدی DESC، رکوردها را به‌صورت نزولی مرتب کرد.

انتخاب و ترتیب‌دهی داده‌ها با MySQLi

MySQLi به صورت شیءگرا

مثال (MySQLi Object-oriented)

در این مثال، رکوردها از جدول “MyGuests” با استفاده از دستور ORDER BY بر اساس ستون lastname به ترتیب صعودی (پیش‌فرض) نمایش داده می‌شود:

<?php
$servername = "localhost";
$username = "username";
$password = "password";
$dbname = "myDB";

// ایجاد اتصال
$conn = new mysqli($servername, $username, $password, $dbname);

// بررسی اتصال
if ($conn->connect_error) {
  die("اتصال ناموفق: " . $conn->connect_error);
}

// آماده‌سازی و اجرای کوئری با دستور ORDER BY
$sql = "SELECT id, firstname, lastname FROM MyGuests ORDER BY lastname";
$result = $conn->query($sql);

// بررسی و نمایش نتایج
if ($result->num_rows > 0) {
  while($row = $result->fetch_assoc()) {
    echo "id: " . $row["id"]. " - Name: " . $row["firstname"]. " " . $row["lastname"]. "<br>";
  }
} else {
  echo "نتیجه‌ای یافت نشد";
}

$conn->close();
?>

توضیحات:

  • ORDER BY lastname: رکوردها بر اساس ستون lastname مرتب می‌شوند.
  • fetch_assoc(): نتایج را به صورت آرایه‌های وابسته (associative arrays) برمی‌گرداند.

MySQLi به صورت رویه‌ای

مثال (MySQLi Procedural)

این مثال مشابه مثال شیءگرا است، اما به صورت رویه‌ای نوشته شده است:

<?php
$servername = "localhost";
$username = "username";
$password = "password";
$dbname = "myDB";

// ایجاد اتصال
$conn = mysqli_connect($servername, $username, $password, $dbname);

// بررسی اتصال
if (!$conn) {
  die("اتصال ناموفق: " . mysqli_connect_error());
}

// آماده‌سازی و اجرای کوئری با دستور ORDER BY
$sql = "SELECT id, firstname, lastname FROM MyGuests ORDER BY lastname";
$result = mysqli_query($conn, $sql);

// بررسی و نمایش نتایج
if (mysqli_num_rows($result) > 0) {
  while($row = mysqli_fetch_assoc($result)) {
    echo "id: " . $row["id"]. " - Name: " . $row["firstname"]. " " . $row["lastname"]. "<br>";
  }
} else {
  echo "نتیجه‌ای یافت نشد";
}

mysqli_close($conn);
?>

نمایش نتایج در جدول HTML

مثال (MySQLi Object-oriented)

برای نمایش داده‌ها در یک جدول HTML به ترتیب، از کد زیر استفاده کنید:

<?php
$servername = "localhost";
$username = "username";
$password = "password";
$dbname = "myDB";

// ایجاد اتصال
$conn = new mysqli($servername, $username, $password, $dbname);

// بررسی اتصال
if ($conn->connect_error) {
  die("اتصال ناموفق: " . $conn->connect_error);
}

// آماده‌سازی و اجرای کوئری با دستور ORDER BY
$sql = "SELECT id, firstname, lastname FROM MyGuests ORDER BY lastname";
$result = $conn->query($sql);

// بررسی و نمایش نتایج در جدول HTML
if ($result->num_rows > 0) {
  echo "<table><tr><th>ID</th><th>Name</th></tr>";
  while($row = $result->fetch_assoc()) {
    echo "<tr><td>".$row["id"]."</td><td>".$row["firstname"]." ".$row["lastname"]."</td></tr>";
  }
  echo "</table>";
} else {
  echo "نتیجه‌ای یافت نشد";
}

$conn->close();
?>

انتخاب داده‌ها با PDO و استفاده از Prepared Statements

مثال (PDO)

در این مثال، از Prepared Statements برای انتخاب داده‌ها و نمایش آن‌ها در یک جدول HTML استفاده می‌شود:

<?php
echo "<table style='border: solid 1px black;'>";
echo "<tr><th>Id</th><th>Firstname</th><th>Lastname</th></tr>";

class TableRows extends RecursiveIteratorIterator {
  function __construct($it) {
    parent::__construct($it, self::LEAVES_ONLY);
  }

  function current() {
    return "<td style='width:150px;border:1px solid black;'>" . parent::current(). "</td>";
  }

  function beginChildren() {
    echo "<tr>";
  }

  function endChildren() {
    echo "</tr>" . "n";
  }
}

$servername = "localhost";
$username = "username";
$password = "password";
$dbname = "myDBPDO";

try {
  // ایجاد اتصال
  $conn = new PDO("mysql:host=$servername;dbname=$dbname", $username, $password);
  $conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);

  // آماده‌سازی و اجرای کوئری با دستور ORDER BY
  $stmt = $conn->prepare("SELECT id, firstname, lastname FROM MyGuests ORDER BY lastname");
  $stmt->execute();

  // تنظیم نتیجه به صورت آرایه‌های وابسته
  $result = $stmt->setFetchMode(PDO::FETCH_ASSOC);
  foreach(new TableRows(new RecursiveArrayIterator($stmt->fetchAll())) as $k=>$v) {
    echo $v;
  }
} catch(PDOException $e) {
  echo "خطا: " . $e->getMessage();
}
$conn = null;
echo "</table>";
?>

توضیحات:

  • prepare(): برای آماده‌سازی کوئری SQL با استفاده از دستور ORDER BY.
  • execute(): برای اجرای کوئری.
  • fetchAll(): دریافت همه نتایج به صورت آرایه.

جمع‌بندی

در این بخش، یاد گرفتید که چگونه با استفاده از دستور ORDER BY رکوردهای پایگاه داده را بر اساس یک یا چند ستون به ترتیب دلخواه مرتب کنید. این قابلیت می‌تواند به شما کمک کند تا داده‌ها را به شکل‌های مختلفی برای نمایش و تحلیل آماده کنید. انتخاب روش مناسب برای اتصال به پایگاه داده بستگی به نیاز پروژه و ترجیحات شما دارد، اما PDO به دلیل امکانات پیشرفته و قابلیت استفاده با انواع پایگاه داده‌ها معمولاً توصیه می‌شود.

پست های مرتبط

مطالعه این پست ها رو از دست ندین!
JavaScript - رویدادها (Events)

JavaScript – رویدادها (Events)

رویدادهای HTML رویدادها در HTML، “اتفاقاتی” هستند که برای عناصر HTML رخ می‌دهند. این اتفاقات می‌توانند ناشی از کار...

بیشتر بخوانید
JavaScript - سازنده‌های شیء (Object Constructors)

JavaScript – سازنده‌های شیء (Object Constructors)

ساخت آبجکت با تابع سازنده (Object Constructor Function) برای ساخت چندین آبجکت مشابه، از تابع سازنده استفاده می‌شود. این...

بیشتر بخوانید
JavaScript - نمایش شیء (Object Display)

JavaScript – نمایش شیء (Object Display)

نحوه نمایش آبجکت‌ها در جاوااسکریپت هنگام نمایش یک آبجکت جاوااسکریپت به صورت مستقیم، خروجی معمولاً به شکل [object Object]...

بیشتر بخوانید

نظرات

سوالات و نظراتتون رو با ما به اشتراک بذارید

برای ارسال نظر لطفا ابتدا وارد حساب کاربری خود شوید.