Skip to main content

Posts

Showing posts with the label PHP

[Debug] Dua Masalah PHP

Siang tadi mendapat tugas untuk memeriksa dua aplikasi bermasalah, keduanya bukan aku yang mengerjakan, dan keduanya terkait dengan PHP. Karena gak bisa aku kerjakan siang, jadi terpaksa aku cek malam hari, itupun dengan setengah niat. Kalau susah ya aku tinggalkan, kalau mudah ya aku bereskan. Kedua masalah memiliki dampak yang sama, membuat aplikasi tidak bisa berjalan semestinya, dan tanpa keterangan kesalahan yang jelas. Pokoknya pelapor hanya menyebutkan bahwa website gak jalan. Masalah pertama, terkait dengan proyek donasi, yang melakukan integrasi dengan paypal. Sebelumnya kami sudah melakukan testing di server sementara (punya kantor), dan pihak web designer mencoba menggabungkan program kami dengan desain mereka, dan menginstall di server mereka. Meskipun sudah diinstall sesuai petunjuk, tetap saja program error. Untuk kali ini pas aku coba, pesan errornya cukup jelas : "tidak bisa mengakses file /var/www/xxx/dst...". Ok, mudah, pikirku. Pas aku cek filenya, ada ko...

Menampilkan Angka dengan Format Ribuan dan Pecahan

Masalah sepele : ingin menampilkan angka seperti 12345.57 jadi 123,45.57 (untuk saat ini dibatasi hanya 2 desimal). Karena masalahnya sepele, algoritmanya juga harusnya sepele. Tapi sering lupa, jadi mending aku tulis di sini sekedar jadi pengingat. PHP Kalau di php simple, cukup pakai sintaks number_format(Angka, Jumlah Decimal) Lengkapnya bisa dilihat di sini  http://php.net/number_format JAVASCRIPT Sepertinya di javascript belum ada fungsi bawaan yang standard, jadi terpaksa bikin sendiri. Agak gak efektif memang, tapi biarlah. function currFormat(decAmount)   {     strSymbol = (decAmount < 0) ? '-' : '';     decAmount = Math.abs(decAmount);     decAmount = Math.round(decAmount * 100);     dec1 = Math.floor(decAmount / 100);     dec2 = decAmount - (dec1 * 100);          str1 = dec1.toString();     str2 = dec2.toString();        ...

Pengalaman Ngoprek Zurmo

Zurmo adalah aplikasi pengelolaan relasi pelanggan (customer relationship management - CRM) berbasis web dan bersifat open source. Dikembangkan selama dua tahun lebih, dan baru saja rilis versi 1.0. Entah mengapa masih ada yang bikin aplikasi CRM baru di tengah banyaknya aplikasi sejenis yang sudah ada, baik yang gratisan maupun berbayar. Belum lagi layanan berbasis cloud. Pasar CRM sepertinya masih menjanjikan. Ada beberapa hal yang membuatku tertarik mencoba Zurmo. * Open source dan gratis * Berbasis web, Dikembangkan dengan PHP. * Database bisa Mysql, PostgreSql atau Oracle * Memakai Yii sebagai framework, yang kebetulan lebih kukenal dibanding framework lain * Modular, tiap fitur ataupun menu dijadikan modul, dalam satu folder. Jadi nambahin atau ngilangin modul bisa sesederhana menambah dan menghapus folder. Ya kurang lebihnya gitu, meski gak gampang2 amat sih * Aku suka User Interface nya. Bersih dan rapi. * Fiturnya menjanjikan, seperti Gamification, activity tracking,...

Salesforce Data Connection with PHP

Sekedar untuk mengingat aja, contoh kelas untuk koneksi PHP ke Salesforce dengan API/SOAP. /** Class to handle connection to salesforce */ require_once("soapclient/SforcePartnerClient.php"); require_once("soapclient/BulkApiClient.php"); define('SOAP_PATH', "soapclient"); define('WSDL_XML_PARTNER', "partner.wsdl.xml"); define('WSDL_XML_ENTERPRISE', "enterprise.wsdl.xml"); define('WSDL_XML_METADATA', "metadata.wsdl.xml"); class SFConnectionClass { public $connection; public $server = 'sand'; // option (sand or prod) public $username = ''; public $password = ''; public $token = ''; public $sfSessionID = ''; public $sfLocation = ''; /* constructor // if parameter empty, use default */ public function SFConnectionClass($server = 'sand', $username = '', $password = '', $token = ...

Jaka Sembung Test PHP

Berikut salah satu posting dari milis php Begini, ada sekitar 6 orang pelamar, semuanya kebetulan berlatar IT , padahal sebelumnya telah dijelaskan syarat-syarat yang tadi 2 wajib, 2 lagi optional. Pertanyaan konyol tadi pagi gak ada yang bisa, cuma 3 soal : 1. Coba buat skrip koneksi mysql dengan PHP 2. Buatkan contoh skrip php untuk update,delete,insert,select 3. Coba buat perintah linux untuk menampilkan isi folder, delete file, copy file karena kerjaan sehari-hari seperti itu di atas yang akan dilakukan, mereka tidak bisa, malah ada yang balik nanya "Apa itu PHP pak? untuk design web yah?", "Wah saya gak bisa kalau teori, harus praktek langsung di PC", kami berikan laptop pada orang itu, tetap saja prakteknya gak bisa, tapi tidak sampai sih mereka bilang "Wah, pak laptop-nya mesti Lenovo, gak bisa kalo pake Compaq Presario". Ada lagi yang bilang "Sudah lama sekali sih kuliah saya, jadi gak begitu inget lagi, kalo di bagian finansial, ada lowongan ...

[PHP] Mail function

Wah, bener-bener payah, bertahun-tahun belajar PHP belum pernah buat program yang langsung ngirim email dari PHP. Padahal katanya gampang banget :). Alasannya adalah belum ada keharusan untuk membuat program itu. Meski ada permintaan, namun biasanya aku bisa mengelak dengan berbagai dalih (next project lah, merepotkan dsb). Namun alasan utamanya adalah karena aku gak tahu install mail server di komputerku, jadi gak pernah bisa nyoba :D. Nah, kali ini terpaksa harus buat. Aku di daulat buat ngerjain sistem laporan aktivitas para tukang di kantor, dan kalau ada masalah atau proyek baru langsung kirim email ke milis tukang tersebut. Yah, ngoprek sana-sini (baca: nyontek koding orang -- masih malas baca manual), nemu juga caranya, ambil aja cara yang sederhana. // kirim email ke milis engineer $recip = "spam@yahoo.co.id"; $subject = "Ini subject email "; $body = "Ini bagian body atau isi email"; $extra_hdrs = "";...

[PHP] List of table in postgreSQL

Hari ini terpikir olehku untuk melihat daftar tabel lengkap yang aku buat di salah satu proyek, dan jumlah record yang ada. Soalnya dalam satu database, jumlah tabelnya dah banyak sekali, sementara phpPgAdmin belum menyediakan data akurat tentang jumlah record. Database yang kupakai adalah PostGreSQL. Setelah ngoprek-ngoprek di User Manualnya, nggak nemu juga, akhirnya ngobrak-abrik source code phpPgAdmin. Ketemu juga. Ternyata informasi daftar tabel disimpan di tabel pg_class, tapi isinya nggak cuma tabel-tabel yang dibuat user, melainkan ada tabel-tabel sistem juga, termasuk tabel sequenceID. Setelah ngoprek-ngoprek, ketemu juga sintaks querynya "SELECT * FROM pg_class WHERE relname NOT LIKE 'pg_%' AND relacl IS NULL AND relkind = 'r' " Jangan tanya apa maksud dari kriteria WHERE yang dipakai, aku juga gak tahu pasti, cuma nyoba-nyoba dan berhasil :)) Ada cara lain yang lebih efektif?

[PHP] mkdate problem dan format tanggal

Ternyata, fungsi mkdate untuk UNIX tidak bisa meng-handle tanggal sebelum tahun 1970. Jadi misalnya ada tanggal=12, bulan=3, tahun=1965, terus aku buat mkdate(0,0,0,bulan,tanggal,tahun), maka hasilnya error. Dan ketika aku manfaatkan date('m-d-y', mkdate(0,0,0,bulan,tanggal,tahun)) tadi, hasilnya adalah 1-1-1970. Wah, padahal aku perlu fungsi ini untuk memformat tampilan tanggal, yang notabene diambil dari database. Misal dari database aku temukan tanggal, dengan format yyyy-mm-dd, misal 1965-03-12. Aku ingin ada fungsi yang bisa mengikuti standard format php untuk tanggal, sehingga tanggal tersebut bisa tampil dengan format tertentu. Misalnya format 'd-M-y',hasilnya 12-Mar-65, kalau format 'm/d/y' hasilnya '03/12/65. Sebelumnya aku pakai fungsi berikut: function pgDateFormat($dateData,$strFormat) { list($strTahun,$strBulan,$strTanggal) = explode("-",$dateData); $strHasil = date($strFormat,mktime(0,0,0,$strBulan,$strTanggal,$strTahun)); return $...

PHP :: Selisih Jam

Setelah kemarin kesulitan untuk melakukan increment ataupun decrement terhadap variabel waktu (date/time) di PHP, kali ini nemuin masalah untuk mencari selisih waktu (dari satu jam ke jam tertentu), yang perlu untuk ngitung lembur karyawan. Tadinya kepikiran untuk buat fungsi sendiri, yang flow -nya kira-kira begini: - masing-masing dipisah menjadi jam, menit, detik - bandingkan antara keduanya. - lakukan pengurangan terhadap masing-masing komponen (jam, menit dan detik) - gabungkan hasil perhitungan ... (selisih jam + selisih menit + selisih detik) Tapi waktu aku ingat kasus Next Date, ... muncul ide untuk menggunakan cara yang sama, yaitu memanfaatkan format UNIX timestamp, terus nyoba mencari selisihnya. TERNYATA BERHASIL !!! Flownya seperti ini: - masing-masing dipisah menjadi jam, menit,detik - ubah masing-masing ke format timestamp, gunakan fungsi mktime() - kurangkan kedua jam - hasilnya dibagi 60 (karena satuannya pakai menit), sementara selisih timestamp itu dalam detik Algori...

PHP :: Next Date

Baru nyadar kalau ternyata di PHP nggak ada type data Date/Time, meskipun ada fungsi-fungsi untuk memanipulasi date/time itu. Padahal aku perlu ada operasi yang melibatkan tanggal, seperti iterasi berdasar tanggal, dari suatu tanggal awal ke tanggal akhir. Contohnya aja untuk mengetahui hari berikutnya. Kalau pakai VB tinggal nextDate = nextDate + 1; Gimana kalau pakai PHP???? Akhirnya setelah baca ebook tentang PHP, ada satu trick, yaitu memanfaatkan tipe timestamp standar UNIX. Caranya: - convert data ke timestamp - tambahkan dengan 86400 (1 hari = 24*60*60 detik) - timestamp diubah lagi ke format standard Misal: $tanggal = "2004-08-31"; //setelah ada proses parsing, misal memanfaatkan list dan explode list($thn,$bln,$tgl) = explode("-",$tanggal); //hasilnya //$thn = 2004; //$bln = 8; //$tgl = 31; //convert ke timestamp $tsTanggal = mktime("","","",$bln,$tgl,$thn); $tsNext = $tsTanggal + 86400; //next day //balikin ke format normal $n...

PHP: dbClass

Sebelumnya, tiap bikin program dengan PHP aku selalu memanfaatkan PEAR:DB, soalnya sebelumnya Arif udah makai. Meski sangat membantu dan banyak keuntungan, tapi kalau ada error di sana aku jadi bingung. Makanya untuk proyek ERP yang lagi dikerjakan, aku rencana untuk membuat kelas sendiri, khusus menangani database. Jadi nantinya kalaupun ada perubahan database yang dipakai (misal dari PosgreSQL ke MySQL), perubahan hanya dilakukan di kelas tersebut. Dillah aku "daulat" untuk ngoprek dan buat kelas tersebut, dan lumayan juga. Ternyata nggak serumit yang kubayangkan. Setelah aku periksa, aku buat beberapa perbaikan, sedikit sih. Kodingnya seperti ini. class dbClass { var $strConn; // connection string var $dbCon; var $dbError; // fungsi untuk mengambil connection string // data disimpan dalam strConn function getConnString() { $this->strConn = "host=localhost port=5432 dbname=aska user=mahawan password=mahawan"; } //fungsi untuk konek ke datab...

PHP :: Membuat konfigurasi sederhana

Biasanya untuk menyimpan konfigurasi yang dibuat dalam program PHP, aku makai PHP PEAR yang berguna untuk mengelola file INI. Aku pakai untuk beberapa program seperti SMS dan Excellent (soalnya ikut-ikutan Arif). Tapi ada kelemahannya, kalau sempat file INI itu ketebak namanya, terus diakses maka akan muncul daftar konfigurasinya. Wah, repot donk. Bisa sih diatasi dengan htaccess, tapi entar malah repot. Jadi aku rencana untuk membuat program pengelolaan konfigurasi itu sendiri. Jadi file ini bakalan aku ubah, jadi file conf.php. Jadi dia akan dianggap file php, tapi karena nggak standard, kalau diakses dari browser akan muncul pesan error. Masalahnya gimana cara membaca dan mengupdate data jika ada perubahan. Untuk membaca data, aku memanfaatkan function file: $arrLine = file($fileSetting); Dengan demikian otomatis semua isi file akan dimasukkan ke dalam array, baris demi baris. Lalu masing-masing baris dibaca isinya, dimasukkan ke variabel (array), terus dipakai sama PHP untuk proses...