Home » PHP » Cara Menggunakan Klausa Order BY di PHP MySQL

Cara Menggunakan Klausa Order BY di PHP MySQL

by Hanifah Nurbaeti
by Hanifah Nurbaeti

Section Artikel

Select dan Order by dari Database MySQL

Klausa ORDER BY digunakan untuk mengurutkan kumpulan hasil dalam urutan naik atau turun.

Klausa ORDER BY mengurutkan rekaman dalam urutan menaik secara default. Untuk mengurutkan rekaman dalam urutan menurun, gunakan kata kunci DESC.

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

Select dan Order Data Dengan MySQLi

Contoh berikut memilih kolom id, firstname dan lastname dari tabel MyGuests. Catatan akan diurutkan berdasarkan kolom nama belakang:

Contoh (MySQLi Object-oriented) :

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

// Buat Koneksi
$conn = new mysqli($servername, $username, $password, $dbname);
// Periksa Koneksi
if ($conn->connect_error) {
  die("Connection failed: " . $conn->connect_error);
}

$sql = "SELECT id, firstname, lastname FROM MyGuests ORDER BY lastname";
$result = $conn->query($sql);

if ($result->num_rows > 0) {
  // data keluaran dari setiap baris
  while($row = $result->fetch_assoc()) {
    echo "id: " . $row["id"]. " - Name: " . $row["firstname"]. " " . $row["lastname"]. "<br>";
  }
} else {
  echo "0 results";
}
$conn->close();
?>
  /*Output
  id: 1 - Name: John Doe
  id: 3 - Name: Julie Dooley
  id: 2 - Name: Mary Moe
  */

Penjelasan Kode :

Pertama, kita siapkan kueri SQL yang memilih kolom id, firstname dan lastname dari tabel MyGuests. Catatan akan diurutkan berdasarkan kolom lastname. Baris kode berikutnya menjalankan kueri dan memasukkan data yang dihasilkan ke dalam variabel yang disebut $result.

Kemudian, function num_rows() akan memeriksa apakah ada lebih dari nol baris yang dikembalikan.

Jika ada lebih dari nol baris yang dikembalikan, fungsi fetch_assoc() menempatkan semua hasil ke dalam array asosiatif yang bisa kita putar. Perulangan while() melewati set hasil dan mengeluarkan data dari kolom id, firstname dan lastname.

Contoh berikut menunjukkan hal yang sama seperti contoh di atas, dengan cara prosedural MySQLi:

Contoh (MySQLi Prosedural) :

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

// Buat Koneksi
$conn = mysqli_connect($servername, $username, $password, $dbname);
// Periksa Koneksi
if (!$conn) {
  die("Connection failed: " . mysqli_connect_error());
}

$sql = "SELECT id, firstname, lastname FROM MyGuests ORDER BY lastname";
$result = mysqli_query($conn, $sql);

if (mysqli_num_rows($result) > 0) {
  // data keluaran dari setiap baris
  while($row = mysqli_fetch_assoc($result)) {
    echo "id: " . $row["id"]. " - Name: " . $row["firstname"]. " " . $row["lastname"]. "<br>";
  }
} else {
  echo "0 results";
}

mysqli_close($conn);
?>
   /*Output
  id: 1 - Name: John Doe
  id: 3 - Name: Julie Dooley
  id: 2 - Name: Mary Moe
  */

Kita juga bisa meletakkan hasilnya di tabel HTML:

Contoh (MySQLi Object-oriented) :

<!DOCTYPE html>
<html>
<head>
<style>
table, th, td {
  border: 1px solid black;
}
</style>
</head>
<body>

<?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 MyGuests ORDER BY lastname";
$result = $conn->query($sql);

if ($result->num_rows > 0) {
  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 "0 results";
}

$conn->close();
?>

</body>
</html>

Output :

Select Data Dengan PDO (+ Pernyataan Prepare)

Contoh berikut menggunakan pernyataan prepare.

Di sini kita memiliki kolom id, firstname dan lastname dari tabel MyGuests. Record akan diurutkan berdasarkan kolom lastname dan akan ditampilkan dalam tabel HTML:

Contoh (PDO) :

<!DOCTYPE html>
<html>
<body>

<?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 MyGuests 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>";
?>

</body>
</html>

Output :

You may also like