Select, Where, dan Order by

Statement select digunakan untuk menampilkan isi tabel yang terdapat di dalam database. Statement Select bisa digunakan dalam argumen mysqli_query. Sintaksnya adalah sebagai berikut.

  • Select * From nama_tabel
  • Select (kolom1, kolom2, ....) From nama_tabel

Untuk menggunakan Select, buat database dan tabelnya terlebih dahulu. Jika kalian menggunakan phpMyAdmin, kalian bisa melihat pembuatan database dan tabel di tulisan saya sebelumnya.

Untuk menjalankan script berikut ini, kalian perlu membuat database dengan nama "dbku". Kemudian, kalian juga perlu membuat tabel dengan nama "tabelku". Isi tabelnya misal sebagai berikut ini.

NamaHarga
Pensil 2000
Pulpen 3000
Buku 5000

Setelah database dan tabel dibuat, ketik script seperti di bawah ini.

<?php 
    echo("<h2>Daftar Harga Barang</h2>");
    $koneksi=mysqli_connect("localhost", "root", "");
    mysqli_select_db($koneksi, "dbku");
    $hasil=mysqli_query($koneksi, "select * from tabelku");
    while($a=mysqli_fetch_array($hasil)){
        echo($a['Nama']." : ");
        echo($a['Harga']."<br/>");
    }
    mysqli_close($koneksi);
?>

Ada satu function khusus untuk menampilkan hasil dari select. Function tersebut adalah mysqli_fetch_array. Karena hasilnya adalah array asosiatif yang menyimpan satu data setiap pemanggilan function, kalian bisa menggunakan nama kolom sebagai indeks array. Misalnya, $a['Nama'] akan menampilkan data dalam kolom Nama. Kalian perlu foreach jika hasil pencarian ada lebih dari satu.

Tanda asterisk setelah select menunjukkan bahwa semua tabel akan ditampilkan. Jika tidak semua kolom ingin ditampilkan, kita bisa mengganti tanda asterisk * dengan nama kolomnya. Jika ada lebih dari satu kolom, pisahkan dengan tanda koma. Contohnya :

<?php 
    echo("<h2>Daftar Harga Barang</h2>");
    $koneksi=mysqli_connect("localhost", "root", "");
    mysqli_select_db($koneksi, "dbku");
    $hasil=mysqli_query($koneksi, "select Nama, Harga from tabelku");
    while($a=mysqli_fetch_array($hasil)){
        echo($a['Nama']." : ");
        echo($a['Harga']."<br/>");
    }
    mysqli_close($koneksi);
?>

Hasil dari dua contoh kode php di atas sama. Perbedaannya hanya pada penyebutan kolom yang masuk hasil pencaarian. Saat menggunakan asterisk (*) semua kolom akan masuk hasil pencarian. Jika kolom yang dicari dibatasi, kolom yang tidak disebutkan tidak bisa ditampilkan.

Where

Where digunakan untuk menambahkan kondisi dalam statement select. Sintaks select dengan where adalah sebagai berikut.

  • {Statement Select} where kondisi

Contoh kodenya bisa kalian lihat di bawah ini.

<?php 
    echo("<h2>Daftar Harga Barang</h2>");
    $koneksi=mysqli_connect("localhost", "root", "");
    mysqli_select_db($koneksi, "dbku");
    $hasil=mysqli_query($koneksi, "select * from tabelku where Harga > '2000'");
    while($a=mysqli_fetch_array($hasil)){
        echo($a['Nama']." : ");
        echo($a['Harga']."<br/>");
    }
    mysqli_close($koneksi);
?>

Where membutuhkan operator. Pada contoh di atas operatornya adalah > (lebih dari) sehingga hasilnya hanya nilai yang lebih dari bilangan setelah operator tersebut.  Singkatnya, operator-operator yang bisa digunakan setelah where bisa dilihat di bawah ini.

  • =
  • !=
  • <
  • >
  • <=
  • >=

Mengurutkan Hasil

Untuk mengurutkan hasil dari pencarian di dalam tabel, kita bisa menggunakan Order By yang diletakkan setelah statement select. Order By bisa menggunakan klausa ASC untuk pengurutan dari nilai terrendah ke nilai tertinggi dan DESC untuk nilai tinggi ke rendah. Nilai bawaannya dari pengurutan di mysql menggunakan ASC. Sintaks penulisan querynya adalah seperti di bawah ini.

  • {Statement Select} where order by nama_kolom ASC
  • {Statement Select} where order by nama_kolom DESC
<?php 
    echo("<h2>Daftar Harga Barang</h2>");
    $koneksi=mysqli_connect("localhost", "root", "");
    mysqli_select_db($koneksi, "dbku");
    $hasil=mysqli_query($koneksi, "select * from tabelku Order By Nama ASC");
    while($a=mysqli_fetch_array($hasil)){
        echo($a['Nama']." : ");
        echo($a['Harga']."<br/>");
    }
    mysqli_close($koneksi);
?>

Contoh di atas menggunakan klausa ASC di dalam statement select dengan kolom nama sebagai acuan dari pengurutan data. Pengurutan data akan sesuai urutan alfabet jika kolomnya bertipe varchar. Jika tipenya adalah integer, maka pengurutannya sesuai dengan nilai bilangannya.

Coba ganti klausa ASC pada query menjadi DESC. Urutan dari hasil pencarian seharusnya akan jadi kebalikannya. Kolom yang menjadi acuan juga bisa diganti, misalnya menjadi kolom Harga.

<?php 
    echo("<h2>Daftar Harga Barang</h2>");
    $koneksi=mysqli_connect("localhost", "root", "");
    mysqli_select_db($koneksi, "dbku");
    $hasil=mysqli_query($koneksi, "select * from tabelku Order By Harga DESC");
    while($a=mysqli_fetch_array($hasil)){
        echo($a['Nama']." : ");
        echo($a['Harga']."<br/>");
    }
    mysqli_close($koneksi);
?>