Tidak bisa dihindari bahwa Anda sebagai Web Developer harus membandingkan nilai di sebuah baris dengan baris sebelumnya atau yang berada di atasnya. Data ini biasanya perlu dibandingkan karena adanya business-logic yang mengharuskan memproses data baris per baris yang ditampilkan melalui sebuah tabel.
Jika kita berbicara mengenai data di baris yang satu dengan baris lainnya, maka kita membahas mengenai data yang ditampilkan pada halaman List. Beruntunglah Anda sebagai Web Developer jika menggunakan PHPMaker, karena dia sudah menyediakan server event yang memungkinkan kita mengeksekusi kode untuk memproses baris per baris. Nama server event itu adalah ListOptions_Rendered.
Katakanlah dalam contoh berikut, kita akan membandingkan nilai tahun pada field yang bernama Tahun. Nilai pada field ini sudah diurutkan mulai dari nilai terkecil sampai terbesar. Selanjutnya kita akan memeriksa dan membandingkan nilai di baris sekarang dengan nilai di baris sebelumnya. Hasil perbandingan itu selanjutnya akan kita tampilkan, sehingga kita bisa mengetahui pada baris keberapa terjadi perbedaan nilai.
Langkah pertama, kita harus mendeklarasikan dua buah variabel yang masing-masing bernama $tahun_sebelumnya dan $tahun_sekarang.
Langkah kedua, kita mengambil terlebih dulu nilai tahun saat ini, lalu menampungnya ke variabel $tahun_sebelumnya. Setelah itu, kita tampilkan hasilnya dengan menggunakan echo.
Langkah ketiga, di bawahnya kita memeriksa kembali, apakah nilai tahun pada baris berikutnya tidak sama dengan nilai Tahun pada baris sebelumnya. Jika ya, maka update nilai Tahun pada baris sekarang dengan nilai pada baris berikutnya.
// ListOptions Rendered event function ListOptions_Rendered() { // Langkah Pertama: global $tahun_sebelumnya; global $tahun_sekarang; $tahun_sebelumnya = $this->Tahun->CurrentValue; // Langkah Kedua: if ($this->RowCnt > 0) { echo $this->RowCnt . ". Tahun Sekarang - Sebelumnya = " . $tahun_sebelumnya; echo " - "; echo $tahun_sekarang; echo "<br>"; } // Langkah Ketiga: if ($this->Tahun->CurrentValue <> $tahun_sebelumnya) { $tahun_sekarang = $this->Tahun->CurrentValue; } else { $tahun_sekarang = $tahun_sebelumnya; } }
Jadi, secara garis besar, kode di atas bisa kita bagi menjadi 3 bagian sesuai dengan 3 langkah di atas tadi (lihat pada komentar di kode), yaitu:
1. Siapkan variabel dan tampung nilai sekarang
2. Tampilkan hasilnya (untuk memisahkan proses nomor 1 di atas dan nomor 3 di bawah ini)
3. Bandingkan baris sekarang dengan baris sebelumnya
Demikian seterusnya, ketiga bagian kode ini akan diproses dalam server event ListOptions_Rendered.
Jika misalnya ada 10 record di dalam Tabel pada halaman List yang sedang aktif, dengan urutan nilai sebagai berikut: 1, 1, 1, 1, 1, 2, 2, 3, 3, 3 maka output dari kode di atas menjadi seperti ini:
1. Tahun Sekarang - Sebelumnya = 1 - 2. Tahun Sekarang - Sebelumnya = 1 - 1 3. Tahun Sekarang - Sebelumnya = 1 - 1 4. Tahun Sekarang - Sebelumnya = 1 - 1 5. Tahun Sekarang - Sebelumnya = 1 - 1 6. Tahun Sekarang - Sebelumnya = 2 - 1 7. Tahun Sekarang - Sebelumnya = 2 - 2 8. Tahun Sekarang - Sebelumnya = 3 - 2 9. Tahun Sekarang - Sebelumnya = 3 - 3 10. Tahun Sekarang - Sebelumnya = 3 - 3
Perhatikan pada baris nomor urut 6 dan 8, di situlah terjadi perubahan nilai Tahun, masing-masing dari 1 ke 2, dan dari 2 ke 3.
Mudah sekali, bukan? 🙂
angga mengatakan
mirip dengan kasus saya ini pak 🙂 kalo output seperti ini
———————————————————————
| hari | tanggal | nilai | hasil |
——————————————————————–
| | 01/05/2016 | A | |
——————————————————————-
| 1 | 02/05/2016 | B | B-A |
——————————————————————-
| 2 | 03/05/2016 | C | C-B |
——————————————————————-
jadi hasil hari pertama (1) itu pak pengurangan dari value B-A & juga hari kedua (2) C-B
yg saya tanyakan bagaimana pak ouput table list dibawah hari itu empty & disamping nilai A juga pak
dan lagi2 terima kasih pak banyak bantu blog ini pak 😀
Masino Sinaga mengatakan
Untuk melakukan perhitungan, gunakan seperti logik di atas.
Sedangkan untuk menampilkan output-nya di halaman List, Anda harus menambahkan kolom baru, baca artikel ini: Menambahkan Kolom Baru di Halaman List pada Aplikasi Web dari PHPMaker.
angga mengatakan
hasilnya belum sama yah pak seperti ini
[img src=”http://image.prntscr.com/image/0a8873863d3f46eabc0763f68add6d32.jpg” width=400]
angga mengatakan
haduh ga bisa insert gambar 😀
Masino Sinaga mengatakan
Apanya yang belum sama?
angga mengatakan
dari link yg bapak kasih sudah saya coba.jadi dibawah header barisnya ke isi semua sedangkan saya dibawah hari dan hasil itu loncat 1 baris dulu pak baru isi fieldnya gitu pak 🙂
Masino Sinaga mengatakan
Untuk mengisi baris-baris di bawahnya, gunakan logik kode yang ada di artikel ini.