tag:blogger.com,1999:blog-21407835119665739732024-03-19T14:51:45.284+07:00Mari Belajar...!!!Blog untuk berbagi ilmu pengetahuan dan pengalamanMari Belajarhttp://www.blogger.com/profile/06328739015959696311noreply@blogger.comBlogger26125tag:blogger.com,1999:blog-2140783511966573973.post-39227654988891947032017-01-10T11:06:00.000+07:002017-01-10T11:10:45.149+07:00Implementation Data Encryption Standard (DES) in PHPI made simple implementation Data Encryption Standard in PHP. <br />
<div class="tw-data-text tw-ta tw-text-small" data-fulltext="" data-placeholder="Translation" dir="ltr" id="tw-target-text" style="height: 48px; text-align: left;">
<span lang="en">I made the code of this program for graduate school assignment on ITS.</span></div>
<div class="tw-data-text tw-ta tw-text-small" data-fulltext="" data-placeholder="Translation" dir="ltr" id="tw-target-text" style="height: 48px; text-align: left;">
<span lang="en">you can check in <a href="https://github.com/zawaruddin/PHP-DES" target="_blank">MY GITHUB </a>for the code.</span></div>
<div class="tw-data-text tw-ta tw-text-small" data-fulltext="" data-placeholder="Translation" dir="ltr" id="tw-target-text" style="height: 48px; text-align: left;">
<br />
<span style="color: red;"><span style="color: black;">Keywords : PHP DES, Data Encryption Standard in PHP</span></span><span style="color: red;"><span style="color: black;"></span></span><br />
<br />
<span class="" id="result_box" lang="en"><span class="hps">To</span> <span class="hps">appreciate the</span> <span class="hps">IPR</span> <span class="hps">(Intellectual Property Rights</span>), <span class="hps">reference sources</span> <span class="hps">that I use</span> <span class="hps">and</span> <span class="hps">I have learned</span> <span class="hps">will be displayed</span></span>.<br />
Reference : <a href="https://github.com/sapelord/DES">https://github.com/sapelord/DES</a><br />
Author :
Moch. Zawaruddin Abdullah, <a href="http://www.zawaruddin.blogspot.com/">www.zawaruddin.blogspot.com</a></div>
<div class="tw-data-text tw-ta tw-text-small" data-fulltext="" data-placeholder="Translation" dir="ltr" id="tw-target-text" style="height: 48px; text-align: left;">
<span lang="en"><br /></span></div>
Mari Belajarhttp://www.blogger.com/profile/06328739015959696311noreply@blogger.com0tag:blogger.com,1999:blog-2140783511966573973.post-5924370169932060012016-07-29T20:47:00.004+07:002022-04-22T06:21:01.155+07:00Contoh Sederhana - Surat Keterangan Penghasilan Orang TuaSaya membuat contoh surat keterangan jumlah kepemilikan rumah ini secara
mendadak untuk adik saya yang akan daftar ulang di Unair. hehe<br />
<br />
Semoga lolos verifikasi dokumennya...<br />
<br />
<strong>Download: </strong><a href="https://drive.google.com/file/d/0B-GWx1nm1t0SN19nWHBLa19yMVE/view?usp=sharing&resourcekey=0-dwg4j1pdPCVT_MELgvSRnQ" target="_blank">Link Contoh Surat Keterangan Penghasilan Orang Tua</a>
<br><br>
<iframe src="https://drive.google.com/file/d/0B-GWx1nm1t0SN19nWHBLa19yMVE/preview" height="700" type="application/pdf" width="600"></iframe>Mari Belajarhttp://www.blogger.com/profile/06328739015959696311noreply@blogger.com0tag:blogger.com,1999:blog-2140783511966573973.post-44358755036225845212016-07-29T20:45:00.008+07:002022-04-22T06:18:07.316+07:00Contoh Sederhana - Surat Keterangan Jumlah Kepemilikan Kendaraan Bermotor (Roda 2)<p>Saya membuat contoh surat keterangan jumlah kepemilikan rumah ini secara
mendadak untuk adik saya yang akan daftar ulang di Unair. hehe<br />
<br />
Semoga lolos verifikasi dokumennya... <br />
<br />
<strong>Download: </strong><a href="https://drive.google.com/file/d/0B-GWx1nm1t0SQkhDNGtaTWRiV2c/view?usp=sharing&resourcekey=0-Bhbto9h-T-LKioq6K7OqRQ" target="_blank">Link Contoh Surat Keterangan Jumlah Kepemilikan Kendaraan Bermotor</a></p><p> </p>
<br>
<iframe src="https://drive.google.com/file/d/0B-GWx1nm1t0SQkhDNGtaTWRiV2c/preview" height="700" type="application/pdf" width="600"></iframe>
Mari Belajarhttp://www.blogger.com/profile/06328739015959696311noreply@blogger.com7tag:blogger.com,1999:blog-2140783511966573973.post-22301413923535289572016-07-29T20:39:00.004+07:002022-04-22T06:18:05.428+07:00Contoh Sederhana - Surat Keterangan Jumlah Kepemilikan RumahSaya membuat contoh surat keterangan jumlah kepemilikan rumah ini secara mendadak untuk adik saya yang akan daftar ulang di Unair. hehe<br />
<br />
Semoga lolos verifikasi dokumennya...<br />
<br />
<strong>Download: </strong><a href="https://drive.google.com/file/d/0B-GWx1nm1t0SZHB5eUMtVVVJUHc/view?usp=sharing&resourcekey=0-Wy5ajkQGYSkctiNiYUPc9Q" target="_blank">Link Contoh Surat Keterangan Jumlah Kepemilikan Rumah</a>
<br><br>
<iframe src="https://drive.google.com/file/d/0B-GWx1nm1t0SZHB5eUMtVVVJUHc/preview" height="700" type="application/pdf" width="600"></iframe>
Mari Belajarhttp://www.blogger.com/profile/06328739015959696311noreply@blogger.com1tag:blogger.com,1999:blog-2140783511966573973.post-32226483187718950522016-02-25T14:45:00.003+07:002016-02-26T18:45:09.198+07:00Fungsi Terbilang Sederhana dengan PHP Class NumberFormatterMungkin sudah banyak contoh kode PHP untuk mengonversi angka ke dalam teks bilangan (terbilang) saat ini. Tapi kali ini saya coba membagikan salah satu kode terbilang dengan memanfaatkan <span style="color: blue;">class </span>bawaan php yaitu <span style="color: blue;">class <b>NumberFormatter</b>.</span><br />
Jadi hal ini bisa lebih simpel dalam penulisan kode PHP.<br />
<br />
<pre class="brush:php">function terbilang($angka) {
$terbF = new NumberFormatter('id-ID', NumberFormatter::SPELLOUT);
// 'id-ID' format penulisan bahasa id : Indonesia
return $terbF->format($angka);
}
$angka = 1255555;
$huruf = terbilang($angka);
echo $huruf;
// hasilnya : satu juta dua ratus lima puluh lima ribu lima ratus lima puluh lima
</pre>
<br />
Begitu simpelkan?<br />
Perlu <b>DIPERHATIKAN, </b>sebelum menggunakan <span style="color: blue;">class <b>NumberFormatter</b><span style="color: black;">. </span></span><br />
<ul>
<li><span style="color: blue;"><span style="color: black;">Class NumberFormatter ada pada PHP versi 5.3 ke atas</span></span></li>
<li><span style="color: blue;"><span style="color: black;"> </span></span><span style="color: blue;"><span style="color: black;">Silahkan edit file <b>php.ini</b></span></span></li>
</ul>
<pre class="brush:perl">cari kata kunci seperti ini
;extension=php_intl.dll
hilangkan tanda ; menjadi
extension=php_intl.dll</pre>
<ul>
<li>Simpan, kemudian restart web server.</li>
</ul>
Selamat mencoba. :)<br />
<br />
Keyword : PHP Fungsi Terbilang,Terbilang<br />
<br />
Untuk
menghargai HKI(Hak Kekayaan Intelektual), sumber referensi yang saya
pakai dan saya pelajari akan ditampilkan.<br />
Referensi :<a href="http://php.net/manual/en/class.numberformatter.php"> http://php.net</a><a href="http://msdn.microsoft.com/en-us/library/cc296170%28v=sql.105%29.aspx" target="_blank"></a><br />
Author :
Moch. Zawaruddin Abdullah, www.zawaruddin.blogspot.comMari Belajarhttp://www.blogger.com/profile/06328739015959696311noreply@blogger.com0tag:blogger.com,1999:blog-2140783511966573973.post-3133335418474677382015-01-14T13:47:00.003+07:002017-01-10T11:07:40.393+07:00Konfigurasi Codeigniter 2.x.x dengan SQL Server 2008/2012 (Update)Sudah lama sekali saya tidak menulis artikel diblog ini, mungkin ini yang dinamakan sindrom males ngetik ( XD ).<br />
Dalam artikel saya yang sebelumnya mengenai <a href="http://zawaruddin.blogspot.com/2012/05/konfigurasi-codeigniter-210-dengan-sql.html" target="_blank"><span style="color: blue;">Konfigurasi Codeigniter 2.1.0 dengan SQL Server 2008</span></a> masih banyak pembaca yang bingung dan bertanya-tanya<br />
<blockquote class="tr_bq">
"kenapa kok masih g konek ya padahal sudah bener semua settingan koneksi database ke SQL Servernya"</blockquote>
Nah jangankan pembaca yang budiman (bukan ibu Diman.... :D pis.. ), penulis yang bukan suaminya bu Diman pun juga heran, kok bisa tidak konek ke database SQL Server ya (pengalaman pas habis install ulang OS).<br />
Nah untuk itu saya sebagai penulis (tentunya bukan suaminya bu Diman) membuat ulang langkah konfigurasi CI 2.x.x untuk bisa terkoneksi dengan SQL Server 2008/2012.<br />
<br />
Sebagai info tambahan, saya
menggunakan <span id="bc_0_9b+seedE1ZPD" kind="d">XAMPP 1.8.2 dengan PHP 5.4 dengan OS Windows 8 64bit.</span><br />
Langkah-langkahnya sebagai berikut :<br />
<ol>
<li>Install SQL Server 2008 / 2012. <span style="color: red;"><b>Jangan lupa</b></span> install juga <span style="color: blue;"><b>SQL Server Native Client</b></span>, karena disinilah letak permasalahannya. Kadang kita meng-instal SQL Server, tapi tidak meng-install SQL Server Native Client nya sehingga aplikasi PHP kita tidak bisa terkoneksi dengan SQL Server. SQL Server Native Client bisa di download di <a href="http://www.microsoft.com/en-us/download/details.aspx?id=27596"><span style="color: blue;">microsoft.com</span></a>, atau kalau bingung sudah saya siapkan dan dapat di download <a href="https://drive.google.com/file/d/0B-GWx1nm1t0SdUR6Tk8tM1FVRkE/view?usp=sharing"><span style="color: blue;">disini</span></a></li>
<li>Download driver SQL Server untuk PHP, bisa di download <a href="http://www.microsoft.com/en-us/download/details.aspx?id=20098" target="_blank"><span style="color: blue;">disini</span></a>. Sebagai catatan cek versi PHP yang sedang dipakai, kemudian cocokkan dengan versi library PHP untuk SQL Server. Saya menggunakan Microsoft SQL Server Drivers versi 3.0</li>
<li>Ekstrak file yang telah di download ke extensinya php (contoh klo di XAMPP ada di XAMPP/php/ext)</li>
<li>Edit file php.ini nya, trus tambahkan code (untuk PHP 5.4)
<pre class="brush: php"></pre>
<pre class="brush: php">extension=php_sqlsrv_54_ts.dll
extension=php_pdo_sqlsrv_54_ts.dll</pre>
</li>
<li>Restart Apache pada XAMPP </li>
<li>Selanjutnya setting database.php yang ada pada folder config Codeigniter
<pre class="brush: php">$db['default']['hostname'] = 'ZAWA-PC'; // Nama PC dimana SQL Server diinstal
atau
$db['default']['hostname'] = 'localhost';
$db['default']['username'] = 'sa';
$db['default']['password'] = '123456';
$db['default']['database'] = 'db_zawa';
$db['default']['dbdriver'] = 'sqlsrv';
$db['default']['dbprefix'] = '';
$db['default']['pconnect'] = FALSE;
$db['default']['db_debug'] = TRUE;
$db['default']['cache_on'] = FALSE;
$db['default']['cachedir'] = '';
$db['default']['char_set'] = 'utf8';
$db['default']['dbcollat'] = 'utf8_general_ci';
$db['default']['swap_pre'] = '';
$db['default']['autoinit'] = TRUE;
$db['default']['stricton'] = FALSE;
</pre>
</li>
<li>
Apabila SQL Server di install di komputer lain yang masih dalam satu jaringan LAN, dan komputer kita HANYA ingin mengakses SQL Server dari komputer itu. Ubah konfigurasi untuk <b>hostname</b>-nya menjadi
<pre class="brush: php">$db['default']['hostname'] = 'tcp:XXXX,YYYY'; </pre>
Dimana XXXX adalah nama PC yang diinstal SQL Server dan YYYY adalah Port yang digunakan SQL Server
<pre class="brush: php">$db['default']['hostname'] = 'tcp:HYURA-PC,1433'; // 1433 Port default SQL Server
atau
$db['default']['hostname'] = 'tcp:192.168.0.212,1433'; // 1433 Port default SQL Server
</pre>
</li>
</ol>
Setelah selesai melakukan konfigurasi, jalankan aplikasi CI nya. Semoga berhasil dan semoga membantu.<br />
Ada udang dibalik batu, udah duluuu...... ^_^<br />
<br />
NB : Kalau menggunakan langkah ke 7 yang hanya mengakses SQL Server yang ada dikomputer komputer lain, <span style="color: red;">JANGAN LUPA LAGI</span>, tetap install SQL Server Native Client nya. Selain itu bisa jadi perlu diinstall juga Visual C++ Redistributable sesuai dengan arsitektur dari program PHP. Download <a href="http://www.microsoft.com/en-us/download/details.aspx?id=30679" target="_blank">VC11</a><br />
<a href="http://www.microsoft.com/en-us/download/details.aspx?id=30679" target="_blank"><br /></a>
Keyword : PHP CodeIgniter, Konfigurasi SQL Server 2008<br />
<br />
Untuk
menghargai HKI(Hak Kekayaan Intelektual), sumber referensi yang saya
pakai dan saya pelajari akan ditampilkan.<br />
Referensi :<a href="http://codeigniter.com/">
http://codeigniter.com/,</a> <a href="http://msdn.microsoft.com/en-us/library/cc296170%28v=sql.105%29.aspx" target="_blank">msdn.microsoft.com</a><br />
Author :
Moch. Zawaruddin Abdullah, www.zawaruddin.blogspot.comMari Belajarhttp://www.blogger.com/profile/06328739015959696311noreply@blogger.com15tag:blogger.com,1999:blog-2140783511966573973.post-37177820956865063332014-02-14T16:11:00.000+07:002016-02-25T15:12:54.353+07:00Tips Mempercepat Loading WebsiteSetelah lama membisu dalam <i>sharing</i> kali ini saya akan <i>sharing </i>pengalaman saya yang baru kemarin saya uprek2 kembali, yakni tentang Tips Mempercepat Loading Website yang dibangun.<br />
<br />
Ada banyak <i>tools</i> yang digunakan untuk mengetahui kecepatan loading website kita, tapi pada kali ini saya memakai 3 <i>tools </i>yaitu :<br />
<ol>
<li><a href="http://developers.google.com/speed/pagespeed/insights/" target="_blank">PageSpeed Insights</a> dari Google</li>
<li><a href="http://gtmetrix.com/">gtmetrix.com </a></li>
<li><a href="http://www.gidnetwork.com/tools/gzip-test.php" target="_blank">gidnetwork.com</a> atau <a href="http://www.feedthebot.com/tools/gzip/" target="_blank">feedthebot.com</a></li>
</ol>
<br />
contoh web yang akan dianalisa oleh kedua aplikasi di atas<br />
<table cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"><tbody>
<tr><td style="text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgMO1MM4MJ0yF-SpfZc0xCVi6gym94IpLeHtKqIIqV6KIwQaqMdZhgCw6m_JUIE2cnunE3n7LPRAOAndvOKeS8n-PSVm48TDAND07FaPR_c9Ezfhx6s84J_dY14gdAowpKUlksSfRvkLbcH/s1600/upload_before.PNG" imageanchor="1" style="clear: left; margin-bottom: 1em; margin-left: auto; margin-right: auto;"><img border="0" height="211" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgMO1MM4MJ0yF-SpfZc0xCVi6gym94IpLeHtKqIIqV6KIwQaqMdZhgCw6m_JUIE2cnunE3n7LPRAOAndvOKeS8n-PSVm48TDAND07FaPR_c9Ezfhx6s84J_dY14gdAowpKUlksSfRvkLbcH/s1600/upload_before.PNG" width="400" /></a></td></tr>
<tr><td class="tr-caption" style="text-align: center;">Gambar Analisa dari Google PageSpeed</td></tr>
</tbody></table>
<table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"><tbody>
<tr><td style="text-align: center;"><br />
<br />
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiSZlNjTIHAGhBEpql7KbyNoou5JXInVjBbjglYa6QqLMjqyxnCLCKOuCHmhs-Lc4dSYdyq_tQWjhU1Fh2JqpAzbnasp92NX7dURgFgD71cCwTgu1MR_gPojbHK4ZqT4UzkMR_cmqqE9hZi/s1600/upload_before2.PNG" imageanchor="1" style="margin-left: auto; margin-right: auto;"><img border="0" height="241" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiSZlNjTIHAGhBEpql7KbyNoou5JXInVjBbjglYa6QqLMjqyxnCLCKOuCHmhs-Lc4dSYdyq_tQWjhU1Fh2JqpAzbnasp92NX7dURgFgD71cCwTgu1MR_gPojbHK4ZqT4UzkMR_cmqqE9hZi/s1600/upload_before2.PNG" width="400" /></a></td></tr>
<tr><td class="tr-caption" style="text-align: center;">Gambar Analisa dari GTMetrix</td><td class="tr-caption" style="text-align: center;"><br /></td><td class="tr-caption" style="text-align: center;"><br /></td><td class="tr-caption" style="text-align: center;"><br /></td></tr>
</tbody></table>
<table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"><tbody>
<tr><td style="text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjJ3DGlk3WNizGjT29Tjy0Gxnx3d-kNe4EUmjiOrhhcyPU_N49bXP3K0n1fjVmBgPLPsimFV0mE50WBpEbECiMK_UrHLP3jzPAWsVNR-WkcK_F-GN3aH82fF8A-kzyHSQo3OaxOwVSkRXlt/s1600/upload_before3.PNG" imageanchor="1" style="margin-left: auto; margin-right: auto;"><img border="0" height="348" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjJ3DGlk3WNizGjT29Tjy0Gxnx3d-kNe4EUmjiOrhhcyPU_N49bXP3K0n1fjVmBgPLPsimFV0mE50WBpEbECiMK_UrHLP3jzPAWsVNR-WkcK_F-GN3aH82fF8A-kzyHSQo3OaxOwVSkRXlt/s1600/upload_before3.PNG" width="400" /></a></td></tr>
<tr><td class="tr-caption" style="text-align: center;">Gambar Analisa dari Gidnetwork.com</td></tr>
</tbody></table>
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<br />
Langkah - langkah yang dilakukan untuk dapat mempercepat <i>loading </i>website (berdasarkan pengalaman saya pribadi pada web server <b>Apache XAMPP</b>) :<br />
<br />
<h3>
<b><span style="color: blue;">Bermain dengan file .htaccess </span></b></h3>
Maksud dari bermain dengan file .htaccess adalah melakukan konfigurasi di file <i>htacces </i>untuk dapat mengoptimalkan performa website. <b><span style="color: blue;"></span></b><br />
<h4>
1. Menggunakan Kompresi Gzip, Deflate</h4>
<span style="font-weight: normal;"><span style="color: blue;"><span style="color: black;">K</span></span>ompresi gzip dilakukan untuk mengompres data dari server sebelum dikirim ke client sehingga ukuran file menjadi lebih kecil dari ukuran asli file dari server. Hal ini dapat mempercepat pengiriman data. Berikut kodenya untuk .htacces di <b>apache xampp</b></span><br />
<pre class="brush:sql"><ifModule mod_gzip.c>
mod_gzip_on Yes
mod_gzip_dechunk Yes
mod_gzip_item_include file \.(html?|txt|css|js|php|pl)$
mod_gzip_item_include handler ^cgi-script$
mod_gzip_item_include mime ^text/.*
mod_gzip_item_include mime ^application/x-javascript.*
mod_gzip_item_exclude mime ^image/.*
mod_gzip_item_exclude rspheader ^Content-Encoding:.*gzip.*
</ifModule></pre>
<pre class="brush:sql"><IfModule mod_deflate.c>
#The following line is enough for .js and .css
SetOutputFilter DEFLATE
AddOutputFilter DEFLATE js css
AddOutputFilterByType DEFLATE text/plain
AddOutputFilterByType DEFLATE text/xml
AddOutputFilterByType DEFLATE text/html
AddOutputFilterByType DEFLATE text/css
AddOutputFilterByType DEFLATE application/atom_xml
AddOutputFilterByType DEFLATE application/rss+xml
AddOutputFilterByType DEFLATE application/xhtml+xml
AddOutputFilterByType DEFLATE application/xml
AddOutputFilterByType DEFLATE application/x-javascript
AddOutputFilterByType DEFLATE application/x-httpd-php
AddOutputFilterByType DEFLATE application/x-httpd-fastphp
AddType x-font/otf .otf
AddType x-font/ttf .ttf
AddType x-font/eot .eot
AddType x-font/woff .woff
AddType image/x-icon .ico
AddType image/png .png
AddType text/css .css
#The following lines are to avoid bugs with some browsers
BrowserMatch ^Mozilla/4 gzip-only-text/html
BrowserMatch ^Mozilla/4\.0[678] no-gzip
BrowserMatch \bMSIE !no-gzip !gzip-only-text/html
BrowserMatch \bMSI[E] !no-gzip !gzip-only-text/html
SetEnvIfNoCase Request_URI \.(?:gif|jpe?g|png)$ no-gzip
Header append Vary User-Agent env=!dont-vary
</ifModule>
</pre>
<br />
<h4>
2. Memanfaatkan cache</h4>
Selain melakukan kompresi, lakukan pula pemanfaatan cache pada website anda, contoh kode htaccess untuk memanfaatkan cache
<br />
<pre class="brush:sql"><IfModule mod_expires.c>
ExpiresActive On
ExpiresDefault "access plus 1 month"
ExpiresByType image/jpg "access plus 1 year"
ExpiresByType image/jpeg "access plus 1 year"
ExpiresByType image/gif "access plus 1 year"
ExpiresByType image/png "access plus 1 year"
ExpiresByType text/html "access plus 1 month"
ExpiresByType text/css "access plus 1 month"
ExpiresByType application/pdf "access plus 1 month"
ExpiresByType application/x-shockwave-flash "access plus 1 month"
ExpiresByType application/x-javascript "access plus 14 days"
ExpiresByType image/x-icon "access plus 1 year"
</ifModule>
<ifModule mod_headers.c>
<filesMatch "\\.(ico|pdf|flv|jpg|jpeg|png|gif|swf|svg)$">
Header set Cache-Control "max-age=2592000, public"
</filesMatch>
<filesMatch "\\.(css)$">
Header set Cache-Control "max-age=604800, public"
</filesMatch>
<filesMatch "\\.(js)$">
Header set Cache-Control "max-age=216000, private"
</filesMatch>
<filesMatch "\\.(xml|txt)$">
Header set Cache-Control "max-age=216000, public, must-revalidate"
</filesMatch>
<filesMatch "\\.(html|htm|php)$">
Header set Cache-Control "max-age=1, private, must-revalidate"
</filesMatch>
Header unset ETag
</ifModule>
FileETag None
</pre>
<h4>
3. Aktifkan modul Deflate pada Apache XAMPP</h4>
Langkah terakhir adalah mengaktifkan modul deflate dengan membuka direktori konfigurasi Apache. Contoh pada XAMPP di OS Windows
<br />
<pre> C:\\xampp\apache\conf\httpd.conf
</pre>
cari baris yang dengan kode seperti dibawah ini<br />
<pre> #LoadModule deflate_module modules/mod_deflate.so</pre>
<pre> #LoadModule expires_module modules/mod_expires.so</pre>
<pre> #LoadModule headers_module modules/mod_headers.so
</pre>
lalu hapus tanda '#' untuk mengaktifkan modul deflat. <b><span style="color: blue;">Simpan </span></b>dan <span style="color: blue;"><b>restart </b></span>Apache-nya<br />
<br />
<br />
Setelah setelah konfigurasi di atas telah dilakukan, analisa kembali website kita menggunakan 3 tools di atas. Maka hasilnya bisa dilihat<br />
<table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"><tbody>
<tr><td style="text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiJXGAeCSsMvRGcRKI6q1qeU5c17bMZ13R7UYOHU7xOTnxNVd7f2wpXL2ucG2ySCZRgXcVJsUYCnWtzWn69kIbA1c-vPVlMA1QiCKgOpEmXsox96NnGiNZYrPQmlNjAXV08lSMJogqR4EcS/s1600/upload_after.PNG" imageanchor="1" style="margin-left: auto; margin-right: auto;"><img border="0" height="242" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiJXGAeCSsMvRGcRKI6q1qeU5c17bMZ13R7UYOHU7xOTnxNVd7f2wpXL2ucG2ySCZRgXcVJsUYCnWtzWn69kIbA1c-vPVlMA1QiCKgOpEmXsox96NnGiNZYrPQmlNjAXV08lSMJogqR4EcS/s1600/upload_after.PNG" width="400" /></a></td></tr>
<tr><td class="tr-caption" style="text-align: center;">Gambar Hasil Analisa Google PageSpeed</td></tr>
</tbody></table>
<table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"><tbody>
<tr><td style="text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhkYX1aI9wfVcFxVwWGLtsC85HlyqC_vFc3IuZ_4VlIT4Q0HpsR7BEU82qHvyK4eozNaeO9xXcmgWG52oNJkb4wu5SgpTgzCTIHNLXalxWG5t0AyYGgeT6U_NBp_PhC5y06Qga8HwYWiY-Z/s1600/upload_after2.PNG" imageanchor="1" style="margin-left: auto; margin-right: auto;"><img border="0" height="251" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhkYX1aI9wfVcFxVwWGLtsC85HlyqC_vFc3IuZ_4VlIT4Q0HpsR7BEU82qHvyK4eozNaeO9xXcmgWG52oNJkb4wu5SgpTgzCTIHNLXalxWG5t0AyYGgeT6U_NBp_PhC5y06Qga8HwYWiY-Z/s1600/upload_after2.PNG" width="400" /></a></td></tr>
<tr><td class="tr-caption" style="text-align: center;">Gambar Hasil Analisa GTMetrix</td></tr>
</tbody></table>
<div class="separator" style="clear: both; text-align: center;">
</div>
<table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"><tbody>
<tr><td style="text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg_0iGP1Jia8fzQNdyS8t5ZpC8paYB8UTVynLzb-NMsHz-GfRO2aVC3QrsjQiD2UHaoMznUoP3E4vhVco4rj6IADDzEhzpuuFAxsnjnOiQtR2m6HTOFPfzXXdCndlrXTxGwzQnnEqeACZU-/s1600/upload_after3.PNG" imageanchor="1" style="margin-left: auto; margin-right: auto;"><img border="0" height="333" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg_0iGP1Jia8fzQNdyS8t5ZpC8paYB8UTVynLzb-NMsHz-GfRO2aVC3QrsjQiD2UHaoMznUoP3E4vhVco4rj6IADDzEhzpuuFAxsnjnOiQtR2m6HTOFPfzXXdCndlrXTxGwzQnnEqeACZU-/s1600/upload_after3.PNG" width="400" /></a></td></tr>
<tr><td class="tr-caption" style="text-align: center;">Gambar Hasil Analisa GIDNetwork</td></tr>
</tbody></table>
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
</div>
<br />
<br />
<b><span style="color: blue;">Tambahan </span></b><br />
<span style="color: blue;"><span style="color: black;">Apabila merasa kurang cukup dengan yang di atas tentang mempercepat loading website kita. Bisa juga melakukan trik kompresi file gambar, css, dan javascript </span></span><span style="color: blue;"></span>secara manual menggunakan tools seperti :<br />
<ol>
<li><a href="http://jscompress.com/" target="_blank">jscompress.com</a> untuk mengompres/<i>minify </i>file javascript </li>
<li><a href="http://cssminifier.com/" target="_blank">cssminifier.com</a> untuk mengompres file css</li>
<li><a href="http://www.imageoptimizer.net/Pages/Home.aspx" target="_blank">imageoptimizer.net</a> untuk mengompres file gambar</li>
</ol>
<br />
Demikian sharing kali ini, semoga bermanfaat ^_^<br />
Akhirnya... bisa sharing lagi.... :D<br />
<br />
<span style="color: red;"><span style="color: black;">Keyword : mempercepat loading website, </span></span><span style="color: red;"><span style="color: black;">loading website</span></span>.<br />
<br />
Untuk
menghargai HKI(Hak Kekayaan Intelektual), sumber referensi yang saya
pakai dan saya pelajari akan ditampilkan.<br />
Referensi : <a href="http://stackoverflow.com/questions/6724549">http://stackoverflow.com/questions/6724549</a>, <a href="http://stackoverflow.com/questions/12367858">http://stackoverflow.com/questions/12367858</a>, <a href="http://httpd.apache.org/docs/2.2/">http://httpd.apache.org/docs/2.2/</a><a href="http://ellislab.com/codeigniter/user-guide/libraries/calendar.html" target="_blank"></a><br />
Author :
Moch. Zawaruddin Abdullah, www.zawaruddin.blogspot.com<br />
<br />Mari Belajarhttp://www.blogger.com/profile/06328739015959696311noreply@blogger.com2tag:blogger.com,1999:blog-2140783511966573973.post-17190343066023203252013-06-02T11:24:00.002+07:002021-11-12T23:30:26.950+07:00Multiple Event Calendar with Codeigniter Well, after long time didn't post about sharing. Now i'm sharing about multiple event calendar with Codeigniter framework that named "Evencal" (sorry for other code that have same name.. ^_^ ).<br />
<br />
<div style="text-align: center;">
<span style="color: blue;"><a href="http://zawaruddin.nextinspiration.us/evencal" target="_blank"><b>DEMO</b></a></span></div>
<br />
This is an update from my <span style="color: blue;"><b><a href="http://zawaruddin.blogspot.com/2012/12/event-calendar-with-codeigniter.html" target="_blank">event calendar</a>.</b></span> Evencal using :<br />
<ol>
<li><strike>Codeigniter 2.1.3</strike> update <a href="https://www.codeigniter.com/" target="_blank">Codeigniter 3</a></li>
<li><a href="http://jquery.com/download/" target="_blank">jQuery 1.7.2</a></li>
<li><a href="http://www.jacklmoore.com/colorbox/" target="_blank">jQuery Colorbox</a></li>
<li><a href="http://www.paulund.co.uk/giveaway-10-css-notification-boxes-for-free" target="_blank">CSS Notification Boxes</a></li>
</ol>
<br />
This is screenshoot :<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgrtoSG1mMIWUJP0IkIdmuKq6qJvD67iWOWISAPyg6lRtwAzCHP4cQLrNvjoIctlW4PbXOepeWj6OS0EqpvYkag9b7lKhROi0ed44hfroXc8PdZqsgleLjLzaQ5RQ6AUNng9tm-4e7w1OMO/s1600/Capture.PNG" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="272" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgrtoSG1mMIWUJP0IkIdmuKq6qJvD67iWOWISAPyg6lRtwAzCHP4cQLrNvjoIctlW4PbXOepeWj6OS0EqpvYkag9b7lKhROi0ed44hfroXc8PdZqsgleLjLzaQ5RQ6AUNng9tm-4e7w1OMO/s640/Capture.PNG" width="640" /></a></div>
<br />
At first, create code SQL for database Evencal. This application using MYSQL Database :
<br />
<pre class="brush:sql">CREATE TABLE IF NOT EXISTS `events` (
`event_date` date NOT NULL,
`total_events` int(50) NOT NULL DEFAULT '0',
PRIMARY KEY (`event_date`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1;
CREATE TABLE IF NOT EXISTS `event_detail` (
`idevent` int(11) NOT NULL AUTO_INCREMENT,
`event_date` date NOT NULL,
`event_time` time NOT NULL,
`event` varchar(200) NOT NULL,
PRIMARY KEY (`idevent`),
KEY `event_date` (`event_date`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=34 ;
ALTER TABLE `event_detail`
ADD CONSTRAINT `event_detail_ibfk_1` FOREIGN KEY (`event_date`) REFERENCES `events` (`event_date`);
</pre>
<br />
and then create controller <b>evencal.php</b><br />
<pre class="brush:php">class Evencal extends CI_Controller {
function __construct(){
parent::__construct();
$this->load->model('evencal_model', 'evencal');
$this->load->library('calendar', $this->_setting());
}
function index($year = null, $month = null, $day = null){
$year = (empty($year) || !is_numeric($year))? date('Y') : $year;
$month = (is_numeric($month) && $month > 0 && $month < 13)? $month : date('m');
$day = (is_numeric($day) && $day > 0 && $day < 31)? $day : date('d');
$date = $this->evencal->getDateEvent($year, $month);
$cur_event = $this->evencal->getEvent($year, $month, $day);
$data = array(
'notes' => $this->calendar->generate($year, $month, $date),
'year' => $year,
'mon' => $month,
'month' => $this->_month($month),
'day' => $day,
'events'=> $cur_event
);
$this->load->view('index', $data);
}
// for convert (int) month to (string) month in Indonesian
function _month($month){
$month = (int) $month;
switch($month){
case 1 : $month = 'Januari'; Break;
case 2 : $month = 'Februari'; Break;
case 3 : $month = 'Maret'; Break;
case 4 : $month = 'April'; Break;
case 5 : $month = 'Mei'; Break;
case 6 : $month = 'Juni'; Break;
case 7 : $month = 'Juli'; Break;
case 8 : $month = 'Agustus'; Break;
case 9 : $month = 'September'; Break;
case 10 : $month = 'Oktober'; Break;
case 11 : $month = 'November'; Break;
case 12 : $month = 'Desember'; Break;
}
return $month;
}
// get detail event for selected date
function detail_event(){
$this->form_validation->set_rules('year', 'Year', 'trim|required|is_natural_no_zero|xss_clean');
$this->form_validation->set_rules('mon', 'Month', 'trim|required|is_natural_no_zero|less_than[13]|xss_clean');
$this->form_validation->set_rules('day', 'Day', 'trim|required|is_natural_no_zero|less_than[32]|xss_clean');
if ($this->form_validation->run() == FALSE){
echo json_encode(array('status' => false, 'title_msg' => 'Error', 'msg' => 'Please insert valid value'));
}else{
$data = $this->evencal->getEvent($this->input->post('year'), $this->input->post('mon'), $this->input->post('day'));
if($data == null){
echo json_encode(array('status' => false, 'title_msg' => 'No Event', 'msg' => 'There\'s no event in this date'));
}else{
echo json_encode(array('status' => true, 'data' => $data));
}
}
}
// popup for adding event
function add_event(){
$data = array(
'day' => $this->input->post('day'),
'mon' => $this->input->post('mon'),
'month' => $this->_month($this->input->post('mon')),
'year' => $this->input->post('year'),
);
$this->load->view('add_event', $data);
}
// do adding event for selected date
function do_add(){
$this->form_validation->set_rules('year', 'Year', 'trim|required|is_natural_no_zero|xss_clean');
$this->form_validation->set_rules('mon', 'Month', 'trim|required|is_natural_no_zero|less_than[13]|xss_clean');
$this->form_validation->set_rules('day', 'Day', 'trim|required|is_natural_no_zero|less_than[32]|xss_clean');
$this->form_validation->set_rules('hour', 'Hour', 'trim|required|xss_clean');
$this->form_validation->set_rules('minute', 'Minute', 'trim|required|xss_clean');
$this->form_validation->set_rules('event', 'Event', 'trim|required|xss_clean');
if ($this->form_validation->run() == FALSE){
echo json_encode(array('status' => false, 'title_msg' => 'Error', 'msg' => 'Please insert valid value'));
}else{
$this->evencal->addEvent($this->input->post('year'),
$this->input->post('mon'),
$this->input->post('day'),
$this->input->post('hour').":".$this->input->post('minute').":00",
$this->input->post('event'));
echo json_encode(array('status' => true, 'time' => $this->input->post('time'), 'event' => $this->input->post('event')));
}
}
// delete event
function delete_event(){
$this->form_validation->set_rules('year', 'Year', 'trim|required|is_natural_no_zero|xss_clean');
$this->form_validation->set_rules('mon', 'Month', 'trim|required|is_natural_no_zero|less_than[13]|xss_clean');
$this->form_validation->set_rules('day', 'Day', 'trim|required|is_natural_no_zero|less_than[32]|xss_clean');
$this->form_validation->set_rules('del', 'ID', 'trim|required|is_natural_no_zero|xss_clean');
if ($this->form_validation->run() == FALSE){
echo json_encode(array('status' => false));
}else{
$rows = $this->evencal->deleteEvent($this->input->post('year'),$this->input->post('mon'),$this->input->post('day'), $this->input->post('del'));
if($rows > 0){
echo json_encode(array('status' => true, 'row' => $rows));
}else{
echo json_encode(array('status' => true, 'row' => $rows, 'title_msg' => 'No Event', 'msg' => 'There\'s no event in this date'));
}
}
}
// same as index() function
function detail($year = null, $month = null, $day = null){
$year = (empty($year) || !is_numeric($year))? date('Y') : $year;
$month = (is_numeric($month) && $month > 0 && $month < 13)? $month : date('m');
$day = (is_numeric($day) && $day > 0 && $day < 31)? $day : date('d');
$date = $this->evencal->getDateEvent($year, $month);
$cur_event = $this->evencal->getEvent($year, $month, $day);
$data = array(
'notes' => $this->calendar->generate($year, $month, $date),
'year' => $year,
'mon' => $month,
'month' => $this->_month($month),
'day' => $day,
'events'=> $cur_event
);
$this->load->view('index', $data);
}
// setting for calendar
function _setting(){
return array(
'start_day' => 'monday',
'show_next_prev' => true,
'next_prev_url' => site_url('evencal/index'),
'month_type' => 'long',
'day_type' => 'short',
'template' => '{table_open}<table class="date">{/table_open}
{heading_row_start}&nbsp;{/heading_row_start}
{heading_previous_cell}<caption><a href="{previous_url}" class="prev_date" title="Previous Month">&lt;&lt;Prev</a>{/heading_previous_cell}
{heading_title_cell}{heading}{/heading_title_cell}
{heading_next_cell}<a href="{next_url}" class="next_date" title="Next Month">Next&gt;&gt;</a></caption>{/heading_next_cell}
{heading_row_end}<col class="weekday" span="5"><col class="weekend_sat"><col class="weekend_sun">{/heading_row_end}
{week_row_start}<thead><tr>{/week_row_start}
{week_day_cell}<th>{week_day}</th>{/week_day_cell}
{week_row_end}</tr></thead><tbody>{/week_row_end}
{cal_row_start}<tr>{/cal_row_start}
{cal_cell_start}<td>{/cal_cell_start}
{cal_cell_content}<div class="date_event detail" val="{day}"><span class="date">{day}</span><span class="event d{day}">{content}</span></div>{/cal_cell_content}
{cal_cell_content_today}<div class="active_date_event detail" val="{day}"><span class="date">{day}</span><span class="event d{day}">{content}</span></div>{/cal_cell_content_today}
{cal_cell_no_content}<div class="no_event detail" val="{day}"><span class="date">{day}</span><span class="event d{day}">&nbsp;</span></div>{/cal_cell_no_content}
{cal_cell_no_content_today}<div class="active_no_event detail" val="{day}"><span class="date">{day}</span><span class="event d{day}">&nbsp;</span></div>{/cal_cell_no_content_today}
{cal_cell_blank}&nbsp;{/cal_cell_blank}
{cal_cell_end}</td>{/cal_cell_end}
{cal_row_end}</tr>{/cal_row_end}
{table_close}</tbody></table>{/table_close}');
}
}
</pre>
<br />
and then for the model <b>evencal_model.php</b><br />
<pre class="brush:php">class Evencal_model extends CI_Model {
// for get all event date in one month
function getDateEvent($year, $month){
$year = ($month < 10 && strlen($month) == 1) ? "$year-0$month" : "$year-$month";
$query = $this->db->select('event_date, total_events')->from('events')->like('event_date', $year, 'after')->get();
if($query->num_rows() > 0){
$data = array();
foreach($query->result_array() as $row){
$data[(int) end(explode('-',$row['event_date']))] = $row['total_events'];
}
return $data;
}else{
return false;
}
}
// get event detail for selected date
function getEvent($year, $month, $day){
$day = ($day < 10 && strlen($day) == 1)? "0$day" : $day;
$year = ($month < 10 && strlen($month) == 1) ? "$year-0$month-$day" : "$year-$month-$day";
$query = $this->db->select('idevent as id, event_time as time, event')->order_by('event_time')->get_where('event_detail', array('event_date' => $year));
if($query->num_rows() > 0){
return $query->result_array();
}else{
return null;
}
}
// insert event
function addEvent($year, $month, $day, $time, $event){
$check = $this->db->get_where('events', array('event_date' => "$year-$month-$day"));
if($check->num_rows() > 0){
$this->db->query("UPDATE events SET total_events = total_events + 1 WHERE event_date = ?", array("$year-$month-$day"));
$this->db->insert('event_detail', array('event_date' => "$year-$month-$day", 'event_time' => $time, 'event' => $event));
}else{
$this->db->insert('events', array('event_date' => "$year-$month-$day", 'total_events' => 1));
$this->db->insert('event_detail', array('event_date' => "$year-$month-$day", 'event_time' => $time, 'event' => $event));
}
}
// delete event
function deleteEvent($year, $month, $day, $id){
$this->db->delete("event_detail", array('idevent' => $id, 'event_date' => "$year-$month-$day"));
$check = $this->db->query('SELECT count(*) as total FROM event_detail WHERE event_date = ?', array("$year-$month-$day"))->row();
if($check->total > 0){
$this->db->update('events', array('total_events' => $check->total), array('event_date' => "$year-$month-$day"));
}else{
$this->db->delete("events", array('event_date' => "$year-$month-$day"));
}
return $check->total;
}
}
</pre>
<br />
and for the view, just have 2 views in this application<br />
first view, <b>index.php</b><br />
<pre class="brush:php"><html lang="en">
<head>
<meta charset="utf-8">
<title>My Event Calendar (Evencal)</title>
<link rel="stylesheet" type="text/css" href="<?php echo base_url()?>css/style.css"/>
<link rel="stylesheet" type="text/css" href="<?php echo base_url();?>css/colorbox.css"/>
<script type="text/javascript" src="<?php echo base_url();?>js/jquery-1.7.2.min.js"></script>
<script type="text/javascript" src="<?php echo base_url();?>js/jquery.colorbox-min.js"></script>
</head>
<body>
<div id="evencal">
<div class="calendar">
<?php echo $notes?>
<span>by <a href="http://zawaruddin.blogspot.com"><strong>zawaruddin.blogspot.com</strong></a></span>
</div>
<div class="event_detail">
<h2 class="s_date">Detail Event <?php echo "$day $month $year";?></h2>
<div class="detail_event">
<?php
if(isset($events)){
$i = 1;
foreach($events as $e){
if($i % 2 == 0){
echo '<div class="info1"><h4>'.$e['time'].'<img src="'.base_url().'css/images/delete.png" class="delete" alt="" title="delete this event" day="'.$day.'" val="'.$e['id'].'" /></h4><p>'.$e['event'].'</p></div>';
}else{
echo '<div class="info2"><h4>'.$e['time'].'<img src="'.base_url().'css/images/delete.png" class="delete" alt="" title="delete this event" day="'.$day.'" val="'.$e['id'].'" /></h4><p>'.$e['event'].'</p></div>';
}
$i++;
}
}else{
echo '<div class="message"><h4>No Event</h4><p>There\'s no event in this date</p></div>';
}
?>
<input type="button" name="add" value="Add Event" val="<?php echo $day;?>" class="add_event"/>
</div>
</div>
</div>
<script>
$(".detail").live('click',function(){
$(".s_date").html("Detail Event for "+$(this).attr('val')+" <?php echo "$month $year";?>");
var day = $(this).attr('val');
var add = '<input type="button" name="add" value="Add Event" val="'+day+'" class="add_event"/>';
$.ajax({
type: 'post',
dataType: 'json',
url: "<?php echo site_url("evencal/detail_event");?>",
data:{<?php echo "year: $year, mon: $mon";?>, day: day},
success: function( data ) {
var html = '';
if(data.status){
var i = 1;
$.each(data.data, function(index, value) {
if(i % 2 == 0){
html = html+'<div class="info1"><h4>'+value.time+'<img src="<?php echo base_url();?>css/images/delete.png" class="delete" alt="" title="delete this event" day="'+day+'" val="'+value.id+'" /></h4><p>'+value.event+'</p></div>';
}else{
html = html+'<div class="info2"><h4>'+value.time+'<img src="<?php echo base_url();?>css/images/delete.png" class="delete" alt="" title="delete this event" day="'+day+'" val="'+value.id+'" /></h4><p>'+value.event+'</p></div>';
}
i++;
});
}else{
html = '<div class="message"><h4>'+data.title_msg+'</h4><p>'+data.msg+'</p></div>';
}
html = html+add;
$( ".detail_event" ).fadeOut("slow").fadeIn("slow").html(html);
}
});
});
$(".delete").live("click", function() {
if(confirm('Are you sure delete this event ?')){
var deleted = $(this).parent().parent();
var day = $(this).attr('day');
var add = '<input type="button" name="add" value="Add Event" val="'+day+'" class="add_event"/>';
$.ajax({
type: 'POST',
dataType: 'json',
url: "<?php echo site_url("evencal/delete_event");?>",
data:{<?php echo "year: $year, mon: $mon";?>, day: day,del: $(this).attr('val')},
success: function(data) {
if(data.status){
if(data.row > 0){
$('.d'+day).html(data.row);
}else{
$('.d'+day).html('');
$( ".detail_event" ).fadeOut("slow").fadeIn("slow").html('<div class="message"><h4>'+data.title_msg+'</h4><p>'+data.msg+'</p></div>'+add);
}
deleted.remove();
}else{
alert('an error for deleting event');
}
}
});
}
});
$(".add_event").live('click', function(){
$.colorbox({
overlayClose: false,
href: '<?php echo site_url('evencal/add_event');?>',
data:{year:<?php echo $year;?>,mon:<?php echo $mon;?>, day: $(this).attr('val')}
});
});
</script>
</body>
</html>
</pre>
<br />
and second view for add event form, <b>add_event.php</b> <br />
<pre class="brush:php"><?php
$h = '<select name="hour" id="hour">';
$m = '<select name="minute" id="minute">';
for($i = 0; $i< 60; $i++){
if($i < 24){
$h .= '<option value="'.(($i > 9)? $i : "0$i").'">'.(($i > 9)? $i : "0$i").'</option>';
}
$m .= '<option value="'.(($i > 9)? $i : "0$i").'">'.(($i > 9)? $i : "0$i").'</option>';
}
$h .= '</select>';
$m .= '</select>';
?>
<div style="width:500px; height:135px; overflow:auto; color:#000000; margin-bottom:20px;" align="center">
<h4>Adding event for <?php echo "$day $month $year"?></h4>
<div class="spacer"></div>
<table>
<tr><td>Time <span class="require">*</span></td><td>:</td><td><?php echo "$h&nbsp;:&nbsp;$m";?>&nbsp;:&nbsp;<select name="second" disabled><option value="00">00</option></select></td></tr>
<tr><td>Event <span class="require">*</span></td><td>:</td><td><input type="text" name="event" id="event" maxlength="50" size="50" /></td></tr>
<tr><td colspan="2"></td><td><input type="button" name="cancel" value="Cancel" class="cancel">&nbsp;&nbsp;
<input type="button" name="save" value="Save" class="save"></td></tr>
</table>
<script>
$('.cancel').click(function(){
var data = false;
$.fn.colorbox.close(data);
});
$('.save').click(function(){
if($('#event').val().length > 0){
$.ajax({
type: 'POST',
dataType: 'json',
url: "<?php echo site_url("evencal/do_add");?>",
data:{<?php echo "year:$year,mon:$mon,day:$day";?>, hour:$('#hour').val(), minute: $('#minute').val(), event:$('#event').val()},
success: function(data) {
if(data.status){
//$.fn.colorbox.close(data);
window.location = '<?php echo site_url("evencal/detail/$year/$mon/$day")?>';
}else{
$('.spacer').html(data.message);
}
}
});
}else{
$('.spacer').html('Please complete the field')
$('#event').attr('class','error_require');
}
});
</script>
</div>
</pre>
<br />
and last, for autoload component in codeigniter<br />
<pre class="brush:php">$autoload['libraries'] = array('database','form_validation');
$autoload['helper'] = array('url','form','html');
</pre>
<br />
That's all about my sharing for <span style="color: blue;"><b>Multiple Event Calendar - Evencal</b></span> with codeigniter.<br />
Sorry about my english :D<br />
You can <span style="font-size: x-small;"><b>download </b></span>the source in <b><a href="https://github.com/zawaruddin/Evencal" target="_blank">my github repo</a></b>.<br />
<br />
<span style="color: red;"><span style="color: black;">Keywords : Codeigniter Multiple Event Calendar, </span></span><span style="color: red;"><span style="color: black;">Event Calendar, Calendar</span></span><br />
<br />
<span id="result_box" lang="en"><span class="hps">To</span> <span class="hps">appreciate the</span> <span class="hps">IPR</span> <span class="hps">(Intellectual Property Rights</span>), <span class="hps">reference sources</span> <span class="hps">that I use</span> <span class="hps">and</span> <span class="hps">I have learned</span> <span class="hps">will be displayed</span></span>.<br />
Referensi : <a href="http://ellislab.com/codeigniter/user-guide/libraries/calendar.html" target="_blank">Codeigniter User Guide</a>,<br />
<a href="http://www.paulund.co.uk/giveaway-10-css-notification-boxes-for-free">www.paulund.co.uk/giveaway-10-css-notification-boxes-for-free</a><br />
<a href="http://www.jacklmoore.com/colorbox">www.jacklmoore.com/colorbox</a><br />
Author :
Moch. Zawaruddin Abdullah, <a href="http://www.zawaruddin.blogspot.com/">www.zawaruddin.blogspot.com</a>
Mari Belajarhttp://www.blogger.com/profile/06328739015959696311noreply@blogger.com53tag:blogger.com,1999:blog-2140783511966573973.post-35715762206534126002013-04-10T10:44:00.002+07:002013-04-10T10:52:37.120+07:00PHP send email via GMAIL SMTP from localhostAt this time i want to share about how to send email using sendmail tools (in XAMPP) via GMAIL SMTP from localhost.<br />
<br />
First we must download sendmail tools with ssl (GMAIL SMTP recommend to use ssl connection). We can donwload at <a href="http://glob.com.au/sendmail">glob.com.au/sendmail</a> or in my backup <a href="https://docs.google.com/file/d/0B-GWx1nm1t0SZWdDbzl1dXgwaFk/edit?usp=sharing">here</a>. Then extract the file to C:\\XAMPP\sendmail<br />
Open sendmail.ini and edit code like this<br />
<pre class="brush:sql">smtp_server=smtp.gmail.com
smtp_port=587
error_logfile=error.log
debug_logfile=debug.log
auth_username=xxx@gmail.com
auth_password=xxx
</pre>
you can ignore other code in sendmail.ini,<br />
<br />
Open php.ini, find word with key "[mail function]" then edit like this<br />
<pre class="brush:php">[mail function]
; For Win32 only.
; http://php.net/smtp
;SMTP = localhost
; http://php.net/smtp-port
;smtp_port = 25
; For Win32 only.
; http://php.net/sendmail-from
;sendmail_from = postmaster@localhost
; For Unix only. You may supply arguments as well (default: "sendmail -t -i").
; http://php.net/sendmail-path
sendmail_path = "\"C:\xampp\sendmail\sendmail.exe\" -t"
; Force the addition of the specified parameters to be passed as extra parameters
; to the sendmail binary. These parameters will always replace the value of
; the 5th parameter to mail(), even in safe mode.
;mail.force_extra_parameters =
; Add X-PHP-Originating-Script: that will include uid of the script followed by the filename
mail.add_x_header = Off
; Log all mail() calls including the full path of the script, line #, to address and headers
;mail.log = "C:\xampp\php\logs\php_mail.log"
</pre>
save php.ini and restart your apache.<br />
<br />
Now, test to send an email<br />
<pre class="brush:php"><?php
$headers = 'MIME-Version: 1.0' . "\r\n";
$headers .= 'Content-type: text/html; charset=iso-8859-1' . "\r\n";
$headers = 'From: administrator<sender@test.jp>' . "\r\n";
$headers .= 'Reply To: no-reply@test.jp' . "\r\n";
$message = "仮登録いただき、ありがとうございます。";
mail('receiver', '仮登録完了のお知らせ', $message, $headers); // using sendmail + ssl for send an email.
?>
</pre>
that's all.<br />
I hope it can help you for send email via GMAIL SMTP from localhost. :)<br />
<br />
Sorry about my english :D<br />
<br />
<span style="color: red;"><span style="color: black;">Keyword : php mail, sendmail, email</span></span><br />
<br />
<span class="" id="result_box" lang="en"><span class="hps">To</span> <span class="hps">appreciate the</span> <span class="hps">IPR</span> <span class="hps">(Intellectual Property Rights</span>), <span class="hps">reference sources</span> <span class="hps">that I use</span> <span class="hps">and</span> <span class="hps">I have learned</span> <span class="hps">will be displayed</span></span>.<br />
Referensi : <a href="http://forums.devshed.com/mail-server-help-111/how-to-set-up-php-ini-to-send-mail-from-106329.html">forums.devshed.com/mail-server-help-111</a>, <a href="http://php.net/">php.net</a>, <a href="http://stackoverflow.com/">stackoverflow.com</a>, <a href="http://blog.rosihanari.net/cara-mengirim-email-dengan-script-php-di-localhost-via-xampp">blog.rosihanari.net/cara-mengirim-email-dengan-script-php-di-localhost-via-xampp</a><br />
Author :
Moch. Zawaruddin Abdullah, www.zawaruddin.blogspot.com
Mari Belajarhttp://www.blogger.com/profile/06328739015959696311noreply@blogger.com7tag:blogger.com,1999:blog-2140783511966573973.post-72858902608219400752013-04-10T09:46:00.001+07:002013-04-10T09:50:29.294+07:00Instal Framework Yii di WindowsPada kali ini saya akan sharing tentang framework php selain Codeigniter yang beberapa hari ini baru saya pelajari yaitu framework Yii. (Hari gini baru blajar Yii.... sama :P)<br />
<br />
Kali ini saya akan membahas mengenai tahap instalali dan setting dasar framework Yii sesuai dengan yang saya pelajari. Jadi mohon maaf apabila ada bagian yang sekiranya salah, maklum baru belajar.. hehehe :)<br />
<br />
langsung saja, pertama-tama yang dibutuhkan adalah<br />
<ol>
<li>framework Yii, bisa di download <a href="http://www.yiiframework.com/download/">www.yiiframework.com</a>. untuk sekarang yang saya pakai adalah Yii 1.1.13 bisa didapat juga <a href="https://docs.google.com/file/d/0B-GWx1nm1t0SRzMxMHNQTFo2a3M/edit?usp=sharing">di sini</a> </li>
<li>web server, untuk web server saya pake XAMPP 1.7.7</li>
</ol>
<span style="background-color: #cccccc;">Setelah download framework Yii, ekstrak file zip ke dalam folder htdocs yang ada pada XAMPP web server, kemudian rename foldernya menjadi yii.</span><br />
<br />
Selanjutnya lakukan proses membangun aplikasi web menggunakan Yii, caranya<br />
<ol>
<li>buka cmd, pindah ke path C:\\xampp\htdocs</li>
<li>ketik yii\framework\yiic webapp coba_yii</li>
<li>apabila terdapat message "<span style="color: red;"><span style="background-color: red;"><span style="background-color: white;">'"php.exe"' is not recognized as an internal or external command, operable program or batch file.</span></span></span><span style="background-color: white;">" <div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiVwmGhp5huu4SgWW0GsBUU_A5rtg1y2hjBmexLbC-O2FS0N_LGEQqwf-Rj0ZfSMgqkZBwaN3-icr-ek4936p4BcrM8Q8FsAMyyWjvZbb-ybmA4vwmMriDb0nsnvckt7sBntzck9EQF2V6t/s1600/1.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="201" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiVwmGhp5huu4SgWW0GsBUU_A5rtg1y2hjBmexLbC-O2FS0N_LGEQqwf-Rj0ZfSMgqkZBwaN3-icr-ek4936p4BcrM8Q8FsAMyyWjvZbb-ybmA4vwmMriDb0nsnvckt7sBntzck9EQF2V6t/s400/1.png" width="400" /></a></div>
</span></li>
<li><span style="background-color: white;">l</span>akukan langkah berikut </li>
</ol>
<ul>
<li>tutup cmd, klik <b>START</b>, klik kanan <b>computer</b>, klik <b>propertise</b></li>
<li>pilih <b>advanced system setting</b>, kemudian buka "<b>environment variables</b>"</li>
<li>kemudian buat variabel PATH baru atau edit jika sudah ada dan isikan nilai "C:\xampp\php"(untuk lebih enaknya masukin aja ke user variable dan system variable... hehe)<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh7MOOYPs0jeGhNq6nwkR4Z1_a9JSWO87nGZLJ-WRqHOjAoRBBKVwBjmT6joGpC9sII43IkRGRx_UkrXOwsJ6C1aOrVnOkdGJXP7NcJZB8vIYfyG8Qng5bPSjyqSHpWO6CyDZso9Pu_FrZG/s1600/2.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="320" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh7MOOYPs0jeGhNq6nwkR4Z1_a9JSWO87nGZLJ-WRqHOjAoRBBKVwBjmT6joGpC9sII43IkRGRx_UkrXOwsJ6C1aOrVnOkdGJXP7NcJZB8vIYfyG8Qng5bPSjyqSHpWO6CyDZso9Pu_FrZG/s320/2.png" width="289" /></a></div>
</li>
</ul>
<ul>
<li>klik ok, keluar dari system propertise, buka kembali cmd,</li>
<li>lakukan kembali proses ke 2.</li>
</ul>
Apabila proses generate aplikasi <b>berhasil</b>, maka akan terdapat folder "coba_yii" didalam folder C:\\xampp\htdocs. <br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhXDKGpNhwjQgLkWwIJD0yYd6vBxYQmEddYgqnjeufA57cx0O642afmIZtTv58_nEyuILskbh5Q6gnoncRdDMoekUvSOnlLyrPNAxmLqTnuIlnhXm_VDM2O7oMP6P312JBgdKMEqKrWGMXB/s1600/3.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="243" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhXDKGpNhwjQgLkWwIJD0yYd6vBxYQmEddYgqnjeufA57cx0O642afmIZtTv58_nEyuILskbh5Q6gnoncRdDMoekUvSOnlLyrPNAxmLqTnuIlnhXm_VDM2O7oMP6P312JBgdKMEqKrWGMXB/s400/3.png" width="400" /></a></div>
<br />
(<b>OPTIONAL</b>) untuk kenyamanan atau suka menggabungkan framework Yii dengan aplikasi yang dibuat, copy kan folder yii tadi ke dalam folder coba_yii , kemudian buka file index.php yang ada di folder coba_yii, edit bagian<br />
<pre class="brush:php">$yii=dirname(__FILE__).'/../yii/framework/yii.php';
menjadi
$yii=dirname(__FILE__).'/yii/framework/yii.php';</pre>
Sekarang coba jalankan aplikasi memanggil alamat "localhost\coba_yii"<br />
Selamat mencoba<br />
<br />
<span style="color: red;"><span style="color: black;">Keyword : Instalasi Yii, install Yii, Yii Windows</span></span><br />
<br />
Untuk
menghargai HKI(Hak Kekayaan Intelektual), sumber referensi yang saya
pakai dan saya pelajari akan ditampilkan.<br />
Referensi : <a href="http://www.yiiframework.com/">www.yiiframework.com</a>, <a href="http://antik.web.id/instal-framework-yii-di-xampp-windows-7/">antik.web.id</a>, <br />
Author :
Moch. Zawaruddin Abdullah, www.zawaruddin.blogspot.com
Mari Belajarhttp://www.blogger.com/profile/06328739015959696311noreply@blogger.com4tag:blogger.com,1999:blog-2140783511966573973.post-45958704810462672122012-12-28T20:38:00.002+07:002022-03-04T23:22:00.868+07:00Event Calendar with CodeigniterAt this time i'll share about create event calendar with Codeigniter. I use Codeigniter 2.1.3 to create it. well, it's my first calendar... XD<br />
<br />
<div style="text-align: center;">
<a href="http://zawaruddin.nextinspiration.us/mynotes/index.php/mynotes/notes" style="color: blue;" target="_blank"><b>DEMO</b></a></div>
the screenshot : <br />
<br />
<div class="separator" style="clear: both; text-align: center;">
</div>
<div class="separator" style="clear: both; text-align: center;">
</div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh250Yu_CxzI9LW55bWUSmmuLjKoP7RXkay8ACcQoRTUs2XfyWcVI83kQ-71ItYQaLARUR3i34RogrFxB0DHT5_w-krk3QJrUSijjC2bRk6Pqea51Z9L_stEam-JJ6kTd_v78U7OORwopnO/s1600/kalender.png" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh250Yu_CxzI9LW55bWUSmmuLjKoP7RXkay8ACcQoRTUs2XfyWcVI83kQ-71ItYQaLARUR3i34RogrFxB0DHT5_w-krk3QJrUSijjC2bRk6Pqea51Z9L_stEam-JJ6kTd_v78U7OORwopnO/s1600/kalender.png" /></a></div>
<br />
First, we should create a database tabl<b>e</b><br />
<pre class="brush:sql">CREATE TABLE t_notes (
`date` DATE NOT NULL,
notes VARCHAR(30) NOT NULL,
PRIMARY KEY (`date`)
)</pre>
<br />
and then, make sure configuration of database and autoload (database, url, form) has been set.<br />
The <b>controller</b>, mynotes.php :<br />
<pre class="brush:php"><?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');
class Mynotes extends CI_Controller {
function __construct(){
parent::__construct();
$this->load->model('mynotes_model', 'mynotes');
$this->load->library('calendar', $this->_setting());
}
function index(){
redirect('mynotes/notes');
}
// untuk konversi nama bulan
function _month($mon){
$mon = (int) $mon;
switch($mon){
case 1 : $mon = 'Januari'; Break;
case 2 : $mon = 'Februari'; Break;
case 3 : $mon = 'Maret'; Break;
case 4 : $mon = 'April'; Break;
case 5 : $mon = 'Mei'; Break;
case 6 : $mon = 'Juni'; Break;
case 7 : $mon = 'Juli'; Break;
case 8 : $mon = 'Agustus'; Break;
case 9 : $mon = 'September'; Break;
case 10 : $mon = 'Oktober'; Break;
case 11 : $mon = 'November'; Break;
case 12 : $mon = 'Desember'; Break;
}
return $mon;
}
// untuk menambahkan catatan pada tanggal
function add_note($date){
$data = array(
'day' => $date,
'mon' => $this->input->post('mon'),
'month' => $this->_month($this->input->post('mon')),
'year' => $this->input->post('year'),
);
$this->load->view('add_note', $data);
}
// aksi insert catatan
function do_add($year, $mon, $day){
$this->mynotes->addNote($year, $mon, $day, $this->input->post('note', true));
$this->notes($year, $mon);
}
// menampilkan opsi untuk menghapus atau edit catatan
function updel_note($date){
$data = array(
'day' => $date,
'mon' => $this->input->post('mon'),
'month' => $this->_month($this->input->post('mon')),
'year' => $this->input->post('year'),
'note' => $this->mynotes->getNote($this->input->post('year'), $this->input->post('mon'), $date)
);
$this->load->view('updel_note', $data);
}
// aksi untuk edit catatan
function edit_note($year, $mon, $day){
$this->mynotes->editNote($year, $mon, $day, $this->input->post('note', true));
$this->notes($year, $mon);
}
// aksi untuk hapus catatan
function delete_note($year, $mon, $day){
$this->mynotes->deleteNote($year, $mon, $day);
$this->notes($year, $mon);
}
// fungsi utama untuk menampilkan kalender catatan
function notes($year = null, $mon = null){
$year = (empty($year) || !is_numeric($year))? date('Y') : $year;
$mon = (empty($mon) || !is_numeric($mon))? date('m') : $mon;
$date = $this->mynotes->getCalendar($year, $mon);
$data = array(
'notes' => $this->calendar->generate($year, $mon, $date),
'year' => $year,
'mon' => $mon
);
$this->load->view('mynotes', $data);
}
// setting tampilan kalender
function _setting(){
return array(
'start_day' => 'sunday',
'show_next_prev' => true,
'next_prev_url' => site_url('mynotes/notes'),
'month_type' => 'long',
'day_type' => 'short',
'template' => '{table_open}<table class="date">{/table_open}
{heading_row_start}&nbsp;{/heading_row_start}
{heading_previous_cell}<caption><a href="{previous_url}" class="prev_date" title="Previous Month">&lt;&lt;</a>{/heading_previous_cell}
{heading_title_cell}{heading}{/heading_title_cell}
{heading_next_cell}<a href="{next_url}" class="next_date" title="Next Month">&gt;&gt;</a></caption>{/heading_next_cell}
{heading_row_end}<col class="weekend_sun"><col class="weekday" span="5"><col class="weekend_sat">{/heading_row_end}
{week_row_start}<thead><tr>{/week_row_start}
{week_day_cell}<th>{week_day}</th>{/week_day_cell}
{week_row_end}</tr></thead><tbody>{/week_row_end}
{cal_row_start}<tr>{/cal_row_start}
{cal_cell_start}<td>{/cal_cell_start}
{cal_cell_content}<a href="'.site_url('mynotes/updel_note').'/{day}" class="act_note" title="Edit/hapus catatan untuk tanggal {day}"><div class="active act_note" val="{day}" title="Edit/Hapus catatan untuk tanggal {day}">{day}</div></a><div class="notes">{content}</div></div>{/cal_cell_content}
{cal_cell_content_today}<a href="'.site_url('mynotes/updel_note').'/{day}" class="act_note" title="Edit/hapus catatan untuk tanggal {day}"><div class="t_active" title="Edit/Hapus catatan untuk tanggal {day}">{day}</div></a><div class="t_notes">{content}</div>{/cal_cell_content_today}
{cal_cell_no_content}<a href="'.site_url('mynotes/add_note').'/{day}" class="act_note" title="Tambah catatan untuk tanggal {day}"><div class="day" title="Tambah catatan untuk tanggal {day}">{day}</div></a>{/cal_cell_no_content}
{cal_cell_no_content_today}<a href="'.site_url('mynotes/add_note').'/{day}" class="act_note" title="Tambah catatan untuk tanggal {day}"><div class="today" title="Tambah catatan untuk tanggal {day}">{day}</div></a>{/cal_cell_no_content_today}
{cal_cell_blank}&nbsp;{/cal_cell_blank}
{cal_cell_end}</td>{/cal_cell_end}
{cal_row_end}</tr>{/cal_row_end}
{table_close}</tbody></table>{/table_close}');
}
}
</pre>
<br />
next step is about <b>model, </b> mynotes_model.php
<br />
<pre class="brush:php"><?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');
class Mynotes_model extends CI_Model {
function getCalendar($year, $mon){
$year = ($mon < 9 && strlen($mon) == 1) ? "$year-0$mon" : "$year-$mon";
$query = $this->db->select('date, notes')->from('t_notes')->like('date', $year, 'after')->get();
if($query->num_rows() > 0){
$data = array();
foreach($query->result_array() as $row){
$data[(int) end(explode('-',$row['date']))] = $row['notes'];
}
return $data;
}else{
return false;
}
}
function addNote($year, $mon, $day, $note){
$mon = (strlen($mon) == 2)? $mon : "0$mon";
$day = (strlen($day) == 2)? $day : "0$day";
$this->db->query("INSERT INTO t_notes(date, notes) VALUES ('$year-$mon-$day', ?)", array($note));
}
function editNote($year, $mon, $day, $note){
$mon = (strlen($mon) == 2)? $mon : "0$mon";
$day = (strlen($day) == 2)? $day : "0$day";
$this->db->query("UPDATE t_notes SET notes = ? WHERE date = '$year-$mon-$day'", array($note));
}
function deleteNote($year, $mon, $day){
$mon = (strlen($mon) == 2)? $mon : "0$mon";
$day = (strlen($day) == 2)? $day : "0$day";
$this->db->query("DELETE FROM t_notes WHERE date = '$year-$mon-$day'");
}
function getNote($year, $mon, $day){
$mon = (strlen($mon) == 2)? $mon : "0$mon";
$day = (strlen($day) == 2)? $day : "0$day";
$query = $this->db->query("SELECT notes FROM t_notes WHERE date = '$year-$mon-$day'");
if($query->num_rows() == 1){
$query = $query->row_array();
return $query['notes'];
}else{
return false;
}
}
}?>
</pre>
<br />
and then, final step, it's about view. There're 3 files in view to display the calendar<br />
<ol>
<li>mynotes.php (to display the main page)</li>
<li>add_note.php (to adding the event), and</li>
<li>updel_note.php (to update or delete event) </li>
</ol>
<span style="color: magenta;"><b>Remember </b></span>this calendar require <span style="color: blue;">jquery </span>and <span style="color: blue;">jquery colorbox</span>.<br />
for <b>mynotes.php</b> :
<br />
<pre class="brush:php"><html lang="en">
<head>
<meta charset="utf-8">
<title>My Calendar</title>
<link rel="stylesheet" type="text/css" href="<?php echo base_url()?>css/style.css"/>
<link rel="stylesheet" type="text/css" href="<?php echo base_url();?>css/colorbox.css"/>
<script type="text/javascript" src="<?php echo base_url();?>js/jquery-1.7.2.min.js"></script>
<script type="text/javascript" src="<?php echo base_url();?>js/jquery.colorbox-min.js"></script>
</head>
<body>
<div align="center">
<?php echo $notes?>
<span> by Cemplux</span>
</div>
<script>
$(function(){
$(".act_note").colorbox({
overlayClose: false,
data:{year:<?php echo $year;?>,mon:<?php echo $mon;?>}
});
});
</script>
</body>
</html>
</pre>
<br />
next view file, <b>add_note.php</b> :
<br />
<pre class="brush:php"><div style="width:500px; height:130px; overflow:auto; color:#000000; margin-bottom:20px;" align="center">
<h4>Tambah catatan untuk tanggal <?php echo "$day $month $year"?></h4>
<?php echo form_open("mynotes/do_add/$year/$mon/$day");?>
<table>
<tr><td>Note</td><td>:</td><td><input type="text" name="note" maxlength="30" size="40" /></td></tr>
<tr><td colspan="2"></td><td><input type="button" name="Batal" value="Batal" class="cancel">&nbsp;&nbsp;
<input type="submit" name="OK" value="OK"></td></tr>
</table>
</form>
<script>
$('.cancel').click(function(){
var data = false;
$.fn.colorbox.close(data);
});
</script>
</div>
</pre>
<br />
and then the last view file, <b>updel_note.php</b> :
<br />
<pre class="brush:php"><div style="width:500px; height:130px; overflow:auto; color:#000000; margin-bottom:20px;" align="center">
<h4>Edit/hapus catatan untuk tanggal <?php echo "$day $month $year"?></h4>
<?php echo form_open("mynotes/edit_note/$year/$mon/$day", ' class="submit"');?>
<table>
<tr><td>Note</td><td>:</td><td><input type="text" name="note" maxlength="30" size="40" value="<?php echo $note?>" /></td></tr>
<tr><td colspan="2"></td><td><input type="button" name="Batal" value="Batal" class="cancel">&nbsp;&nbsp;
<input type="submit" name="OK" value="OK">&nbsp;&nbsp;
<a href="<?php echo site_url("mynotes/delete_note/$year/$mon/$day")?>" title="hapus note">
<input type="button" name="hapus" value="Hapus" class="del"></a></td>
</tr>
</table>
</form>
<script>
$('.cancel').click(function(){
var data = false; $.fn.colorbox.close(data);
});
$('.del').click(function(){
if(confirm('hapus catatan?')){ return true; }else{ return false;}
})
$('.submit').submit(function(){
if(confirm('edit catatan?')){ return true; }else{ return false; }
})
</script>
</div>
</pre>
<br />
This is it my sharing about event calendar with codeigniter.<br />
Sorry about my english :D<br />
You can <span style="font-size: small;"><b>download </b></span>the source <a href="https://docs.google.com/file/d/0B-GWx1nm1t0SWmkxQ2FsQTNCa0U/edit?usp=sharing" target="_blank">here</a> or via <a href="https://github.com/zawaruddin/MyNotes" target="_blank">github</a>.<br />
<br />
<span style="color: red;"><span style="color: black;">Keyword : Codeigniter Event Calendar, </span></span>calendar <br />
<br />
<span id="result_box" lang="en"><span class="hps">To</span> <span class="hps">appreciate the</span> <span class="hps">IPR</span> <span class="hps">(Intellectual Property Rights</span>), <span class="hps">reference sources</span> <span class="hps">that I use</span> <span class="hps">and</span> <span class="hps">I have learned</span> <span class="hps">will be displayed</span></span>.<br />
Referensi : <a href="http://ellislab.com/codeigniter/user-guide/libraries/calendar.html" target="_blank">Codeigniter User Guide - Calendar Library</a>, <a href="http://www.java2s.com/Code/HTMLCSS/CSS-Controls/Calendarwithtable.htm">www.java2s.com/Code/HTMLCSS/CSS-Controls/Calendarwithtable.htm</a><br />
Author :
Moch. Zawaruddin Abdullah, www.zawaruddin.blogspot.comMari Belajarhttp://www.blogger.com/profile/06328739015959696311noreply@blogger.com18tag:blogger.com,1999:blog-2140783511966573973.post-14479988422734439022012-12-28T20:20:00.002+07:002022-03-04T23:21:36.321+07:00Kalender Catatan/Acara dengan Codeigniter<i><span style="color: red;"><span style="color: black;">Event Calendar</span></span> with Codeigniter</i><br />
<br />
Pada kali ini saya akan berbagi tentang cara membuat kalender catatan atau kalender acara dengan menggunakan Codeigniter dan database MySQL.<br />
<div style="text-align: center;">
<a href="http://zawaruddin.nextinspiration.us/mynotes/index.php/mynotes/notes" target="_blank"><b style="color: blue;">DEMO</b></a> </div>
<br />
Srceenshot nya :<br />
<div class="separator" style="clear: both; text-align: center;">
</div>
<div class="separator" style="clear: both; text-align: center;">
</div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh250Yu_CxzI9LW55bWUSmmuLjKoP7RXkay8ACcQoRTUs2XfyWcVI83kQ-71ItYQaLARUR3i34RogrFxB0DHT5_w-krk3QJrUSijjC2bRk6Pqea51Z9L_stEam-JJ6kTd_v78U7OORwopnO/s1600/kalender.png" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh250Yu_CxzI9LW55bWUSmmuLjKoP7RXkay8ACcQoRTUs2XfyWcVI83kQ-71ItYQaLARUR3i34RogrFxB0DHT5_w-krk3QJrUSijjC2bRk6Pqea51Z9L_stEam-JJ6kTd_v78U7OORwopnO/s1600/kalender.png" /></a></div>
<br />
Pertama-tama kita siapkan <b>database</b>-nya. Cukup simpel hanya butuh <b>1 tabel</b> dan <b>2 atribut</b><br />
<pre class="brush:sql">CREATE TABLE t_notes (
`date` DATE NOT NULL,
notes VARCHAR(30) NOT NULL,
PRIMARY KEY (`date`)
)</pre>
<br />
Selanjutnya kita buat <b>controller</b>-nya (mynotes.php), tp sebelumnya silahkan set <b>konfigurasi</b> codeigniter untuk database dan <b>autoload</b> untuk library (databse) dan helper (url, form).<br />
<pre class="brush:php"><?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');
class Mynotes extends CI_Controller {
function __construct(){
parent::__construct();
$this->load->model('mynotes_model', 'mynotes');
$this->load->library('calendar', $this->_setting());
}
function index(){
redirect('mynotes/notes');
}
// untuk konversi nama bulan
function _month($mon){
$mon = (int) $mon;
switch($mon){
case 1 : $mon = 'Januari'; Break;
case 2 : $mon = 'Februari'; Break;
case 3 : $mon = 'Maret'; Break;
case 4 : $mon = 'April'; Break;
case 5 : $mon = 'Mei'; Break;
case 6 : $mon = 'Juni'; Break;
case 7 : $mon = 'Juli'; Break;
case 8 : $mon = 'Agustus'; Break;
case 9 : $mon = 'September'; Break;
case 10 : $mon = 'Oktober'; Break;
case 11 : $mon = 'November'; Break;
case 12 : $mon = 'Desember'; Break;
}
return $mon;
}
// untuk menambahkan catatan pada tanggal
function add_note($date){
$data = array(
'day' => $date,
'mon' => $this->input->post('mon'),
'month' => $this->_month($this->input->post('mon')),
'year' => $this->input->post('year'),
);
$this->load->view('add_note', $data);
}
// aksi insert catatan
function do_add($year, $mon, $day){
$this->mynotes->addNote($year, $mon, $day, $this->input->post('note', true));
$this->notes($year, $mon);
}
// menampilkan opsi untuk menghapus atau edit catatan
function updel_note($date){
$data = array(
'day' => $date,
'mon' => $this->input->post('mon'),
'month' => $this->_month($this->input->post('mon')),
'year' => $this->input->post('year'),
'note' => $this->mynotes->getNote($this->input->post('year'), $this->input->post('mon'), $date)
);
$this->load->view('updel_note', $data);
}
// aksi untuk edit catatan
function edit_note($year, $mon, $day){
$this->mynotes->editNote($year, $mon, $day, $this->input->post('note', true));
$this->notes($year, $mon);
}
// aksi untuk hapus catatan
function delete_note($year, $mon, $day){
$this->mynotes->deleteNote($year, $mon, $day);
$this->notes($year, $mon);
}
// fungsi utama untuk menampilkan kalender catatan
function notes($year = null, $mon = null){
$year = (empty($year) || !is_numeric($year))? date('Y') : $year;
$mon = (empty($mon) || !is_numeric($mon))? date('m') : $mon;
$date = $this->mynotes->getCalendar($year, $mon);
$data = array(
'notes' => $this->calendar->generate($year, $mon, $date),
'year' => $year,
'mon' => $mon
);
$this->load->view('mynotes', $data);
}
// setting tampilan kalender
function _setting(){
return array(
'start_day' => 'sunday',
'show_next_prev' => true,
'next_prev_url' => site_url('mynotes/notes'),
'month_type' => 'long',
'day_type' => 'short',
'template' => '{table_open}<table class="date">{/table_open}
{heading_row_start}&nbsp;{/heading_row_start}
{heading_previous_cell}<caption><a href="{previous_url}" class="prev_date" title="Previous Month">&lt;&lt;</a>{/heading_previous_cell}
{heading_title_cell}{heading}{/heading_title_cell}
{heading_next_cell}<a href="{next_url}" class="next_date" title="Next Month">&gt;&gt;</a></caption>{/heading_next_cell}
{heading_row_end}<col class="weekend_sun"><col class="weekday" span="5"><col class="weekend_sat">{/heading_row_end}
{week_row_start}<thead><tr>{/week_row_start}
{week_day_cell}<th>{week_day}</th>{/week_day_cell}
{week_row_end}</tr></thead><tbody>{/week_row_end}
{cal_row_start}<tr>{/cal_row_start}
{cal_cell_start}<td>{/cal_cell_start}
{cal_cell_content}<a href="'.site_url('mynotes/updel_note').'/{day}" class="act_note" title="Edit/hapus catatan untuk tanggal {day}"><div class="active act_note" val="{day}" title="Edit/Hapus catatan untuk tanggal {day}">{day}</div></a><div class="notes">{content}</div></div>{/cal_cell_content}
{cal_cell_content_today}<a href="'.site_url('mynotes/updel_note').'/{day}" class="act_note" title="Edit/hapus catatan untuk tanggal {day}"><div class="t_active" title="Edit/Hapus catatan untuk tanggal {day}">{day}</div></a><div class="t_notes">{content}</div>{/cal_cell_content_today}
{cal_cell_no_content}<a href="'.site_url('mynotes/add_note').'/{day}" class="act_note" title="Tambah catatan untuk tanggal {day}"><div class="day" title="Tambah catatan untuk tanggal {day}">{day}</div></a>{/cal_cell_no_content}
{cal_cell_no_content_today}<a href="'.site_url('mynotes/add_note').'/{day}" class="act_note" title="Tambah catatan untuk tanggal {day}"><div class="today" title="Tambah catatan untuk tanggal {day}">{day}</div></a>{/cal_cell_no_content_today}
{cal_cell_blank}&nbsp;{/cal_cell_blank}
{cal_cell_end}</td>{/cal_cell_end}
{cal_row_end}</tr>{/cal_row_end}
{table_close}</tbody></table>{/table_close}');
}
}
</pre>
<br />
Selanjutnya untuk <b>model </b>dengan nama mynotes_model.php
<br />
<pre class="brush:php"><?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');
class Mynotes_model extends CI_Model {
function getCalendar($year, $mon){
$year = ($mon < 9 && strlen($mon) == 1) ? "$year-0$mon" : "$year-$mon";
$query = $this->db->select('date, notes')->from('t_notes')->like('date', $year, 'after')->get();
if($query->num_rows() > 0){
$data = array();
foreach($query->result_array() as $row){
$data[(int) end(explode('-',$row['date']))] = $row['notes'];
}
return $data;
}else{
return false;
}
}
function addNote($year, $mon, $day, $note){
$mon = (strlen($mon) == 2)? $mon : "0$mon";
$day = (strlen($day) == 2)? $day : "0$day";
$this->db->query("INSERT INTO t_notes(date, notes) VALUES ('$year-$mon-$day', ?)", array($note));
}
function editNote($year, $mon, $day, $note){
$mon = (strlen($mon) == 2)? $mon : "0$mon";
$day = (strlen($day) == 2)? $day : "0$day";
$this->db->query("UPDATE t_notes SET notes = ? WHERE date = '$year-$mon-$day'", array($note));
}
function deleteNote($year, $mon, $day){
$mon = (strlen($mon) == 2)? $mon : "0$mon";
$day = (strlen($day) == 2)? $day : "0$day";
$this->db->query("DELETE FROM t_notes WHERE date = '$year-$mon-$day'");
}
function getNote($year, $mon, $day){
$mon = (strlen($mon) == 2)? $mon : "0$mon";
$day = (strlen($day) == 2)? $day : "0$day";
$query = $this->db->query("SELECT notes FROM t_notes WHERE date = '$year-$mon-$day'");
if($query->num_rows() == 1){
$query = $query->row_array();
return $query['notes'];
}else{
return false;
}
}
}?>
</pre>
<br />
Tahap terakhir adalah view, untuk view terdapat 3 file yaitu<br />
<ol>
<li>mynotes.php (untuk tampilan utama)</li>
<li>add_note.php (untuk form tambah catatan), dan</li>
<li>updel_note.php (untuk form edit atau hapus catatan) </li>
</ol>
<span style="color: magenta;"><b>Perlu diingat </b></span>untuk tampilan form kalender mengunakan <span style="color: blue;">jquery </span>dan <span style="color: blue;">jquery colorbox</span>.<br />
untuk <b>mynotes.php</b> :
<br />
<pre class="brush:php"><html lang="en">
<head>
<meta charset="utf-8">
<title>My Calendar</title>
<link rel="stylesheet" type="text/css" href="<?php echo base_url()?>css/style.css"/>
<link rel="stylesheet" type="text/css" href="<?php echo base_url();?>css/colorbox.css"/>
<script type="text/javascript" src="<?php echo base_url();?>js/jquery-1.7.2.min.js"></script>
<script type="text/javascript" src="<?php echo base_url();?>js/jquery.colorbox-min.js"></script>
</head>
<body>
<div align="center">
<?php echo $notes?>
<span> by Cemplux</span>
</div>
<script>
$(function(){
$(".act_note").colorbox({
overlayClose: false,
data:{year:<?php echo $year;?>,mon:<?php echo $mon;?>}
});
});
</script>
</body>
</html>
</pre>
<br />
selanjutnya untuk <b>add_note.php</b> :
<br />
<pre class="brush:php"><div style="width:500px; height:130px; overflow:auto; color:#000000; margin-bottom:20px;" align="center">
<h4>Tambah catatan untuk tanggal <?php echo "$day $month $year"?></h4>
<?php echo form_open("mynotes/do_add/$year/$mon/$day");?>
<table>
<tr><td>Note</td><td>:</td><td><input type="text" name="note" maxlength="30" size="40" /></td></tr>
<tr><td colspan="2"></td><td><input type="button" name="Batal" value="Batal" class="cancel">&nbsp;&nbsp;
<input type="submit" name="OK" value="OK"></td></tr>
</table>
</form>
<script>
$('.cancel').click(function(){
var data = false;
$.fn.colorbox.close(data);
});
</script>
</div>
</pre>
<br />
dan yang terakhir untuk <b>updel_note.php</b> :
<br />
<pre class="brush:php"><div style="width:500px; height:130px; overflow:auto; color:#000000; margin-bottom:20px;" align="center">
<h4>Edit/hapus catatan untuk tanggal <?php echo "$day $month $year"?></h4>
<?php echo form_open("mynotes/edit_note/$year/$mon/$day", ' class="submit"');?>
<table>
<tr><td>Note</td><td>:</td><td><input type="text" name="note" maxlength="30" size="40" value="<?php echo $note?>" /></td></tr>
<tr><td colspan="2"></td><td><input type="button" name="Batal" value="Batal" class="cancel">&nbsp;&nbsp;
<input type="submit" name="OK" value="OK">&nbsp;&nbsp;
<a href="<?php echo site_url("mynotes/delete_note/$year/$mon/$day")?>" title="hapus note">
<input type="button" name="hapus" value="Hapus" class="del"></a></td>
</tr>
</table>
</form>
<script>
$('.cancel').click(function(){
var data = false; $.fn.colorbox.close(data);
});
$('.del').click(function(){
if(confirm('hapus catatan?')){ return true; }else{ return false;}
})
$('.submit').submit(function(){
if(confirm('edit catatan?')){ return true; }else{ return false; }
})
</script>
</div>
</pre>
<br />
Demikian <i>sharing</i> bagian inti dari kalender catatan. Untuk <i>source</i>-nya bisa di <b>download </b><a href="https://docs.google.com/file/d/0B-GWx1nm1t0SWmkxQ2FsQTNCa0U/edit?usp=sharing" target="_blank">disini</a> atau melalui <a href="https://github.com/zawaruddin/MyNotes" target="_blank">github</a>.<br />
<br />
<span style="color: red;"><span style="color: black;">Cukup sekian tips nya... :D</span></span><br />
<br />
<span style="color: red;"><span style="color: black;">Alhamdulillah bisa berbagi tips lagi... :D </span></span><br />
<br />
<span style="color: red;"><span style="color: black;">Keyword : Codeigniter Event Calendar, </span></span>Kalender acara, Codeigniter<br />
<br />
Untuk
menghargai HKI(Hak Kekayaan Intelektual), sumber referensi yang saya
pakai dan saya pelajari akan ditampilkan.<br />
Referensi : <a href="http://ellislab.com/codeigniter/user-guide/libraries/calendar.html" target="_blank">Codeigniter User Guide - Calendar Library</a>, <a href="http://www.java2s.com/Code/HTMLCSS/CSS-Controls/Calendarwithtable.htm">www.java2s.com/Code/HTMLCSS/CSS-Controls/Calendarwithtable.htm</a><br />
Author :
Moch. Zawaruddin Abdullah, www.zawaruddin.blogspot.comMari Belajarhttp://www.blogger.com/profile/06328739015959696311noreply@blogger.com34tag:blogger.com,1999:blog-2140783511966573973.post-83952256139008072362012-12-03T13:03:00.001+07:002013-01-08T12:08:48.023+07:00Codeigniter - SQL Server : PaginationCodeigniter Paginasi (<i>pagination</i>) untuk SQL Server .<br />
<br />
Pada kali ini saya mau sharing mengenai salah satu cara paginasi (<i>Pagination</i>) pada SQL Server<a href="https://docs.google.com/open?id=0B-GWx1nm1t0ScUlsa1JrbHhUUW8" target="_blank"></a>. Salah satunya dengan menggunakan <i>Common Table Expression</i> (CTE) yang disediakan SQL Server.<br />
<br />
Berbeda dengan query "Select TOP n * FROM table" yang hanya menampilkan data sebanyak n baris mulai dari baris pertama sampai baris n pada hasil query. CTE bisa dipakai mirip fungsi "limit" pada database MYSQL.<br />
<br />
Langsung saja, untuk <b>MODEL</b><br />
<br />
<pre class="brush:php">function getAllData($no_page){
$perpage = 20; // nilai $perpage disini sama dengan di $config['per_page']
if($no_page == 1){
$first = 1;
$last = $perpage;
}else{
$first = ($no_page - 1) * $perpage + 1;
$last = $first + ($perpage -1);
}
return $this->db->query("WITH CTE AS (
SELECT a.*,
ROW_NUMBER() OVER (ORDER BY a.id_tabel desc) as RowNumber
FROM tabel_data a
)
SELECT * FROM CTE WHERE RowNumber BETWEEN $first AND $last")->result_array();
}
function data_pagination($url, $rows = 10, $uri = 3){
$this->load->library('pagination');
$config['per_page'] = 20;
$config['base_url'] = site_url($url);
$config['total_rows'] = $rows;
$config['use_page_numbers'] = TRUE;
$config['uri_segment'] = $uri;
$config['num_links'] = 3;
$config['next_link'] = 'Next';
$config['prev_link'] = 'Previous';
// untuk config class pagination yg lainnya optional (suka2 lu.. :D )
$this->pagination->initialize($config);
return $this->pagination->create_links();
}
function getTotalRowAllData(){
$query = $this->db->query("SELECT count(*) as row FROM tabel_data")->row_array();
return $query['row'];
}</pre>
<br />
Tips : jika hanya untuk mendapatkan informasi jumlah baris data, lebih baik gunakan <br />
<pre class="brush:sql">SELECT COUNT (*) FROM table</pre>
pada query, <span style="color: red;"><b>jangan </b></span>menggunakan <br />
<pre class="brush:sql">SELECT * FROM table</pre>
terus pakai <br />
<pre class="brush:php">$query->num_rows()</pre>
pada sintaks PHP. Hal ini cukup boros dalam pemrosesan data. Jadi sayangkan, kalau hanya ingin tau jumlah suatu data, harus diambil semua datanya dari database baru dihitung baris satu persatu pada proses PHP nya. XD <br />
<br />
Selanjutnya untuk <b>CONTROLLER </b>nya<br />
<br />
<pre class="brush:php">function show_alldata($no_page = 1){
$data['page'] = $this->model->data_pagination("data/show_alldata",
$this->model->getTotalRowAllData(), 3);
$data['data'] = $this->model->getAllData($no_page);
$data['no_page'] = $no_page;
$this->load->view('template', $data);
}
</pre>
<br />
untuk <b>VIEW </b>nya bisa ditampilkan secara suka-suka lu, yang penting <span style="color: magenta;"><span style="color: blue;">untuk menampilkan data-nya</span> <span style="color: black;">ada di variabel</span> $data</span> dan<span style="color: magenta;"> <span style="color: blue;">untuk menampilkan halaman paginasi</span> <span style="color: black;">bisa di variabel</span> $page</span>.<br />
<pre class="brush:php"><div class="info">Menampilkan halaman <?php echo $no_page; ?> </div>
<table>
<tr>
<th>Data 1</th>
<th>Data 2</th>
<th>Data 3</th>
</tr>
<?php
foreach($data as $row){
echo '<tr><td>'.$row['data 1'].'</td><td>'.$row['data 1'].'</td><td>'.$row['data 1'].'</td></tr>';
}
?>
</table>
<div class="pagination"><?php echo $page; ?></div>
</pre>
<br />
<span style="color: red;"><span style="color: black;">Cukup sekian tips nya... :D</span></span><br />
<br />
<span style="color: red;"><span style="color: black;">Alhamdulillah bisa berbagi tips lagi... :D </span></span><br />
<br />
<span style="color: red;"><span style="color: black;">Keyword : SQL Server pagination , SQL Server paginasi, </span></span>Codeigniter SQL Server paginasi<br />
<br />
Untuk
menghargai HKI(Hak Kekayaan Intelektual), sumber referensi yang saya
pakai dan saya pelajari akan ditampilkan.<br />
Referensi : <a href="http://msdn.microsoft.com/">msdn.microsoft.com</a>, <a href="http://sqlserverplanet.com/">sqlserverplanet.com</a> <br />
Author :
Moch. Zawaruddin Abdullah, www.zawaruddin.blogspot.comMari Belajarhttp://www.blogger.com/profile/06328739015959696311noreply@blogger.com13tag:blogger.com,1999:blog-2140783511966573973.post-88393814712781376372012-10-11T11:22:00.001+07:002012-11-30T15:12:49.726+07:00Codeigniter - Ajax : Simple Upload File menggunakan jQuery Form PluginPada kali ini saya mau sharing mengenai salah satu cara upload file menggunakan Codeigniter dan jQuery. Untuk plugin jQuery bisa didapat <a href="http://jquery.malsup.com/form/#getting-started" target="_blank">disini</a> atau <a href="https://docs.google.com/open?id=0B-GWx1nm1t0ScUlsa1JrbHhUUW8" target="_blank">mirror</a>.<br />
<br />
Pada tahap awal buat view terlebih dahulu<br />
<br />
<pre class="brush:php"><div class="msg"></div>
<form action="#" id="myForm" method="POST">
<div id="body">
<input type="file" name="userfile" id="userfile" class="WArarea" size="50px"/>
<input type="submit" value="Upload" />
</div>
</form>
<script type="text/javascript">
$('#myForm').ajaxForm({
url:'<?php echo site_url("contoh/upload_file");?>',
type: 'post',
dataType: 'json',
resetForm: true,
beforeSubmit: function() {
$('.msg').html('Submitting...');
},
success: function(data) {
if(data.status){
$('.msg').html('<span style="color:blue">'+data.msg+'</span>')
}else{
$('.msg').html('<span style="color:red">'+data.msg+'</span>')
}
}
});
</script>
</pre>
<br />
Kemudian untuk controllernya<br />
<br />
<pre class="brush:php">function _conf_upload(){
$config['upload_path'] = "./uploads/";
$config['allowed_types'] = "doc|docx|pdf|xls|xlsx";
$config['max_size'] = "2048";
$this->load->library('upload');
$this->upload->initialize($config);
}
function upload_file(){
$this->_conf_upload();
if ( ! $this->upload->do_upload()){ // cek apakah ada file yg diupload
$status = array('status' => false, 'msg' => $this->upload->display_errors());
}else{
$file = $this->upload->data();
// pura-puranya disini ada sebuah proses mengenai file yg d upload.
$status = array('status' => true, 'msg' => 'Tugas berhasil di upload');
}
echo(json_encode($status));
}
</pre>
<br />
Nah, cukup simpel kan untuk upload file menggunakan Ajax dengan plugin jQuery.<br />
<br />
<span style="color: red;"><span style="color: black;">Cukup sekian tips nya... :D</span></span><br />
<br />
Untuk
menghargai HKI(Hak Kekayaan Intelektual), sumber referensi yang saya
pakai dan saya pelajari akan ditampilkan.<br />
Referensi : <a href="http://jquery.malsup.com/form/">http://jquery.malsup.com/form/</a> <br />
Author :
Moch. Zawaruddin Abdullah, www.zawaruddin.blogspot.comMari Belajarhttp://www.blogger.com/profile/06328739015959696311noreply@blogger.com2tag:blogger.com,1999:blog-2140783511966573973.post-84546237288983655712012-09-25T16:52:00.001+07:002012-09-25T16:54:51.225+07:00Codeigniter : Tips untuk menangani back button pada browser setelah logoutDisini ada sedikit tips yang saya dapat dari vidcence.blogspot.com tentang Masalah “back button” setelah logOut.<br />
<div style="text-align: justify;">
<br /></div>
<div style="text-align: justify;">
Pada permasalahan yang dihadapi adalah ketika kita sudah logout, pastinya status kita benar-benar logout. Akan tetapi apabila kita mengklik tombol kembali (<i>back button</i>) pada browser, seolah-olah kita masih dalam kondisi login. Hal ini tentunya dapat mengganggu ataupun membuat kita harus berfikir keras untuk mencegahnya (tentunya dari segi developer... XD ). Apalagi ketika saat menekan <i>back button</i> halaman yang ditampilkan browser adalah form input data, nah pastinya jd masalah kan... (sok iye..) </div>
<div style="text-align: justify;">
<br /></div>
<div style="text-align: justify;">
Nah disini ada kode yang saya dapat dari web vidcence.blogspot.com, akan tetapi saya modif agar simple.
Buat helper dengan nama sukasukalo_helper.php, isikan kode berikut</div>
<pre class="brush: php">function backButtonHandle(){ // nama fungsinya juga bisa d ganti "suka-suka lo" XD (y)
$CI =& get_instance();
$CI->load->library(array('output'));
$CI->output->set_header('Last-Modified: ' . gmdate("D, d M Y H:i:s") . ' GMT');
$CI->output->set_header('Cache-Control: no-store, no-cache, must-revalidate, post-check=0, pre-check=0');
$CI->output->set_header('Pragma: no-cache');
$CI->output->set_header("Expires: Mon, 26 Jul 1997 05:00:00 GMT");
}
</pre>
<br />
Nah untuk memakainya cukup di load helper tersebut dan panggil fungsinya pada SETIAP fungsi konstruktor (<i>__construct</i>) di controller<br />
<br />
<pre class="brush: php">function __construct(){
parent::__construct();
$this->load->helper('sukasukalo'); // helper yg di atas
backButtonHandle(); // ni fungsinya yg d panggil
}
</pre>
<br />
Sekarang coba jalankan aplikasinya (login -> klik sembarang menu/link -> logout -> <i>back button</i>).<br />
Alhamdulillah udah saya coba (di firefox n Chrome) dan berhasil (berhasil, berhasil, berhasil... hore XD)<br />
<br />
<span style="color: red;"><span style="color: black;">Cukup sekian tips nya, tumben nih lagi seneng ngetik... :D</span></span><br />
<br />
Untuk
menghargai HKI(Hak Kekayaan Intelektual), sumber referensi yang saya
pakai dan saya pelajari akan ditampilkan.<br />
Referensi :<a href="http://vidcence.blogspot.com/2012/06/masalah-back-button-setelah-logout.html" target="_blank">http://vidcence.blogspot.com/2012/06/masalah-back-button-setelah-logout.html </a><br />
Author :
Moch. Zawaruddin Abdullah, www.zawaruddin.blogspot.comMari Belajarhttp://www.blogger.com/profile/06328739015959696311noreply@blogger.com8tag:blogger.com,1999:blog-2140783511966573973.post-53177050430887992972012-09-13T12:42:00.000+07:002012-11-30T15:14:55.393+07:00Tips mempercepat loading web pada framework PHP - Codeigniter<div style="text-align: justify;">
Akhirnya aku berkesempatan lagi buat nulis.<br />
Entah mengapa aku males klo buat nulis, aku sukanya nonton Anime... XD<br />
#abaikan<br />
<br />
Langsung saja, berikut ini ada beberapa tips yang dapat membantu mempercepat <i>loading</i> web pada framework Codeigniter.</div>
<div style="text-align: justify;">
<br /></div>
<div style="text-align: justify;">
<b>1. Mengaktifkan kompresi HTML</b></div>
<ol style="text-align: justify;">
</ol>
<div style="text-align: justify;">
Kompresi dilakukan untuk mengecilkan ukuran html, sehingga data yang
dikirimkan oleh server ke client lebih kecil dan lebih cepat. Kompresi html dapat dilakukan dengan menggunakan kompresi gzip sudah disediakan oleh Codeigniter. </div>
<div style="text-align: justify;">
Setting untuk mengaktifkan kompresi gzip ada di config.php, ubah nilai $config['compress_output'] menjadi TRUE</div>
<div style="text-align: justify;">
<pre class="brush: php">$config['compress_output'] = TRUE;
</pre>
</div>
<div style="text-align: justify;">
<br /></div>
<div style="text-align: justify;">
<span style="color: red;">Catatan</span> : dalam menggunakan kompresi gzip, hindari penggunaan sintaks <b><span style="color: red;">echo</span></b> dalam controller Codeigniter. Jika ingin menampilkan sesuatu dengan menggunakan <b><span style="color: red;">echo</span></b>, seperti menampilkan json</div>
<pre class="brush: php">echo json_encode($json);
</pre>
<div style="text-align: justify;">
bisa diganti dengan</div>
<pre class="brush: php">$this->output->set_output(json_encode($json));
</pre>
<div style="text-align: justify;">
<br />
<b>2. Gunakan Cache</b><br />
Gunakan method cache yang telah disediakan oleh Codeigniter untuk mempercepat pengaksesan suatu web. Cache menyimpan halaman web yang sebelumnya telah diakses, sehingga apabila halaman sebelumnya diakses kembali, sistem akan menampilkan halaman yang ada di cache.<br />
code untuk cache yang ada d Codeigniter<br />
<pre class="brush: php">$this->output->cache(n);</pre>
dimana <i>n</i> merupakan sebuat digit yang merepresentasikan berapa menit cache akan disimpan.<br />
Letakkan code di atas pada tiap fungsi yang ada di controller. Lebih baiknya di fungsi yang menampilkan data yang statis (tidak berubah2 datanya ketika fungsi tersebut berulang kali diakses).<br />
<span style="color: red;">Catatan : <span style="color: black;">cache yang digenerate oleh Codeigniter akan disimpan di folder <i>cache</i> sejajar dengan folder <i>config</i>, pastikan folder cache memiliki hak akses untuk <i>read/write.</i></span></span><br />
<br />
<span style="color: red;"><span style="color: black;">Cukup sekian tips nya, maklum lagi muales buat nulis kayak gini... :D</span></span><br />
<br />
Untuk
menghargai HKI(Hak Kekayaan Intelektual), sumber referensi yang saya
pakai dan saya pelajari akan ditampilkan.<br />
Referensi :<a href="http://codeigniter.com/">
http://codeigniter.com/,</a> coba-coba<a href="http://msdn.microsoft.com/en-us/library/cc296170%28v=sql.105%29.aspx" target="_blank"></a><br />
Author :
Moch. Zawaruddin Abdullah, www.zawaruddin.blogspot.com</div>
Mari Belajarhttp://www.blogger.com/profile/06328739015959696311noreply@blogger.com0tag:blogger.com,1999:blog-2140783511966573973.post-87605206926853266922012-05-30T13:07:00.001+07:002015-01-14T12:53:41.675+07:00Konfigurasi Codeigniter 2.1.0 dengan SQL Server 2008Pada kali ini saya mau sharing mengenai konfigurasi Codeigniter (CI 2.1.0) untuk database SQL Server 2008. Sebagai info tambahan, saya menggunakan <span id="bc_0_9b+seedE1ZPD" kind="d">XAMPP 1.7.7 dengan OS Windows 7 64bit.</span><br />
Langkah-langkahnya sebagai berikut : <br />
<ol>
<li>Download driver SQL Server untuk PHP, bisa di download <a href="http://www.microsoft.com/en-us/download/details.aspx?id=20098" target="_blank">disini</a>. Sebagai catatan cek versi PHP yang sedang dipakai, kemudian cocokkan dengan versi library PHP untuk SQL Server.</li>
<li>Ekstrak file yang telah di download ke extensinya php (contoh klo di XAMPP ada di XAMPP/php/ext)</li>
<li>Edit file php.ini nya, trus tambahkan code (untuk PHP 5.3)
<pre class="brush: php">extension=php_sqlsrv_53_ts_vc9.dll
extension=php_pdo_sqlsrv_53_ts_vc9.dll</pre>
UNTUK <span style="color: magenta;"><b>PHP 5.3</b></span> bisa pake php_sqlsrv_<span style="color: magenta;"><b>53</b></span>_ts_vc9, klo <span style="color: blue;"><b>PHP 5.4</b></span> php_sqlsrv_<span style="color: blue;"><b>54</b></span>_ts_vc9 sesuai denan versi PHP nya </li>
<li> Selanjutnya setting database.php yang ada pada folder config Codeigniter
<pre class="brush: php">$db['default']['hostname'] = 'ZAWA-PC'; </pre>
isi dengan nama pc atau IP komputer<br />
untuk koneksi database dari komputer lain dapat seperti 'tcp:MOUZA-PC,1433';<br />
MOUZA-PC dapat diganti dengan IP komputer lain yang terdapat database SQL Server<br />
1433 merupakan port default SQL Server<br />
<pre class="brush: php">$db['default']['username'] = 'sa';
$db['default']['password'] = '123456';
$db['default']['database'] = 'db_zawa';
$db['default']['dbdriver'] = 'sqlsrv';
$db['default']['dbprefix'] = '';
</pre>
<br />
<pre class="brush: php">$db['default']['pconnect'] = FALSE; </pre>
Default CI nya true, tp buat False karena di library sistem CI nya nilai return nya tidak ada (bisa di perbaiki sendiri, cukup kasih code "return" di library sistemnya).
<pre class="brush: php">$db['default']['db_debug'] = TRUE;
$db['default']['cache_on'] = FALSE;
$db['default']['cachedir'] = '';
$db['default']['char_set'] = 'utf8';
$db['default']['dbcollat'] = 'utf8_general_ci';
$db['default']['swap_pre'] = '';
$db['default']['autoinit'] = TRUE;
$db['default']['stricton'] = FALSE;
</pre>
</li>
</ol>
<br />
Setelah selesai melakukan konfigurasi, cobalah untuk koneksi. Semoga berhasil. <br />
Sekian dulu artikel yang saya buat. Semoga dapat berguna.. ^_^<br />
<br />
Keyword : PHP CodeIgniter, Konfigurasi SQL Server 2008<br />
<br />
Untuk
menghargai HKI(Hak Kekayaan Intelektual), sumber referensi yang saya
pakai dan saya pelajari akan ditampilkan.<br />
Referensi :<a href="http://codeigniter.com/">
http://codeigniter.com/,</a> <a href="http://msdn.microsoft.com/en-us/library/cc296170%28v=sql.105%29.aspx" target="_blank">msdn.microsoft.com</a><br />
Author :
Moch. Zawaruddin Abdullah, www.zawaruddin.blogspot.comMari Belajarhttp://www.blogger.com/profile/06328739015959696311noreply@blogger.com66tag:blogger.com,1999:blog-2140783511966573973.post-30115304947762500582012-01-09T10:29:00.001+07:002013-05-06T08:35:43.863+07:00CodeIgniter - Library MZA_SecureUrl to encrypt UrlAfter long time i didn't write an article, now i'll write an article about the codeigniter library to encrypt url.<br />
I created this library with the name MZA_SecureUrl, library to secure the url that we make with the way in encryption. <span class="" id="result_box" lang="en"><span class="hps">Url</span> <span class="hps">needs to</span> <span class="hps">be secured</span> <span class="hps">so that</span> <span class="hps">our</span> <span class="hps">web</span> <span class="hps">a little safer</span> <span class="hps">from the dangers of</span> <span class="hps">meddling</span>
<span class="hps">hand</span> <span class="hps">that can</span> <span class="hps">infiltrate</span> <span class="hps">our</span> <span class="hps">website</span> <span class="hps">by reading</span> <span class="hps">Url</span>. <span class="hps">Therefore</span><span class="">, one way</span> <span class="hps">to secure</span> <span class="hps">the url</span> <span class="hps">is to</span> <span class="hps">encrypt</span> <span class="hps">the url</span><span class="">.</span></span><span class="" id="result_box" lang="en"><span class="hps"> </span></span><br />
<span class="" id="result_box" lang="en"><span class="hps">The first</span>
<span class="hps">thing</span> <span class="hps">that must be made</span>
<span class="hps">is a library</span> <span class="hps">for encryption</span>.
<span class="hps">Encryption</span> <span class="hps">is done only</span>
<span class="hps">for</span> <span class="hps">the intended</span> <span class="hps">function names </span><span class="hps">and its</span> <span class="hps">parameters</span> <span class="hps">(if</span> <span class="hps">there are</span> <span class="hps">parameters</span> <span class="hps">in the function</span><span class="">)</span><span class="">.</span></span><br />
<span class="" id="result_box" lang="en"><span class="hps">Create a file</span>
<span class="hps">with</span> <span class="hps">a name</span> <span class="hps">MZA_SecureUrl.php</span></span><span class="" id="result_box" lang="en"><span class=""> </span></span><br />
<pre class="brush: php">class MZA_SecureUrl{
private $valid_url, $parse, $length, $point1, $point2;
function MZA_SecureUrl(){
$this->obj =& get_instance();
$this->valid_url = md5('mza secure url'); // you can change the string
$this->parse = 'mza secure url'; // you can change the string
$this->length = 5; // you can change the value. Min : 1, Max : 32;
$this->point1 = 5; // you can change the value. Min : 1, Max : point1 + length : 32
$this->point2 = 17; // you can change the value. Min : 1, Max : point2 + length : 32
}
function _get_iv(){
$iv_size = mcrypt_get_iv_size(MCRYPT_RIJNDAEL_256, MCRYPT_MODE_ECB);
return mcrypt_create_iv($iv_size, MCRYPT_RAND);
}
function setSecureUrl_encode($class,$function, $param = array()){ // array $param only singel dimension of array, can't <span class="short_text" id="result_box" lang="en"><span class="hps">multiple</span>
<span class="hps">dimensions</span></span>.
$parameter = ''; // Send me an email if you have any suggestion.
$function = $this->_encodeUrl($function);
if(!empty($param)){
foreach($param as $value){
$parameter .= $value.'/';
}
$parameter = $this->_encodeUrl(substr($parameter,0,-1));
return $class.'/secure/'.substr($this->valid_url,$this->point1,$this->length).$function.substr($this->valid_url,$this->point2,$this->length).$parameter;
}else{
return $class.'/secure/'.substr($this->valid_url,$this->point1,$this->length).$function;
}
}
function _encodeUrl($url){
return str_replace(array('+','/','='),array('-','_',' '),base64_encode(mcrypt_encrypt(MCRYPT_RIJNDAEL_256, md5($this->parse), $url, MCRYPT_MODE_ECB, $this->_get_iv())));
}
function _decodeUrl($url){
return mcrypt_decrypt(MCRYPT_RIJNDAEL_256, md5($this->parse), base64_decode($url), MCRYPT_MODE_ECB, $this->_get_iv());
}
function setSecureUrl_decode($url){
$url = str_replace(array('-','_',' '),array('+','/','='),urldecode($url));
if($this->_isValid_url($url)){
$parameter = '';
$data = explode(substr($this->valid_url,$this->point2,$this->length),substr($url,$this->length));
$url = $this->_decodeUrl($data[0]);
if(!empty($data[1])){
$parameter = trim($this->_decodeUrl($data[1]));
$parameter = explode('/', $parameter);
return array('function' => trim($url), 'params' => $parameter);
}else{
return array('function' => trim($url), 'params' => null);
}
}else{
return false;
}
}
function _isValid_url($url){
if(strcmp(substr($url,0,$this->length),substr($this->valid_url,$this->point1,$this->length)) == 0){
return true;
}else{
return false;
}
}
} </pre>
<br />
<span class="" id="result_box" lang="en"><span class="hps">after</span> <span class="hps">that, copy</span> <span class="hps">the</span> <span class="hps">following</span> <span class="hps">functionality</span> <span class="hps">to</span> <span class="hps">any</span> <span class="hps">existing</span>
<span class="hps">controller</span> <span class="hps">file</span> <span class="hps">in</span> <span class="hps">your</span> <span class="hps">application</span></span><br />
<pre class="brush: php">function secure($url){
$data = $this->mza_secureurl->setSecureUrl_decode($url);
if($data != false){
if (method_exists($this, trim($data['function']))){
if(!empty($data['param'])){
return call_user_func_array(array($this, trim($data['function'])), $data['param']);
}else{
return $this->$data['function']();
}
}
}
show_404();
}</pre>
<span class="" id="result_box" lang="en"><span class="hps">yap</span> <span class="hps">...</span> <span class="hps">library</span> <span class="hps">to</span> <span class="hps">encrypt</span> <span class="hps">the
url</span> <span class="hps">is created</span>. <span class="hps">Now</span>, <span class="hps">to run</span> <span class="hps">its</span> <span class="hps">library</span>, <span class="hps">please</span> <span class="hps">set</span> <span class="hps">the configuration</span> <span class="hps">and add</span> <span class="hps">MZA_SecureUrl</span> <span class="hps"></span></span><span class="" id="result_box" lang="en"><span class="hps">to $</span><span class="hps">autoload</span>
<span class="hps atn">[</span><span class="hps atn">'</span>libraries']
on <span class="hps"></span></span><span class="" id="result_box" lang="en"><span class="hps">autoload.php</span> <span class="hps">file</span><span class="hps">.</span> <span class="hps">To call</span> <span class="hps">its</span> <span class="hps">library</span> <span class="hps">can be</span> <span class="hps">used</span> <span class="hps">like this</span></span><br />
<pre class="brush: php">$data['url'] = $this->mza_secureurl->setSecureUrl_encode($class,$function,$params);</pre>
example to call count controller, say function and the parameters
<br />
<pre class="brush: php"> $data['url1'] = $this->mza_secureurl->setSecureUrl_encode('count','say',array(1,'+',2,'=',3));</pre>
example to call front controller, front_site function that haven't parameters
<br />
<pre class="brush: php"> $data['url2'] = $this->mza_secureurl->setSecureUrl_encode('front','front_site');</pre>
<br />
<span class="" id="result_box" lang="en"><span class="hps">Here I</span>
<span class="hps">also</span> <span class="hps">give</span> <span class="hps">an example</span>, you can <span class="hps">download <a href="http://www.ziddu.com/download/18148456/MZA_SecureUrlsample.zip.html">here</a></span> or <a href="https://docs.google.com/file/d/0B-GWx1nm1t0SZVhNZ1hZSDRmVnc/edit?usp=sharing" target="_blank">mirror</a>.<br /> <span class="hps">So first</span>
<span class="hps">article</span> <span class="hps">that I created</span><span class="">.</span> <span class="hps">Hope can</span> <span class="hps">be
useful</span> <span class="hps">..</span> <span class="hps">^</span> <span class="hps">_</span> <span class="hps">^</span></span><br />
<br />
<span class="" id="result_box" lang="en"><span class="hps">Sorry about my english... (^_^)v </span></span><br />
<br />
Keyword : PHP CodeIgniter, Secure Url<br />
<br />
<span class="" id="result_box" lang="en"><span class="hps">To</span> <span class="hps">appreciate the</span> <span class="hps">IPR</span> <span class="hps atn">(</span>Intellectual <span class="hps">Property
Rights</span>), <span class="hps">the source
of</span> <span class="hps">reference</span> <span class="hps">that I
use</span> <span class="hps">and</span> <span class="hps">I</span> <span class="hps">learned will</span> <span class="hps">be displayed</span>.</span><br />
Referensi :<a href="http://www.blogger.com/%20http://codeigniter.com/">codeigniter.com</a><br />
Author :
Moch. Zawaruddin Abdullah, www.zawaruddin.blogspot.comMari Belajarhttp://www.blogger.com/profile/06328739015959696311noreply@blogger.com4tag:blogger.com,1999:blog-2140783511966573973.post-40064797110914301982012-01-09T09:54:00.000+07:002013-05-06T08:35:17.308+07:00Codeigniter - Library MZA_SecureUrl untuk mengenkripsi UrlSetelah sekian lama tidak buat artikel, kini saya akan buat artikel tentang library untuk enkripsi url.<br />
Library ini saya buat dengan nama MZA_SecureUrl, yaitu library untuk mengamankan tentang url yang kita <br />
buat dengan cara di enkripsi. Url perlu diamankan agar web kita sedikit lebih aman dari bahaya tangan usil yang dapat mengerjai web kita dengan membaca Url. Oleh karena itu, salah satu mengamankan url adalah dengan cara menenkripsi url tersebut.<br />
Langsung saja....<br />
hal pertama yang harus dibuat adalah library untuk men-enkripsi. Enkripsi dilakukan hanya untuk nama fungsi yang dituju<br />
beserta parameternya (jika terdapat parameter dalam fungsi tersebut).<br />
Buat file dengan nama MZA_SecureUrl.php yang isinya<br />
<pre class="brush: php">class MZA_SecureUrl{
private $valid_url, $parse, $length, $point1, $point2;
function MZA_SecureUrl(){
$this->obj =& get_instance();
$this->valid_url = md5('mza secure url'); // you can change the string
$this->parse = 'mza secure url'; // you can change the string
$this->length = 5; // you can change the value. Min : 1, Max : 32;
$this->point1 = 5; // you can change the value. Min : 1, Max : point1 + length : 32
$this->point2 = 17; // you can change the value. Min : 1, Max : point2 + length : 32
}
function _get_iv(){
$iv_size = mcrypt_get_iv_size(MCRYPT_RIJNDAEL_256, MCRYPT_MODE_ECB);
return mcrypt_create_iv($iv_size, MCRYPT_RAND);
}
function setSecureUrl_encode($class,$function, $param = array()){ // array $param only singel dimension of array, can't <span class="short_text" id="result_box" lang="en"><span class="hps">multiple</span>
<span class="hps">dimensions</span></span>.
$parameter = ''; // Send me an email if you have any suggestion.
$function = $this->_encodeUrl($function);
if(!empty($param)){
foreach($param as $value){
$parameter .= $value.'/';
}
$parameter = $this->_encodeUrl(substr($parameter,0,-1));
return $class.'/secure/'.substr($this->valid_url,$this->point1,$this->length).$function.substr($this->valid_url,$this->point2,$this->length).$parameter;
}else{
return $class.'/secure/'.substr($this->valid_url,$this->point1,$this->length).$function;
}
}
function _encodeUrl($url){
return str_replace(array('+','/','='),array('-','_',' '),base64_encode(mcrypt_encrypt(MCRYPT_RIJNDAEL_256, md5($this->parse), $url, MCRYPT_MODE_ECB, $this->_get_iv())));
}
function _decodeUrl($url){
return mcrypt_decrypt(MCRYPT_RIJNDAEL_256, md5($this->parse), base64_decode($url), MCRYPT_MODE_ECB, $this->_get_iv());
}
function setSecureUrl_decode($url){
$url = str_replace(array('-','_',' '),array('+','/','='),urldecode($url));
if($this->_isValid_url($url)){
$parameter = '';
$data = explode(substr($this->valid_url,$this->point2,$this->length),substr($url,$this->length));
$url = $this->_decodeUrl($data[0]);
if(!empty($data[1])){
$parameter = trim($this->_decodeUrl($data[1]));
$parameter = explode('/', $parameter);
return array('function' => trim($url), 'params' => $parameter);
}else{
return array('function' => trim($url), 'params' => null);
}
}else{
return false;
}
}
function _isValid_url($url){
if(strcmp(substr($url,0,$this->length),substr($this->valid_url,$this->point1,$this->length)) == 0){
return true;
}else{
return false;
}
}
} </pre>
<br />
setelah itu, copy-kan fungsi di bawah ini ke setiap file controller yang ada.
<br />
<pre class="brush: php">function secure($url){
$data = $this->mza_secureurl->setSecureUrl_decode($url);
if($data != false){
if (method_exists($this, trim($data['function']))){
if(!empty($data['param'])){
return call_user_func_array(array($this, trim($data['function'])), $data['param']);
}else{
return $this->$data['function']();
}
}
}
show_404();
}</pre>
yap... library untuk menenkripsi url sudah dibuat. Sekarang, untuk menjalankan library-nya, silakan set konfigurasi
autoload.php dan tambahkan MZA_SecureUrl pada $autoload['libraries'] nya.
Untuk memanggil library nya dapat menggunakan seperti ini
<br />
<pre class="brush: php">$data['url'] = $this->mza_secureurl->setSecureUrl_encode($class,$function,$params);</pre>
contoh untuk memanggil controller count, fungsi say dan parameternya
<br />
<pre class="brush: php"> $data['url1'] = $this->mza_secureurl->setSecureUrl_encode('count','say',array(1,'+',2,'=',3));</pre>
contoh untuk memanggil controller front, fungsi front_site yang tidak memiliki parameter
<br />
<pre class="brush: php"> $data['url2'] = $this->mza_secureurl->setSecureUrl_encode('front','front_site');</pre>
<br />
Disini saya juga memberikan contohnya, silakan download <a href="http://www.ziddu.com/download/18148456/MZA_SecureUrlsample.zip.html">disini</a> atau <a href="https://docs.google.com/file/d/0B-GWx1nm1t0SZVhNZ1hZSDRmVnc/edit?usp=sharing" target="_blank">mirror</a> <br />
Sekian dulu artikel yang saya buat. Semoga dapat berguna.. ^_^<br />
<br />
Keyword : PHP CodeIgniter, Secure Url<br />
<br />
Untuk
menghargai HKI(Hak Kekayaan Intelektual), sumber referensi yang saya
pakai dan saya pelajari akan ditampilkan.<br />
Referensi :<a href="http://codeigniter.com/" target="_blank">codeigniter.com</a><br />
Author :
Moch. Zawaruddin Abdullah, www.zawaruddin.blogspot.comMari Belajarhttp://www.blogger.com/profile/06328739015959696311noreply@blogger.com4tag:blogger.com,1999:blog-2140783511966573973.post-34738659434329640352011-08-01T15:43:00.000+07:002012-12-03T13:07:18.477+07:00PHP Codeigniter - Export data dari database ke excelexport data from database to excel.<br />
<br />
Pada kali ini saya juga akan sharing tentang export data dari database ke excel, dengan menggunakan library excel_reader2 yang bisa di download di <a href="http://code.google.com/p/php-excel-reader/downloads/list">http://code.google.com/p/php-excel-reader/downloads/list</a> atau <a href="https://docs.google.com/open?id=0B-GWx1nm1t0SYV9sbmZWbWc4STQ" target="_blank">mirror</a><br />
<br />
Sebelumnya, sharing ini adalah kelanjutan atau bisa dibilang masih berhubungan dengan sharing yang sebelumnya, yaitu sharing tentang penggunaan CI + jQuery 1.3.2 + Colorbox + Flexigrid. Jadi alangkah baikknya jika baca sharing yang sebelumnya, karena file yang ada di sharing tersebut dipakai pada sharing kali ini.. hehe<br />
<br />
Langsung saja, pada sharing tentang export data ke excel ini cukup mudah dan simple (hehe bukannya sombong loh... XD),<br />
jika excel_reader2 sudah di download taruh file excel_readernya dalam library untuk CI Versi 2 ada di folder CI_Root/application/libraries.<br />
Selanjutnya edit file user.php dan buat fungsi export dan set_header seperti di bawah ini <br />
<pre class="brush: php">function export(){
$header = $this->set_header();
$data = array($header);
$filename = 'Laporan_User';
$loop = 0;
foreach($this->user_model->getUser()->result() as $row){
$content[$loop] = array($row->USERNAME, $row->NAME, $row->EMAIL, $row->ADDRESS);
array_push($data, $content[$loop]);
$loop++;
}
$this->load->helper('to_excel');
array_to_excel($data, $filename);
}
function set_header(){
return array('Username','Nama','Email','Alamat');
}</pre>
<br />
Setelah itu, edit pula file user_view.php<br />
tambahkan button untuk export excel seperti contoh di bawah ini.<br />
<pre class="brush: js">{name: 'Export', bclass: 'add', onpress : action}, // bclass : 'add' hanya untuk tampilan icon yg akan ditampilkan
{separator: true}</pre>
<br />
Setelah itu, tambahkan kondisi pada fungsi action pada user_view.php<br />
<pre class="brush: js">if (com == 'Export') {
if(confirm('Export to Excel file ?')) {
export_excel();
}
}</pre>
<br />
Tambahkan pula fungsi export_excel pada user_view.php<br />
<pre class="brush: js">function export_excel() {
window.open("<?php echo $url_form?>/export/","export_window");
}</pre>
<br />
Dan yang terakhir, buat file dengan nama to_excel_helper.php dan taruh dalam folder helper di CI.<br />
<pre class="brush: php">if (!defined('BASEPATH')) exit('No direct script access allowed');
function to_excel($query, $filename='xlsoutput')
{
$headers = ''; // variable untuk menampung header
$data = ''; // variable untuk menampung data
//$obj =& get_instance();
$fields = $query->field_data();
if ($query->num_rows() == 0) {
echo 'The table appears to have no data.';
} else {
foreach ($fields as $field) {
$headers .= $field->name . "\t";
}
foreach ($query->result() as $row) {
$line = '';
foreach($row as $value) {
if ((!isset($value)) OR ($value == "")) {
$value = "\t";
} else {
$value = str_replace('"', '""', $value);
$value = '"' . $value . '"' . "\t";
}
$line .= $value;
}
$data .= trim($line)."\n";
}
$data = str_replace("\r","",$data);
header("Content-type: application/x-msdownload");
header("Content-Disposition: attachment; filename=$filename.xls");
echo "$headers\n$data";
}
}
function array_to_excel($array, $filename='xlsoutput')
{
$headers = ''; // variable untuk menampung header
$data = ''; // variable untuk menampung data
//$obj =& get_instance();
//$fields = $query->field_data();
if (sizeof($array) == 0) {
echo 'The table appears to have no data.';
} else {
foreach ($array as $row) {
$line = '';
foreach($row as $value) {
if ((!isset($value)) OR ($value == "")) {
$value = "\t";
} else {
$value = str_replace('"', '""', $value);
$value = '"' . $value . '"' . "\t";
}
$line .= $value;
}
$data .= trim($line)."\n";
}
$data = str_replace("\r","",$data);
header('Content-type: application/ms-excel');
header("Content-Disposition: attachment; filename=$filename.xls");
echo $data;
}
}</pre>
Nah, lumayan mudah kan untuk export dari database ke file excel...<br />
<br />
Sekian sharing untuk export ke file excel.<br />
Semoga bisa bermanfaat... ^_^<br />
<br />
<br />
Keyword : PHP CodeIgniter, Export to excel, excel reader<br />
<br />
Untuk menghargai HKI(Hak Kekayaan Intelektual), sumber referensi yang saya pakai dan saya pelajari akan ditampilkan.<br />
Referensi :<a href="http://code.google.com/p/php-excel-reader/"> http://code.google.com/p/php-excel-reader/</a><br />
Author : Moch. Zawaruddin Abdullah, www.zawaruddin.blogspot.comMari Belajarhttp://www.blogger.com/profile/06328739015959696311noreply@blogger.com11tag:blogger.com,1999:blog-2140783511966573973.post-68823492796147801692011-08-01T15:07:00.002+07:002012-11-30T15:25:56.094+07:00Sharing Penggunaan jQuery Flexigrid dan Colorbox pada CodeIgniterWah setelah sekian lama tidur dari dunia per blog-an, kini bangun lagi untuk ngeblog.. hehe maklum sok sibuk.. XD<br />
kali ini saya akan sharing tentang penggunaan CI + jQuery 1.3.2 (jQuery UI) + Colorbox + Flexigrid. Flexigrid adalah plugin dari jQuery untuk menampilkan data dalam format grid/tabel (ya begitulah pokoknya mah.. hahay..), sedang Colorbox fungsinya terutama yg saya ambil adalah untuk membuat tampilan form.<br />
<br />
langsung saja, pertama2 download dulu bahan2 yang dibutuhkan, seperti<br />
<ol>
<li>CI (CI yg saya gunakan pada sharing kali ini adalah CI versi 2) di <a href="http://codeigniter.com/">codeigniter.com</a></li>
<li>jQuery, bisa di <a href="http://jqueryui.com/">jqueryui.com</a>,</li>
<li>Flexigrid, bisa d dapat di <a href="http://code.google.com/p/flexigrid/downloads/detail?name=flexigrid-1.1.zip">flexigrid for jquery</a> (per 25 Juli 2011) atau <a href="https://docs.google.com/open?id=0B-GWx1nm1t0STHpSMFlXcEZvUGc" target="_blank">mirror</a></li>
<li>Colorbox, bisa di dapat di <a href="http://colorpowered.com/colorbox/">colorpowered.com</a> (per 25 Juli 2011) atau <a href="https://docs.google.com/open?id=0B-GWx1nm1t0ScTRNS3hEYktKYUk" target="_blank">mirror</a>. Untuk Colorbox, saya menggunakan css dan folder images dari example 5 dalam sharing kali ini.</li>
</ol>
Setelah semua bahan di dapat, ekstrak CI ke web server (contoh Xampp) dengan nama test, setelah itu taruh/ekstrak file/folder jQuery, Flexigrid dan Colorbox ke folder "api" yg sejajar dg folder system dalam aplikasi CI seperti gambah dibawah ini. Namun kalau ingin lebih mudah mendapatkan bahan-bahan yang dibutuhkan, silakan download file <a href="http://www.ziddu.com/download/15893808/api.zip.html">api.zip</a> / <a href="https://docs.google.com/open?id=0B-GWx1nm1t0Sb0lXY0RhSHhjVzQ" target="_blank">mirror</a> yang telah saya sediakan. <br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjACk1hVaky5ZFDSYDdlBxxltLh8aPV7c8MOnlC29rhmrx83XIeEDNBAo3h_RT_SyMYAnaBwusYVg9fi7KfQhp0yZjqmpOTvNaQ82rtvcbE6X0AgD3u5KbeXOHCfgXtubpbPKqI5pL7DKtB/s1600/1.PNG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjACk1hVaky5ZFDSYDdlBxxltLh8aPV7c8MOnlC29rhmrx83XIeEDNBAo3h_RT_SyMYAnaBwusYVg9fi7KfQhp0yZjqmpOTvNaQ82rtvcbE6X0AgD3u5KbeXOHCfgXtubpbPKqI5pL7DKtB/s1600/1.PNG" /></a></div>
<br />
<br />
Pertama2, untuk design database, saya hanya menggunakan satu tabel aja (ya kan cuma contoh, g papa kan...??!!! hehe)<br />
buat tabel dengan nama 'user_account' pada mysql.<br />
<pre class="brush: sql">CREATE TABLE IF NOT EXISTS `user_account` (
`USERNAME` varchar(20) NOT NULL,
`NAME` varchar(50) NOT NULL,
`EMAIL` varchar(32) NOT NULL,
`ADDRESS` varchar(100) NOT NULL,
PRIMARY KEY (`USERNAME`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1;
</pre>
<br />
Setelah itu, buat file controller untuk menangani request dari user dengan nama file user.php yang isinya<br />
<pre class="brush: php">class User extends CI_Controller{
function __construct(){
parent::__construct();
$this->load->model('user_model');
}
function index(){
$data['view'] = 'user/user_view';
$data['url_json'] = site_url('user/json_user');
$data['url_form'] = site_url('user');
$data['title'] = 'Data User';
$data['title_form'] = 'Form Data User';
$this->load->view('home',$data);
}
function json_user(){
$page = $this->input->post('page');
$rp = $this->input->post('rp');
$sortname = $this->input->post('sortname');
$sortorder = $this->input->post('sortorder');
if (!$sortname) $sortname = 'username';
if (!$sortorder) $sortorder = 'asc';
$sort = "ORDER BY $sortname $sortorder"; // untuk pengurutan data
if (!$page) $page = 1; // halaman yg di tampilkan pertama kali
if (!$rp) $rp = 10; // total baris yg ditampilkan
$start = (($page-1) * $rp);
$limit = "LIMIT $start, $rp"; // untuk pembatasan data yg ditampilkan / pagination
$query = $this->input->post('query'); // parameter yg diinputkan saat pencarian data
$qtype = $this->input->post('qtype'); // kolom atribut yang ingin dicari
$where = "";
if ($query) $where .= " WHERE $qtype LIKE '%$query%'"; // untuk proses pencarian data
$result = $this->user_model->getUser($where, $sort, $limit);
$total = $this->user_model->countUser($where);
$json = "";
$json .= "{\n";
$json .= "page: $page,\n";
$json .= "total: $total,\n";
$json .= "rows: [";
$rc = false;
$i = $start;
foreach ($result->result() as $row) {
$i++;
if($i <= 9) $i = '0'.$i;
if ($rc) $json .= ",";
$json .= "\n{";
$json .= "id:'".$row->USERNAME."',";
$json .= "cell:[";
$json .= "'".$i."',";
$json .= "'".addslashes($row->USERNAME)."',";
$json .= "'".addslashes($row->NAME)."',";
$json .= "'".addslashes($row->EMAIL)."',";
$json .= "'".addslashes($row->ADDRESS)."'";
$json .= "]}";
$rc = true;
}
$json .= "\n]}";
header("Expires: Wed, 01 Jan 2020 00:00:00 GMT" );
header("Last-Modified: " . gmdate( "D, d M Y H:i:s" ) . "GMT");
header("Cache-Control: no-cache, must-revalidate" );
header("Pragma: no-cache" );
header("Content-type: text/x-json");
echo $json;
}
function add(){ // fungsi untuk menampilkan form tambah user
$data['view'] = 'user/user_form';
$data['action'] = site_url('user/create');
$this->load->view('home', $data);
}
function create(){ // fungsi untuk tambah data user
$data = array('username' => trim($this->input->post('username')),
'name' => trim($this->input->post('name')),
'email' => trim($this->input->post('email')),
'address' => trim($this->input->post('address')));
$this->user_model->addUser($data);
$this->reload();
}
function edit($username){ // fungsi untuk menampilkan form edit user
$user = $this->user_model->getUserByUsername($username)->row();
$data['action'] = site_url("user/update/$username");
$data['view'] = 'user/user_form';
$data['username'] = $user->USERNAME;
$data['name'] = $user->NAME;
$data['email'] = $user->EMAIL;
$data['address'] = $user->ADDRESS;
$this->load->view('home', $data);
}
function update($username){ // fungsi untuk edit data user
$data = array('name' => trim($this->input->post('name')),
'email' => trim($this->input->post('email')),
'address' => trim($this->input->post('address')));
$this->user_model->editUser($username, $data);
$this->reload();
}
function delete($username){ // fungsi untuk hapus data user
$this->user_model->deleteUser($username);
}
function reload(){ // fungsi untuk mereload flexigrid
echo '<script type="text/javascript">parent.$("#tabel").flexReload();</script>';
echo '<script type="text/javascript">parent.$.fn.colorbox.close();</script>';
}
}</pre>
<br />
Dari yang saya dapet dari internet, terdapat fungsi dari flexigrid yang ditaruh dalam folder libraries d CI. <br />
Namun setelah saya coba, bisa juga file flexigridnya disatukan dalam controller seperti pada fungsi json_user di atas. <br />
<br />
Setelah membuat controller selesai, buatlah model dengan nama user_model.php yg isinya<br />
*Untuk proses validasi data bisa kamu bikin peraturannya sendiri, seperti tidak boleh ada username yg sama, dan lainnya.<br />
<br />
<pre class="brush: php">class User_model extends CI_Model{
function __construct(){
parent::__construct();
}
var $table = 'user_account';
// fungsi untuk mengambil data user per-page (pagination),
// ** khusus untuk MySql, cos untuk Oracle ataupun Postgre saya blum coba.. hehe
function getUser($where = '', $sort = '', $limit = ''){
return $this->db->query("select * from ".$this->table." $where $sort $limit");
}
function getUserByUsername($username){
return $this->db->get_where($this->table, array('username' => $username));
}
function countUser($where){
return $this->getUser($where)->num_rows();
}
function addUser($data){
$this->db->insert($this->table,$data);
}
function editUser($username, $data){
$this->db->where('username',$username);
$this->db->update($this->table, $data);
}
function deleteUser($username){
$this->db->delete($this->table, array('username' => $username));
}
}
</pre>
<br />
untuk query dalam User_model.php nya hanya untuk CRUD yang sederhana (hehe belagu bin ngguaya nih.. :P), jadi saya pake Active Record-nya CI, biar simpel (kecuali fungsi yang pertama XD). <br />
<br />
untuk view ada 3 file yg harus dibuat<br />
1. file home.php yg berisi<br />
<pre class="brush: js"><html>
<head>
<meta name="KEYWORDS" content="Contoh JQuery Flexigrid dan Colorbox">
<title>Contoh JQuery Flexigrid dan Colorbox</title>
<link type="text/css" rel="stylesheet" media="all" href="<?php echo base_url()?>api/themes/redmond/jquery.ui.all.css" />
<link type="text/css" rel="stylesheet" media="all" href="<?php echo base_url()?>api/flexigrid/css/flexigrid.css">
<link type="text/css" rel="stylesheet" media="all" href="<?php echo base_url()?>api/colorbox/colorbox.css" />
<!-- yang ini optional, sesuai css yg kamu mau, tapi sudah saya includkan d api.zip-->
<link type="text/css" rel="stylesheet" media="all" href="<?php echo base_url()?>api/style.css" />
<script type="text/javascript" language="javascript" src="<?php echo base_url()?>api/jquery/jquery-1.3.2.js"></script>
<script type="text/javascript" language="javascript" src="<?php echo base_url()?>api/flexigrid/js/flexigrid.js"></script>
<script type="text/javascript" language="javascript" src="<?php echo base_url()?>api/colorbox/jquery.colorbox.js"></script>
<script type="text/javascript">
$(document).ready(function() {
$("#cancel").click(function() {
parent.$.fn.colorbox.close();
});
});
</script>
</head>
<body>
<?php $this->load->view($view);?>
</body>
</html>
</pre>
<br />
2. file user_view.php, file ini ditaruh dalam folder user pada view. file ini bertujuan untuk menampilkan data pada grid.<br />
<pre class="brush: js"><table id="tabel" style="display:none"></table>
<script type="text/javascript" language="javascript">
$('#tabel').flexigrid ({
url: '<?php echo $url_json?>', // url untuk memanggil fungsi di controller test/json_test
dataType: 'json',
colModel : [
{display: 'NO', name : 'no', width : 25, sortable : true, align: 'center'},
{display: 'Username', name : 'username', width : 80, sortable : true, align: 'left'},
{display: 'Nama', name : 'name', width : 110, sortable : true, align: 'left'},
{display: 'Email', name : 'email', width : 200, sortable : false, align: 'left'},
{display: 'Alamat', name : 'address', width : 320, sortable : false, align: 'left'}
],
buttons : [ // tombol untuk melakukan tambah/edit/hapus data di grid
// bclass untuk flexigrid sudah di definisikan (default), untuk tambah : add, edit : edit, dan hapus : delete.
//Jika ingin buat bclass baru, maka harus mengedit colorbox.css-nya (tidak direkomendasikan bagi yg belum expert...hehe)
{name: 'Add', bclass: 'add', onpress : action},
{separator: true},
{name: 'Edit', bclass: 'edit', onpress : action},
{separator: true},
{name: 'Delete', bclass: 'delete', onpress : action},
{separator: true}
],
searchitems : [ // tombol untuk pencarian data
// untuk field "name" usahakan namanya sama dengan nama atribut yg dicari dalam database
{display: 'Username', name : 'username', isdefault: true},
{display: 'Nama', name : 'name', isdefault: false}
],
sortname: 'username', // sortname sesuaikan dengan nama atribut dalam database
sortorder: 'asc',
usepager: true,
resizable: false,
title: '<?php echo $title?>',
useRp: true,
rp: 10,
showTableToggleBtn: true,
width: 800,
height: 241
});
function action(com,grid) {
// 'Add' === name dalam button flexigrid
if (com == 'Add') {
forms('add', '');
} else if (com == 'Edit') {
// cek baris yg d pilih (contoh baris yg dipilih min/max adalah 1)
if ($('.trSelected',grid).length == 1) {
$('.trSelected',grid).each(function() {
var id = $(this).attr('id');
id = id.substring(id.lastIndexOf('row')+3); // ambil data kolom id
forms('edit', id);
});
} else {
alert('Silahkan pilih salah satu baris yang ingin di edit');
return false;
}
} else if (com == 'Delete') {
if ($('.trSelected',grid).length == 1) {
$('.trSelected',grid).each(function() {
var id = $(this).attr('id');
id = id.substring(id.lastIndexOf('row')+3);
if(confirm('Apakah anda yakin akan menghapus data : '+id+' ?')) {
$.ajax({
type: 'get',
url:'<?php echo $url_form?>/delete/'+id, // url untuk fungsi pada controller test/delete($id)
success: function() { $('#tabel').flexReload(); }
});
}
});
} else {
alert('Silahkan pilih salah satu baris yang ingin di delete');
return false;
}
}
}
function forms(clas, id){ // setting untuk tampilan colorbox
if(id != ''){
id = '/' + id;
}else {
id = '';
}
$('.'+clas).colorbox({
href : '<?php echo $url_form?>/'+clas+id, // memanggil fungsi di controller test/add($id) atau test/edit($id)
innerWidth : 500,
innerHeight : 297,
iframe : true,
overlayClose: false,
title : '<font color="#45678D"><b><?php echo $title_form?></b></font>',
onLoad : function() { $('#cboxClose').remove(); }
});
}
</script>
</pre>
<br />
dan yang terakhir,<br />
3. file user_form.php, file ini bertujuan untuk menampilkan form (dg colorbox) untuk proses tambah atau edit data.<br />
<pre class="brush: js"><form id="form" name="form" action="<?php echo $action ?>" method="post" enctype="multipart/form-data">
<table border="0" cellpadding="2" cellspacing="1" style="margin:5px">
<tr>
<td>Username</td>
<td>&nbsp;:&nbsp;</td>
<td><input type="text" name="username" <?php echo (!empty($username))? "value='$username' disabled" : '';?> /></td>
</tr>
<tr>
<td>Nama</td>
<td>&nbsp;:&nbsp;</td>
<td><input type="text" name="name" value="<?php echo (!empty($name))? $name : '';?>" /></td>
</tr>
<tr>
<td>Email</td>
<td>&nbsp;:&nbsp;</td>
<td><input type="email" name="email" value="<?php echo (!empty($email))? $email : '';?>" /></td>
</tr>
<tr>
<td>Alamat</td>
<td>&nbsp;:&nbsp;</td>
<td><textarea name="address" cols="40" rows="3"><?php echo (!empty($address))? $address : '';?></textarea></td>
</tr>
<tr><td>&nbsp;</td><td>&nbsp;</td><td>&nbsp;</td></tr>
<tr>
<td>&nbsp;</td>
<td>&nbsp;</td>
<td><input type="submit" value="Submit">&nbsp;<input type="button" value="Cancel" name="cancel" id="cancel"></td>
</tr>
</table>
</form>
</pre>
<br />
Untuk file <b>user_view.php </b>dan<b> user_form.php</b> di taruh dalam folder <b>user</b> dalam <b>view</b>.<br />
<br />
<br />
OK. Sekian dulu sharing dari saya, mumpung lagi mood buat sharing. hehe<br />
Moga bermanfaat bagi yg membutuhkan.. ^_^<br />
<br />
Keyword : PHP CodeIgniter, Flexigrid, Colorbox, jQuery<br />
<br />
Untuk menghargai HKI(Hak Kekayaan Intelektual), sumber referensi yang saya pakai dan saya pelajari akan ditampilkan.<br />
Referensi :jQuery, Flexidrid and Colorbox example.<br />
Author : Moch. Zawaruddin Abdullah, www.zawaruddin.blogspot.comMari Belajarhttp://www.blogger.com/profile/06328739015959696311noreply@blogger.com29tag:blogger.com,1999:blog-2140783511966573973.post-39050048979780714942011-04-27T09:07:00.005+07:002012-06-14T14:49:42.990+07:00Kelas PHP (Library CodeIgniter) untuk Mengetahui Kecepatan Proses Dataphp class to find out the data processing speed.<br />
<br />
Kali ini hal yang akan di share adalah tentang library (CodeIgniter) atau kelas (PHP OO) untuk mengetahui kecepatan aplikasi kita (dalam satuan waktu) dalam mengolah suatu data. Hal ini dapat bermanfaat untuk mengetahui, apakah aplikasi web php kita termasuk aplikasi yang bagus dan dapat mengolah data dengan cepat.<br />
<br />
langsung aja... Untuk<br />
1. CodeIgniter<br />
Untuk pemrograman php dengan menggunakan framework CodeIgniter, script dapat dijadikan sebagai library CI. Seperti contoh, buat class di library CI (untuk CI 2.x ada di <code>%CI_root%/application/libraries</code> , untuk CI 1.x ada di <code>%CI_root%/system/application/libraries</code>) dengan nama Count_time_process.php yang isi classnya adalah<br />
<br />
<pre class="brush: php">class Count_time_process{
function Count_time_process(){ // the constructor
$this->obj =& get_instance();
}
function start_time(){
$mtime = microtime();
$mtime = explode(' ', $mtime);
return $mtime;
}
function finish_time($starttime){
$starttime = $starttime[1] + $starttime[0];
$mtime = microtime();
$mtime = explode(" ", $mtime);
$mtime = $mtime[1] + $mtime[0];
return ($mtime - $starttime);
}
}</pre>
<br />
untuk menggunakannya bisa seperti ini<br />
<pre class="brush: php">$this->load->library('Count_time_process');
$start_time = $this->count_time_process->start_time();
// pura-puranya ada proses yang dikerjakan disini :D
$finish_time = $this->count_time_process->finish_time($start_time);
</pre>
<br />
2. PHP Class <br />
Untuk pemrograman php dengan menggunakan konsep OO (object oriented) script bisa dijadikan class, seperti Count_time_process.php. Sebenarnya untuk penulisan program antara class PHP dengan class untuk library CI sama saja, hanya terdapat penambahan contructor pada library CI, sedang untuk class PHP bisa diabaikan contructornya.<br />
untuk menggunakannya bisa seperti ini<br />
<pre class="brush: php">include_once("Count_time_process.php");
$process = new Count_time_process();
$start_time = $process->start_time();
// pura-puranya ada proses yang dikerjakan juga disini :D
$finish_time = $process->finish_time($start_time);
</pre>
<br />
Sekian dulu untuk sharing count time process. Moga bermanfaat.. hehehe<br />
Sundul gan... :D<br />
<br />
Keyword : PHP CodeIgniter count time process, kecepatan proses<br />
<br />
Untuk menghargai HKI(Hak Kekayaan Intelektual), sumber referensi yang saya pakai dan saya pelajari akan ditampilkan.<br />
Referensi : <a href="http://php.net/manual/en/function.time.php" target="_blank">PHP Time</a>, <a href="http://php.net/manual/en/book.datetime.php" target="_blank">PHP Datetime</a><br />
Author : Moch. Zawaruddin Abdullah, www.zawaruddin.blogspot.comMari Belajarhttp://www.blogger.com/profile/06328739015959696311noreply@blogger.com0tag:blogger.com,1999:blog-2140783511966573973.post-57387725409669447212011-04-18T09:20:00.010+07:002012-06-14T15:05:51.674+07:00Kelas PHP untuk Merubah Format TanggalPHP Class to Change Date Format .<br />
<br />
Ni ada sharing dariku, kali ini adalah membuat class untuk mengganti/merubah format tanggal. Misal ingin merubah dari tanggal 12/02/2011 menjadi 2011/02/12 atau jadi 12 Februari 2011. Langsung saja, ini script nya (maaf klo masih ada logika yg kurang tepat, ini masih tahap percobaan.) Simpan script ini dengan nama MZA_Date.php <br />
<pre class="brush: php">class MZA_Date{
public $separator;
public $format = array();
function change_format_date($date, $format_date, $new_format_date){
$this->format = array();
$format_date = str_split($format_date);
$this->split_date($format_date);
$format_date = $this->format;
$date = explode($this->separator,$date);
$this->format = array();
$new_format_date = str_split($new_format_date);
$this->split_date($new_format_date);
$new_format_date = $this->format;
for($i=0;$i<count($new_format_date);$i++){
for($j=0;$j<count($format_date);$j++){
if(strcasecmp($format_date[$j],$new_format_date[$i]) == 0){
$new_date[$i] = $this->check_format($date[$j],$new_format_date[$i]);
}
}
}
return $new_date[0].$this->separator.$new_date[1].$this->separator.$new_date[2];
}
function check_format($date, $format_date){
switch ($format_date){
case 'y' : $date = substr($date,-2);break;
case 'M' : $date = $this->month_picker($date); break;
case 'm' : $date = $this->month_picker($date); break;
}
return $date;
}
function month_picker($month){
$array_month = array(0 => "Januari", 1 => "Februari", 2 => "Maret",
3 => "April", 4 => "Mei", 5 => "Juni",
6 => "Juli", 7 => "Agustus", 8 => "September",
9 =>"Oktober", 10 =>"November", 11 =>"Desember");
if(is_int($month)){
$month = intval($month);
return $array_month[$month-1];
}else{
return array_search($month, $array_month)+1;
}
}
function split_date($format_date){
for($i=0;$i<count($format_date);$i++){
if(ctype_alpha($format_date[$i])){
array_push($this->format,$format_date[$i]);
}else{
$this->separator = $format_date[$i];
}
}
}
}</pre>
cara pakainya class tinggal panggil fungsi yg pertama dalam class tersebut, yaitu <span class="geshifilter"><code> change_format_date<span style="color: #009900;">(</span><span style="color: #000088;">$date</span><span style="color: #339933;">,</span> <span style="color: #000088;">$format_date</span><span style="color: #339933;">,</span> <span style="color: #000088;">$new_format_date</span><span style="color: #009900;">)</span></code></span> dimana parameter : <br />
<pre style="background-color: #eeeeee; border: 1px dashed rgb(153, 153, 153); color: black; font-family: Andale Mono,Lucida Console,Monaco,fixed,monospace; font-size: 12px; line-height: 14px; overflow: auto; padding: 5px; width: 100%;"><code><span class="geshifilter"><code><span style="color: #000088;">$date</span> <span style="color: #339933;">:</span> tanggal yang mau di ganti</code></span>
<span class="geshifilter"><code><span style="color: #000088;">$format_date</span> <span style="color: #339933;">:</span> format dari <span style="color: #000088;">$date</span><span style="color: #339933;">,</span> jika <span style="color: #000088;">$date</span> <span style="color: #339933;">=</span> <span style="color: blue;">"13/02/2011"</span> maka <span style="color: #000088;">$format_date</span> HARUS <span style="color: blue;">"d/m/Y"</span></code></span>
<span class="geshifilter"><code><span style="color: #000088;">$new_format_date</span> <span style="color: #339933;">:</span> format tanggal yg baru</code></span>
</code></pre>
Format tanggal yg disediakan <br />
<pre style="background-color: #eeeeee; border: 1px dashed rgb(153, 153, 153); color: black; font-family: Andale Mono,Lucida Console,Monaco,fixed,monospace; font-size: 12px; line-height: 14px; overflow: auto; padding: 5px; width: 100%;"><code> Y <span style="color: #339933;">:</span> Penulisan tahun seperti tahun <span style="color: blue;">"2011"</span>
y <span style="color: #339933;">:</span> Penulisan tahun dengan 2 digit di depan dihilangkan seperti tahun <span style="color: blue;">"11" <span style="color: black;">dari</span> "2011"</span>
M <span style="color: #339933;">:</span> Penulisan nama bulan seperti bulan <span style="color: blue;">"Februari"</span>
m <span style="color: #339933;">:</span> Penulisan nomor urut bulan seperti bulan <span style="color: blue;">"02"</span> atau <span style="color: blue;">"2" <span style="color: black;">untuk bulan</span> "Februari"</span>
d <span style="color: #339933;">:</span> Penulisan tanggal seperti tanggal <span style="color: blue;">"17"</span></code></pre>
Contoh pengggunaan : Buat script seperti d bawah ini, dan simpan dengan nama (contoh) date_example.php <br />
<pre class="brush: php">include_once("MZA_Date.php");
$DATE = new MZA_Date();
$date = date("d m Y");
$format = "d m Y";
$new_format = "d M Y";
$date = $DATE->change_format_date($date, $format, $new_format);</pre>
Demikian dulu sharing PHP Class untuk Merubah Format Tanggal. Semoga bermanfaat... ^_^<br />
<br />
Keyword : PHP to change date format, PHP untuk merubah format tanggal<br />
<br />
Untuk menghargai HKI(Hak Kekayaan Intelektual), sumber referensi yang saya pakai dan saya pelajari akan ditampilkan.<br />
Referensi : <a href="http://id.php.net/manual/en/function.date.php" target="_blank">PHP Date</a><br />
Author : Moch. Zawaruddin Abdullah, www.zawaruddin.blogspot.comMari Belajarhttp://www.blogger.com/profile/06328739015959696311noreply@blogger.com0tag:blogger.com,1999:blog-2140783511966573973.post-43428387255446418422011-03-23T16:11:00.002+07:002012-05-30T13:14:41.054+07:00Cara Cepat Menghapus Folder Autorun.inf Buatan SmadavBagi sebagian orang folder autorun.inf buatan smadav pada usb flashdisk sangat membantu untuk mencegah menyebarnya virus lewat usb flashdisk tersebut. Namun, bagi sebagian orang pula hal ini malah merepotkan atau mengganggu.<br />
<br />
Nah bagi teman-teman yang ingin menghapus folder <b>autorun.inf</b> ini tidak usah repot harus men-donwload aplikasi autorun remover, kita bisa bikin sendiri.<br />
<br />
Caranya,<br />
Buka notepad, kemudian ketik:<br />
<pre style="background-color: #eeeeee; border: 1px dashed rgb(153, 153, 153); color: black; font-family: Andale Mono,Lucida Console,Monaco,fixed,monospace; font-size: 12px; line-height: 14px; overflow: auto; padding: 5px; width: 100%;"><code>
rd /s /q autorun.inf\con\aux\
rd /s /q autorun.inf\con\
rd /s /q autorun.inf\
</code></pre>
Simpan file tersebut dengan ekstensi batch file (contoh <span style="color: red;">autorun_remover.bat</span>), kemudian close notepad.<br />
<br />
Jika ingin menghapus folder autorun.inf, copy-kan file <span style="color: red;">autorun_remover.bat</span> ke direktori yang sama dengan folder autorun berada. Trus double klik file tersebut, tunggu beberapa detik dan hasilnya folder autorun.inf akan terhapus.<br />
<br />
Demikian dulu tutorial Cara Cepat Menghapus Folder Autorun.inf Buatan Smadav... ^_^<br />
<br />
Keyword : hapus autorun smadav<br />
<br />
Untuk menghargai HKI(Hak Kekayaan Intelektual), sumber referensi yang saya pakai dan saya pelajari akan ditampilkan.<br />
<br />
Referensi : <a href="http://www.facebook.com/topic.php?uid=52271446523&topic=11007" target="_blank">Topik Facebook</a><br />
<br />
Author : Moch. Zawaruddin Abdullah, www.zawaruddin.blogspot.comMari Belajarhttp://www.blogger.com/profile/06328739015959696311noreply@blogger.com14tag:blogger.com,1999:blog-2140783511966573973.post-68220551531497930512011-03-14T17:22:00.006+07:002012-06-14T16:40:32.763+07:00Impor File Excel (xls) dengan CodeIgniter dan library excel_readerImport Excel Files (.xls) with CodeIgniter and Excel_reader Library.<br />
<br />
Pertama-tama kita harus download library untuk membaca file excel (xls). Library yang saya gunakan adalah <span style="color: magenta;">excel_reader</span> yang saya dapat di <a href="http://code.google.com/p/php-excel-reader/source/browse/trunk/excel_reader2.php?r=5">google</a>. Simpan file tersebut dalam folder <span style="font-family: "Courier New","Courier",monospace;"><span style="color: blue;">%CI_Root%\system\application\libraries.</span></span><br />
<br />
Selanjutnya jangan lupa untuk men-setting konfigurasi umum dari CodeIgniter.<br />
Buat controller dengan nama contoh.php<br />
<pre class="brush: php">class Contoh extends Controller {
function Contoh(){
parent::Controller();
$this->load->helper('form'); // untuk menangani proses form
}
function index() {
$this->load->view('import_file_excel');
}
function read_file(){
include_once ( APPPATH."libraries/excel_reader2.php");
$data = new Spreadsheet_Excel_Reader($_FILES['userfile']['tmp_name']);
$j = -1;
for ($i=2; $i <= ($data->rowcount($sheet_index=0)); $i++){
$j++;
$nama[$j] = $data->val($i, 1);
$nim[$j] = $data->val($i, 2);
$kelas[$j] = $data->val($i, 3);
}
$xdata['nama'] = $nama;
$xdata['nim'] = $nim;
$xdata['kelas'] = $kelas;
$this->load->view('message_import_file_excel', $xdata);
}
}
</pre>
Penjelasan :<br />
Fungsi index() adalah fungsi yang pertama kali dijalankan saat controller contoh dipanggil.<br />
Fungsi read_file() adalah fungsi untuk membaca data yang ada dalam file excel (xls)<br />
<br />
Selanjutnya kita buat file di view. Ada 2 file yang harus dibuat, yaitu <code>import_file_excel.php</code> dan <code>message_import_file_excel.php</code><br />
untuk <code>import_file_excel.php</code> file ini ditujukan untuk tampilan untuk mengimpor file.<br />
<pre class="brush: php"><html>
<head>
</head>
<body>
<br>
Contoh untuk import excel
<?php echo form_open('contoh/read_file');?>
echo form_fieldset('IMPORT FILE PO'); ?>
<table>
<tr>
<td>Upload file (*.xls) : </td>
<td><input name="userfile" type="file"></td>
<td><input name="upload" type="submit" value="import"></td>
</tr>
</table>
<?php echo form_fieldset_close();
echo form_close();?>
</body>
</html>
</pre>
<br />
untuk file <code>message_import_file_excel.php</code> ditujukan untuk menampilkan data yang telah diimpor dari file excel<br />
<pre class="brush: php"><html>
<head></head>
<body>
<table border="1">
<tr>
<th>Nama</th>
<th>Kelas</th>
<th>Nim</th>
</tr>
<?php $i = 0;
while($i < count($nama)):?>
<tr>
<td><?php echo $nama[$i]?></td>
<td><?php echo $nim[$i]?></td>
<td><?php echo $kelas[$i]?></td>
</tr>
<?php $i++; endwhile;?>
</table>
</body>
</html></pre>
<br />
Nah, aplikasi sederhana untuk membaca file excel telah berhasil dibuat. Untuk contoh tamplate data di file excel dapat mengikuti seperti ini<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgEnhngKRLwh2_cUmWQZFOptUvOVlMfOy0xhUAMosFoEVHHJDOc7Z05cpeorXaZqV6KQG7RcC-P64sNcrxBT7W-YLDu4KrGXOKhKibVliXH6eh_VXZX-uNHME-Jm68DapunKsAD3RDhLRVb/s1600/untitled.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgEnhngKRLwh2_cUmWQZFOptUvOVlMfOy0xhUAMosFoEVHHJDOc7Z05cpeorXaZqV6KQG7RcC-P64sNcrxBT7W-YLDu4KrGXOKhKibVliXH6eh_VXZX-uNHME-Jm68DapunKsAD3RDhLRVb/s1600/untitled.JPG" /></a></div>
<br />
NB :<br />
- kode ini sudah di implementasikan di CI 1.7.3 dan berhasil. Untuk penggunaan di CI 2.0.x, kode bisa sedikit diedit pada class controller sesuai dengan standar penulisan di CI 2.0.x.<br />
<br />
Demikian dulu pengenalan Framework PHP Codeigniter untuk bagian Impor File Excel (xls) dengan CodeIgniter dan library excel_reader... ^_^<br />
<br />
Keyword : impot file excel, excel_reader, CodeIgniter<br />
<br />
Untuk menghargai HKI(Hak Kekayaan Intelektual), sumber referensi yang saya pakai dan saya pelajari akan ditampilkan.<br />
Referensi : CodeIgniter User Guide<br />
Author : Moch. Zawaruddin Abdullah, www.zawaruddin.blogspot.comMari Belajarhttp://www.blogger.com/profile/06328739015959696311noreply@blogger.com70