Skip navigation

Monthly Archives: April 2012


Sesuai dengan permintaan di postingan sebelumnya, sekarang saya akan mencoba menambahkan link di dropdown yang dihasilkan oleh autocomplete. Seperti autocomplete yang ada di Facebook, autocomplete yang akan saya modifikasi akan memindahkan halaman ke halaman profil userketika dropdownnya diklik.

Read More »


Barusan saya menghadapi masalah bagaimana secara mudah memvisualisasikan pemeriksaan sebuah himpunan koordinat tempat di bumi baik terhadap radius antara tiap koordinat atau terhadap radius dari sebuah koordinat tertentu. Kedua masalah ini ternyata tidak terlalu susah jika menggunakan Google Map. Untuk itu saya mencoba membuat skrip sederhananya.

Berikut adalah pengecekan radius antar koordinat pada sebuah himpunan koordinat.

Google Map Point and Radius Checker

Skripnya dapat dilihat di sini.

Dan berikut adalah pengecekan himpunan koordinat terhadap radius dari sebuah koordinat tertentu.

Google Map Points Checker inside Radius

Skripnya dapat dilihat di sini.

Semoga berguna.


Melanjutkan postingan sebelumnya, sekarang tampilan dropdown dari CJuiAutoComplete yang hanya teks sederhana akan saya ubah menjadi lebih bagus. Dropdown ini akan kita buat agar bisa menampilkan data selain nama panjang, tetapi juga mungkin foto profil atau asal kota. Nantinya akan mirip dengan search autocomplete yang ada di Facebook seperti di bawah.

Autocomplete di Facebook search.

Read More »


Setelah di postingan sebelumnya menjelaskan tentang cara penggunaan CJuiAutoComplete secara sederhana, postingan ini akan mencoba menyambungkan autocomplete tersebut dengan database.

Read More »


Untuk memenuhi permintaan dari Jupri yang atas permintaan di bagian Request yang meminta tutorial bagaimana cara membuatautocomplete”seperti facebook”.

Autocomplete textfield adalah sebuah textfield yang ketika diberikan input sebuah string maka textfield itu akan menampilkan beberapa hasil rekomendasi. Contoh yang sering terlihat adalah autocomplete di Facebook search ataupunsearch suggestiondi Google Search.

Contoh penggunaan autocomplete untuk Facebook search.

Di Yii sendiri sudah ada komponen bawaan yang mendukung pembuatan fitur autocomplete seperti ini. Komponen ini adalah CJuiAutoComplete (sebelumnya sudah ada CAutoComplete yang kemudian dihentikan pengembangannya). Komponen CJuiAutoComplete tidak lain merupakan pembungkus dari widget jQuery UI – Autocomplete. Kematangan widget ini membuat pengembang Yii menghentikan komponen CAutoComplete dan beralih menggunakan jQuery UI.

Read More »


Biar saya tidak lupa. Sekarang saya menggunakan fitur geospatial dari MySQL yang menyediakan fitur geospatial indexing. Dengan fitur ini, saya bisa menyimpan data-data berupa lokasi pada bumi (dengan menggunakan latitude dan longitude) dan bisa melakukan kueri berdasarkan posisi sebuah lokasi.

Tapi meskipun ada banyak fitur-fitur kueri berdasarkan lokasi yang disediakan oleh MySQL, sayangnya tidak ada fungsi bawaan untuk mencari lokasi-lokasi dalam jarak tertentu. Dari referensi (lihat di bagian paling bawah tulis) saya mendapatkan kode di bawah ini. Kode ini merupakan implementasi fungsi haversine.

DELIMITER $$
 CREATE FUNCTION distance (a POINT, b POINT) RETURNS double DETERMINISTIC
   BEGIN
     RETURN 6371 * 2 * ASIN(SQRT(POWER(SIN(RADIANS(ABS(X(a)) - ABS(X(b)))), 2) + COS(RADIANS(ABS(X(a)))) * COS(RADIANS(ABS(X(b)))) * POWER(SIN(RADIANS(Y(a) - Y(b))), 2)));
   END  $$
DELIMITER ;

*update* Saat menulis ini merasa agak aneh dengan fungsi di atas, karena fungsi di atas sama sekali tidak memerlukan geospatial indexing. Ternyata ada alternatif yang menggunakan geospatial indexing yakni seperti di bawah.

DELIMITER $$
 CREATE FUNCTION distance (a POINT, b POINT) RETURNS double DETERMINISTIC
  BEGIN
  RETURN GLength(
   LineStringFromWKB(
     LineString(
       a, b
     )
   )
 ) * 100;
  END  $$
DELIMITER ;

Dan data-data lokasi dalam jarak tertentu (dalam satuan kilometer) dari sebuah titik dapat didapatkan dengan kueri seperti di bawah. Voila!

SELECT id, name, latitude, longitude, distance(coordinate, POINT(-6.890469, 107.610244)) AS cdist
FROM Locations
HAVING cdist < 10
ORDER BY cdist LIMIT 10;

Referensi utama dari blog ini dapat dilihat di


Salah satu trik penggunaan method scopes di CActiveRecord yang saya suka adalah untuk membatasi SELECT pada SQL Query. Di dalam dokumentasinya sendiri, Yii memberikan contoh penggunaan scopes untuk membatasi kondisi serta urutan dari serangkaian model, tapi ada beberapa trik yang sering saya gunakan pada scopes ini. Seperti yang kita ketahui, salah satu rule of thumbs penggunaan SQL adalah “Only Select What You Need”.
Read More »

%d blogger menyukai ini: