Loop PHP: Cara Menampilkan Data dari Database dengan Rapi

Query database sudah ditulis, tapi bagaimana menampilkannya ke halaman web? Loop PHP dipakai untuk itu. Dengan loop yang tepat, data dari tabel tampil berurutan tanpa kode berulang.

Menampilkan data dari database dengan loop PHP tidak sulit asal tahu polanya. Ada beberapa hal yang perlu diperhatikan: cara mengambil data, menyusun HTML di dalam loop, dan menghindari kesalahan seperti data tidak muncul atau tampilan berantakan.

Mengambil data dulu, baru di-loop

Langkah pertama adalah menjalankan query dan mengambil hasilnya. Gunakan PDO atau MySQLi sesuai kebutuhan proyek. Jika belum yakin, ada panduan memilih koneksi database yang bisa membantu. Setelah query dieksekusi, hasilnya bisa diambil dalam bentuk array asosiatif.

$stmt = $pdo->query('SELECT id, nama, email FROM users');
$users = $stmt->fetchAll(PDO::FETCH_ASSOC);

Dengan fetchAll, semua baris langsung masuk ke variabel $users. Alternatifnya, ambil satu per satu dengan fetch di dalam loop. Untuk data yang jumlahnya besar, mengambil satu per satu lebih hemat memori. Untuk kebanyakan kasus, fetchAll lebih praktis.

Loop foreach untuk array hasil query

Setelah data ada di array, gunakan foreach untuk menelusurinya. Loop ini paling sering dipakai karena sintaksnya bersih dan mudah dibaca.

<ul>
<?php foreach ($users as $user): ?>
  <li><?= htmlspecialchars($user['nama']) ?> - <?= htmlspecialchars($user['email']) ?></li>
<?php endforeach; ?>
</ul>

Perhatikan penggunaan htmlspecialchars. Fungsi ini mencegah karakter khusus seperti < atau & merusak HTML. Tanpa itu, data yang mengandung tanda kutip atau tag bisa membuat tampilan kacau.

Membuat tabel dengan loop while

Untuk menampilkan data dalam bentuk tabel, loop while dengan fetch sering jadi pilihan. Pola ini klasik dan tetap relevan.

<table>
<thead><tr><th>ID</th><th>Nama</th><th>Email</th></tr></thead>
<tbody>
<?php while ($row = $stmt->fetch(PDO::FETCH_ASSOC)): ?>
  <tr>
    <td><?= $row['id'] ?></td>
    <td><?= htmlspecialchars($row['nama']) ?></td>
    <td><?= htmlspecialchars($row['email']) ?></td>
  </tr>
<?php endwhile; ?>
</tbody>
</table>

Pastikan $stmt sudah dieksekusi sebelum loop. Jika tidak, fetch mengembalikan false dan tabel kosong.

Menangani data kosong

Jika query tidak menghasilkan baris, loop tidak akan berjalan. Tabel atau daftar tampil kosong tanpa penjelasan. Tambahkan pengecekan sebelum loop.

<?php if (empty($users)): ?>
  <p>Tidak ada data pengguna.</p>
<?php else: ?>
  <ul>
  <?php foreach ($users as $user): ?>
    <li><?= htmlspecialchars($user['nama']) ?></li>
  <?php endforeach; ?>
  </ul>
<?php endif; ?>

Pengecekan ini membuat pengguna tahu bahwa data memang kosong, bukan halaman yang error.

Memisahkan logika dan tampilan

Mencampur kode PHP dan HTML dalam satu file memang cepat, tapi lama-lama sulit dirawat. Untuk proyek yang lebih serius, pisahkan pengambilan data dan tampilan. Simpan query di bagian atas file, lalu loop di bagian HTML. Atau gunakan template engine sederhana. Pola ini memudahkan perubahan tampilan tanpa menyentuh logika database.

Jika ingin tampilan data lebih interaktif, misalnya dengan pencarian atau filter, loop tetap menjadi dasar. Anda bisa mempelajari cara membuat kolom pencarian PHP dan filter data untuk menggabungkan filter dengan loop yang sudah ada.

Kesalahan umum saat loop data

  • Tidak memakai htmlspecialchars pada data yang ditampilkan. Ini membuka celah XSS.
  • Lupa mengeksekusi query sebelum loop. Pastikan $stmt->execute() dipanggil.
  • Menjalankan query di dalam loop. Kueri berulang memperlambat halaman. Ambil semua data dulu, baru loop.
  • Menggunakan mysql_* yang sudah dihapus di PHP versi baru. Gunakan PDO atau MySQLi.
  • Tidak membatasi jumlah data yang diambil. Untuk data besar, gunakan pagination agar halaman tidak berat.

Untuk menghindari query berulang, pahami dulu cara kerja prepared statement jika Anda perlu mengambil data terkait dari tabel lain. Query yang tepat menghemat waktu eksekusi.

Tips merapikan tampilan loop

Gunakan indentasi yang konsisten di dalam loop agar kode mudah dibaca. Jika menghasilkan banyak baris HTML, pertimbangkan untuk memisahkan bagian loop ke file partial. Manfaatkan alternatif sintaks foreach: dan endforeach; yang lebih rapi ketika bercampur dengan HTML.

Untuk tabel yang panjang, tambahkan pagination. Ada tutorial pagination PHP tanpa library yang bisa Anda terapkan langsung. Dengan pagination, loop hanya menampilkan sebagian data per halaman, sehingga halaman tetap ringan.

Jika data yang ditampilkan banyak dan kompleks, pertimbangkan untuk memisahkan logika pengambilan data ke dalam fungsi atau kelas. Loop di tampilan hanya fokus pada presentasi.

Ringkasan

Menampilkan data dari database dengan loop PHP melibatkan tiga langkah: ambil data, siapkan struktur HTML, lalu loop dengan foreach atau while. Selalu gunakan htmlspecialchars untuk keamanan, tangani data kosong, dan hindari query di dalam loop. Dengan pola ini, tampilan data rapi dan kode mudah dirawat.

Pertanyaan yang Sering Diajukan

Bagaimana cara menampilkan data dari database jika hasilnya kosong?

Gunakan pengecekan empty() atau rowCount() sebelum loop. Jika kosong, tampilkan pesan seperti “Tidak ada data” agar pengguna tidak bingung.

Apakah boleh menggunakan loop while untuk data yang besar?

Boleh, terutama jika Anda mengambil data satu per satu dengan fetch. Namun, untuk data yang sangat besar, pertimbangkan pagination agar tidak membebani server dan browser.

Apa yang harus dilakukan jika data mengandung karakter khusus?

Selalu bungkus output dengan htmlspecialchars saat menampilkan data ke HTML. Ini mencegah karakter seperti < atau & merusak struktur halaman dan menghindari serangan XSS.