About Me

Hai, saya Rosihan Ari Yuana. Saya sehari-hari adalah mengajar di Universitas Sebelas Maret.

Bidang riset saya tentang adaptive learning, computer aided learning, dan datascience

Selain itu, saya juga seorang penulis buku dan blogger.

More about me...

  • Home
  • /
  • PHP
  • /
  • Membuat Script PHP untuk Randomize Secara Periodik
PHP

Membuat Script PHP untuk Randomize Secara Periodik

Artikel ini merupakan request dari salah satu member saya, mas Zainal. Thanks mas atas requestnya 🙂 Mas Zainal ini bertanya bagaimana cara membuat script untuk merandom data dari database namun secara periodik, misalkan dalam jangka waktu 1 hari atau n hari.

Untuk pembahasan ini, kita buat contoh studi kasus saja misalkan untuk keperluan menampilkan random quote (pesan acak) seperti yang pernah saya jelaskan dalam artikel sebelumnya. Namun pada artikel tersebut, quote akan dirandom setiap saat begitu script tersebut diakses bukan pada periodik tertentu. Nah… sekarang kita coba untuk membuat script random quote yang mengacak secara periodik.

Ide untuk membuatnya adalah sederhana yaitu selain kita buat tabel berisi data yang akan dirandom, kita juga membuat semacam penyimpanan untuk menyimpan data waktu terakhir kapan proses pengacakan dilakukan. Setiap kali proses pengacakan dilakukan, maka data waktu terakhir ini akan terupdate secara otomatis. Data waktu ini akan digunakan sebagai parameter untuk pengaturan periodik proses randomnya. Data waktu ini dapat Anda simpan menggunakan database atau melalui file teks. Dalam contoh ini, kita akan gunakan database untuk menyimpan waktu random terakhirnya.

OK… kita mulai membuatnya. Pertama kita siapkan tabel-tabel yang dibutuhkan terlebih dahulu. Untuk tabel yang digunakan menyimpan quotesnya, kita gunakan tabel yang sama seperti pembahasan sebelumnya saja yah..

Selanjutnya kita perlu membuat tabel untuk menyimpan waktu terakhir proses update. Cukup gini saja tabelnya

CREATE TABLE lastRandom (
id INT,
tanggal DATE
)

Field ‘id’ digunakan untuk menyimpan nomor id dari quote yang terpilih secara random sebelumnya. Sebagai inisialisasi, sebaiknya kita isikan salah satu no. id di antara quote yang ada dan untuk field tanggalnya, kita sisipkan saja tanggal hari ini (current date).

INSERT INTO lastRandom VALUES(1, CURDATE());

Sekarang… kita mulai membuat scriptnya. Eh… tapi enaknya kita sedikit modifikasi sedikit saja ya script pada random quote yang ada di artikel sebelumnya.

Trus.. idenya bagaimana ya supaya proses mengacak quotenya dalam periodik tertentu, misalnya setiap periode n hari. Idenya cukup sederhana, yaitu kita hanya mencari selisih antara current date (tanggal saat ini) dengan tanggal terakhir proses random yang tersimpan dalam database. Jika selisih harinya lebih besar atau sama dengan n hari, maka proses acak quote dilakukan. Nomor id yang ada di tabel lastRandom kita update dengan id dari quote hasil proses random. Sedangkan untuk field tanggal, kita update dengan tanggal ketika proses randomnya.

Bagaimana cara mencari selisih hari? Kita bisa gunakan query SQL dengan memanfaatkan function DATEDIFF().

random.php

<?php
mysql_connect("host", "user", "pass");
mysql_select_db("dbname");

$interval = 1; // setting periodik randomize dalam waktu 1 hari

// membaca record dalam tabel 'lastRandom'

$query = "SELECT * FROM lastRandom";
$hasil = mysql_query($query);
$data  = mysql_fetch_array($hasil);
$tglLastRandom = $data['tanggal'];

// mencari selisih current date dengan tanggal last random
$query = "SELECT DATEDIFF(CURDATE(), '$tglLastRandom') AS selisih";
$hasil = mysql_query($query);
$data  = mysql_fetch_array($hasil);

// jika selisih hari >= interval, maka lakukan random dan update tabel 'lastRandom'

if ($data['selisih'] >= $interval)
{
   // proses random untuk memilih quote
   $query = "SELECT * FROM tabelQuotes ORDER BY RAND()";
   $hasil = mysql_query($query);
   $data  = mysql_fetch_array($hasil);
   $idQuote = $data['id'];

   // update tabel 'lastRandom'

   $query = "UPDATE lastRandom SET id = $idQuote, tanggal = CURDATE()";
   mysql_query($query);
}

// tampilkan quote hasil random berdasarkan id quote terakhir hasil random

$query = "SELECT * FROM lastRandom";
$hasil = mysql_query($query);
$data  = mysql_fetch_array($hasil);
$idQuote = $data['id'];

$query = "SELECT * FROM tabelQuotes WHERE id = $idQuote";
$hasil = mysql_query($query);
$data = mysql_fetch_array($hasil);

echo "Pesan saat ini : ".$data['quote'];

?>

That’s all… mudah bukan membuatnya. Bagaimana bila data last random nya disimpan dalam file teks? dan bukannya menggunakan databae? Silakan Anda bereksperimen sendiri ya… Anda dapat menerapkan penjelasan di atas pada proses random image.

 

Saya seorang dosen dan peneliti di Universitas Sebelas Maret. Bidang penelitian saya tentang: adaptive learning, datascience, dan computer aided learning. Selain itu saya juga seorang blogger, serta penulis buku tentang pemrograman, dan matematika.

Leave a Reply