Jepara, Lagi mau Nulis lagi atau mendokumentasikan permasalahan dan cara mengatasinya. Masalah ini sebenarnya adalah masalah ketika saya membuat aplikasi pembayaran SPP yang terintegrasi dengan SMS Gateway (Gammu). saya memiliki tabel pembayaran seperti ini :
Dengan melihat kondisi tabel seperti diatas maka siswa dengan NIS 89099 telah membayar SPP selama 4 bulan ( bulan Juli, Agustus, September dan Oktober).
Kasusnya/Masalahnya adalah bagaimana pengecekan melalui SMS dengan keyword "SPP#NIS" bisa menampilkan bulan apa saja yang sudah dibayar oleh siswa.
caranya adalah menggunakan array(), dengan membuat array() kita konvert sql ke array baca php manual, kode lengkapnya seperti ini:
Penjelasan pada kode
dengan memanfaatkan fungsi implode ini maka proses reply sms tidak akan ada looping karena proses pengecekan NIS=bulan, karena fungsi implode membundling bulan dalam satu variable..
mohon maaf bila ada salah kata dan penjelasan yang kurang jelas :D.
referensi PHP.NET
CREATE TABLE IF NOT EXISTS `t_bayar_siswa` ( `id_bayar` int(11) NOT NULL AUTO_INCREMENT, `id_tahun_ajar` int(11) DEFAULT NULL, `nis` varchar(12) DEFAULT NULL, `kd_rombel` varchar(15) DEFAULT NULL, `id_keringanan` int(11) DEFAULT NULL, `nominal` varchar(20) DEFAULT NULL, `tglbayar` date DEFAULT NULL, `blnbayar` varchar(4) DEFAULT NULL COMMENT 'bln 1,2,3,4,dst', `username` varchar(20) DEFAULT NULL, `tanggal_akses` timestamp NULL DEFAULT CURRENT_TIMESTAMP, PRIMARY KEY (`id_bayar`), UNIQUE KEY `id_bayar` (`id_bayar`) ) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=5 ; -- -- Dumping data for table `t_bayar_siswa` -- INSERT INTO `t_bayar_siswa` (`id_bayar`, `id_tahun_ajar`, `nis`, `kd_rombel`, `id_keringanan`, `nominal`, `tglbayar`, `blnbayar`, `username`, `tanggal_akses`) VALUES (1, 1, '89099', 'X TKJ 1', 2, '180000', '2013-04-25', '1', 'admin', '2013-04-25 12:00:59'), (2, 1, '89099', 'X TKJ 1', 2, '180000', '2013-04-25', '2', 'admin', '2013-04-25 12:00:59'), (3, 1, '89099', 'X TKJ 1', 2, '180000', '2013-04-25', '3', 'admin', '2013-04-25 12:00:59'), (4, 1, '89099', 'X TKJ 1', 2, '180000', '2013-04-25', '4', 'admin', '2013-04-25 12:00:59');
Dengan melihat kondisi tabel seperti diatas maka siswa dengan NIS 89099 telah membayar SPP selama 4 bulan ( bulan Juli, Agustus, September dan Oktober).
Kasusnya/Masalahnya adalah bagaimana pengecekan melalui SMS dengan keyword "SPP#NIS" bisa menampilkan bulan apa saja yang sudah dibayar oleh siswa.
caranya adalah menggunakan array(), dengan membuat array() kita konvert sql ke array baca php manual, kode lengkapnya seperti ini:
<?php
/*
;author : Muhammad Taufiq Muslih
;web : http://tovexs.blogspot.com
*/
mysql_connect('localhost','root','');
mysql_selectdb('db_spp');
$q=mysql_query("select * from inbox where Processed='false'");
while ($a=mysql_fetch_array($q)) {
$id=$a[ID];
$number=$a[SenderNumber];
$text=strtoupper($a[TextDecoded]);
//explode pecah
$explode=explode("#",$text);
if ($explode[0]=="$spp" and $nis=$explode[1]) {
$res=mysql_query("select t_siswa.*, t_bayar_siswa.*,
case blnbayar
when '1' then 'Juli'
when '2' then 'Agustus'
when '3' then 'September'
when '4' then 'Oktober'
when '5' then 'November'
when '6' then 'Desember'
when '7' then 'Januari'
when '8' then 'Februari'
when '9' then 'Maret'
when '10' then 'April'
when '11' then 'Mei'
when '12' then 'Juni'
end as bulan
from t_bayar_siswa
left join t_siswa on t_siswa.nis=t_bayar_siswa.nis
where t_bayar_siswa.nis='$nis'");
$data=array();
if (mysql_num_rows($res)== 0); //$balas ="Data Tidak ditemukan";
else if (mysql_num_rows($res) > 0) {
while($row=mysql_fetch_assoc($res)) {
$nama=$row[nm_siswa];
$niss=$row[nis];
$data[]=$row[bulan];
}
$arraybln=implode(",", $data);
$balas="".$niss."\n Bulan Terbayar:\n ".$arraybln."\n SMKN3Jepara ";
mysql_query("insert into outbox(DestinationNumber, TextDecoded) VALUES ('$number', '$balas')");
}
}
$qU=mysql_query("UPDATE inbox SET Processed = 'true' WHERE ID = '$id'");
}
?>
Penjelasan pada kode
$data[]=$row[bulan];akan menghasilkan array dan pada fungsi implode baca PHP manual
$arraybln=implode(",", $data);
akan menghasilkan
Juli Agustus September Oktoberfungsi implode dalam sms gateway ini adalah untuk menampung array agar proses looping hanya didalam variable $arraybln.
dengan memanfaatkan fungsi implode ini maka proses reply sms tidak akan ada looping karena proses pengecekan NIS=bulan, karena fungsi implode membundling bulan dalam satu variable..
mohon maaf bila ada salah kata dan penjelasan yang kurang jelas :D.
referensi PHP.NET
Comments
Post a Comment