آموزش Mysql در PHP – عبارت ORDER BY
سلام
زمانی فرا میرسد که قصد دارید داده هایی که از دیتابیس فراخوانی میکنید به صورت صعودی یا نزولی مرتب کنید، برای این کار از ORDER BY در کوئری SELECT استفاده میکنیم، در ادامه همراه بپرسم باشید.
عبارت ORDER BY برای مرتب سازی مجموعه نتایج به ترتیب صعودی یا نزولی استفاده می شود.
عبارت ORDER BY رکوردها را به صورت پیش فرض به ترتیب صعودی مرتب می کند. برای مرتبسازی رکوردها به ترتیب نزولی، از کلمه کلیدی DESC استفاده کنید.
نحوه استفاده در کوئری SEELCT:
۱ |
SELECT column_name(s) FROM table_name ORDER BY column_name(s) ASC|DESC |
انتخاب و مرتب سازی داده ها با MYSQLi
مثال زیر ستونهای id,firstname و lastname را از جدول MyGuests انتخاب میکند، در این مثال ستون ها را بر اساس lastname یا همون نام خانوادگی مرتب کردیم:
۱ ۲ ۳ ۴ ۵ ۶ ۷ ۸ ۹ ۱۰ ۱۱ ۱۲ ۱۳ ۱۴ ۱۵ ۱۶ ۱۷ ۱۸ ۱۹ ۲۰ ۲۱ ۲۲ ۲۳ ۲۴ ۲۵ ۲۶ |
<?php $servername = "localhost"; $username = "username"; $password = "password"; $dbname = "myDB"; // Create connection $conn = new mysqli($servername, $username, $password, $dbname); // Check connection if ($conn->connect_error) { die("Connection failed: " . $conn->connect_error); } $sql = "SELECT id, firstname, lastname FROM tbl_beporsam ORDER BY lastname"; $result = $conn->query($sql); if ($result->num_rows > ۰) { // output data of each row while($row = $result->fetch_assoc()) { echo "id: " . $row["id"]. " - Name: " . $row["firstname"]. " " . $row["lastname"]. "<br>"; } } else { echo "۰ results"; } $conn->close(); ?> |
توضیح کدهای بالا:
خطوط کد برای توضیح از مثال بالا:
- ابتدا پرس و جوی SQL را تنظیم می کنیم که ستون های شناسه، نام و نام خانوادگی را از جدول MyGuests انتخاب می کند. رکوردها بر اساس ستون نام خانوادگی مرتب می شوند. خط بعدی کد پرس و جو را اجرا می کند و داده های به دست آمده را در متغیری به نام $result قرار می دهد.
- سپس، تابع ()num_rows بررسی می کند که آیا بیش از صفر ردیف برگردانده شده است یا خیر.
- اگر بیش از صفر ردیف برگردانده شده باشد، تابع ()fetch_assoc تمام نتایج را در یک آرایه انجمنی قرار می دهد که می توانیم از طریق آن حلقه بزنیم. حلقه ()while در مجموعه نتیجه حلقه می زند و داده ها را از ستون های شناسه، نام و نام خانوادگی به بیرون می دهد.
مثال زیر همان مثال بالا را به روش MySQLi رویه ای نشان میدهد:
۱ ۲ ۳ ۴ ۵ ۶ ۷ ۸ ۹ ۱۰ ۱۱ ۱۲ ۱۳ ۱۴ ۱۵ ۱۶ ۱۷ ۱۸ ۱۹ ۲۰ ۲۱ ۲۲ ۲۳ ۲۴ ۲۵ ۲۶ ۲۷ |
<?php $servername = "localhost"; $username = "username"; $password = "password"; $dbname = "myDB"; // Create connection $conn = mysqli_connect($servername, $username, $password, $dbname); // Check connection if (!$conn) { die("Connection failed: " . mysqli_connect_error()); } $sql = "SELECT id, firstname, lastname FROM tbl_beporsam ORDER BY lastname"; $result = mysqli_query($conn, $sql); if (mysqli_num_rows($result) > ۰) { // output data of each row while($row = mysqli_fetch_assoc($result)) { echo "id: " . $row["id"]. " - Name: " . $row["firstname"]. " " . $row["lastname"]. "<br>"; } } else { echo "۰ results"; } mysqli_close($conn); ?> |
۱ ۲ ۳ ۴ ۵ ۶ ۷ ۸ ۹ ۱۰ ۱۱ ۱۲ ۱۳ ۱۴ ۱۵ ۱۶ ۱۷ ۱۸ ۱۹ ۲۰ ۲۱ ۲۲ ۲۳ ۲۴ ۲۵ ۲۶ ۲۷ ۲۸ |
<?php $servername = "localhost"; $username = "username"; $password = "password"; $dbname = "myDB"; // Create connection $conn = new mysqli($servername, $username, $password, $dbname); // Check connection if ($conn->connect_error) { die("Connection failed: " . $conn->connect_error); } $sql = "SELECT id, firstname, lastname FROM tbl_beporsam ORDER BY lastname"; $result = $conn->query($sql); if ($result->num_rows > ۰) { echo "<table><tr><th>ID</th><th>Name</th></tr>"; // output data of each row while($row = $result->fetch_assoc()) { echo "<tr><td>".$row["id"]."</td><td>".$row["firstname"]." ".$row["lastname"]."</td></tr>"; } echo "</table>"; } else { echo "۰ results"; } $conn->close(); ?> |
انتخاب داده با PDO
در مثال زیر از عبارات آماده شده استفاده می شود.
در اینجا از جدول MyGuests ستون های شناسه، نام و نام خانوادگی را انتخاب می کنیم. رکوردها بر اساس ستون نام خانوادگی مرتب می شوند و در جدول 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); $stmt = $conn->prepare("SELECT id, firstname, lastname FROM tbl_beporsam ORDER BY lastname"); $stmt->execute(); // set the resulting array to associative $result = $stmt->setFetchMode(PDO::FETCH_ASSOC); foreach(new TableRows(new RecursiveArrayIterator($stmt->fetchAll())) as $k=>$v) { echo $v; } } catch(PDOException $e) { echo "Error: " . $e->getMessage(); } $conn = null; echo "</table>"; ?> |
آموزش به پایان رسید، یاد گرفتیم که چگونه میتوانیم داده هایی که از دیتابیس دریافت میکنیم رو با کمک ORDER BY مرتب سازی به صورت صعودی یا نزولی بکنیم.
چنانچه مشکلی با مرتب سزی داده ها با ORDER BY داشتید در بخش پرسش و پاسخ سایت میتوانید، سوال خود را بپرسید.
موفق باشید.
ارسال نظر
شما باید وارد شوید یا عضو شوید تا بتوانید نظر ارسال کنید