Post By : Zainuddin am 9. October 2011

Simpeg H +1: Membuat Kerangka SIMPEGDA

Mungkin tahapan awal inilah yang terberat. Menentukan kerangka/ membuat sketsa rancangan awal simpeg. OK, nantinya simpegda akan gw buat begini:

  1. pakai SEF url; biar keren. wkk
  2. template pakai 2 kolom dengan menu di bagian kanan. Menu fixed, isi fluid.
  3. menu atas untuk bermacam-macam menu, sedang menu kanan diisi SKPD/ instansi dan pada modul tertentu beralih fungsi untuk menampilkan foto
  4. menentukan nama. Apa ya bagusnya??? simpol:simpeg online?? simpego:simpeg online atau simpegnya gecko. Ah… buang waktu. namanya simpegda ja deh.. atau kalo ada saran bagus dari temen-temen ntar gw pake deh..
  5. oh iya SEF urlnya pake bantuan mod rewrite

Terus testing server yang gecko pakai:
appserv 2.5.7 yang isinya

  • Apache Web Server Version 2.2.3,
  • PHP Script Language Version 5.1.6,
  • MySQL Database Version 5.0.24a,
  • phpMyAdmin Database Manager Version 2.9.0.2

Atau mungkin kalau mungkin dirasa perlu gw akan upload di server ini progresnya / live demonya.

Tool yang gw pake:

  • macromedia dreamweaver buat edit tabel dan mempermudah editing
  • text editor pakek Scite version 1.57 dari www.scintila.org

Resource:

SIMPEGDA hari pertama sebagai berikut:
terdiri dari 4 buah file yaitu:

  1. index.php >> file untuk layout secara keseluruhan
  2. gecko.php >> otak dari simpegda, menangani database & juga menangani SEF url
  3. .htaccess >> yang menangani SEF url
  4. nominatif.php >> contoh tabel untuk menampilkan nominatif

berikut kodenya:

1.index.php

  1. <?php
  2. include(“gecko.php”);
  3. ?>
  4. <!DOCTYPE html PUBLIC ”-//W3C//DTD XHTML 1.0 Transitional//EN”
  5. “http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd”>
  6. <html xmlns=”http://www.w3.org/1999/xhtml” lang=”en” xml:lang=”en”>
  7. <head>
  8. <meta http-equiv=”Content-Type” content=”text/html; charset=iso-8859-1″ />
  9. <title>Simpegda </title>
  10. <style type=”text/css”>
  11. body{
  12. margin:0;
  13. padding:0;
  14. line-height: 1.5em;
  15. }
  16. b{font-size: 110%;}
  17. em{color: red;}
  18. #topsection{
  19. background: #EAEAEA;
  20. height: 90px; /*Height of top section*/
  21. }
  22. #topsection h1{
  23. margin: 0;
  24. padding-top: 15px;
  25. }
  26. #contentwrapper{
  27. float: left;
  28. width: 100%;
  29. }
  30. #contentcolumn{
  31. margin-right: 200px; /*Set right margin to RightColumnWidth*/
  32. }
  33. #rightcolumn{
  34. float: left;
  35. width: 200px; /*Width of right column in pixels*/
  36. margin-left: -200px; /*Set left margin to -(RightColumnWidth) */
  37. background: #FDE95E;
  38. }
  39. #footer{
  40. clear: left;
  41. width: 100%;
  42. background: black;
  43. color: #FFF;
  44. text-align: center;
  45. padding: 4px 0;
  46. }
  47. #footer a{
  48. color: #FFFF80;
  49. }
  50. .innertube{
  51. margin: 10px; /*Margins for inner DIV inside each column (to provide padding)*/
  52. margin-top: 0;
  53. }
  54. </style>
  55. </head>
  56. <body>
  57. <div id=”maincontainer”>
  58. <div id=”topsection”><div class=”innertube”>
  59.   <h1>Simpegda</h1><br  />
  60. <a href=”<?=$website?>home” >Home</a> |
  61. <a href=”<?=$website?><?=$a_url?>/nominatif” >Nominatif</a> |
  62. <a href=”<?=$website?><?=$a_url?>/rekapitulasi” >Rekapitulasi</a> |
  63. <?php
  64. echo ’menua menub menuc menud menue menuf’; ?>
  65. </div></div>
  66. <div id=”contentwrapper”>
  67. <div id=”contentcolumn”>
  68. <div class=”innertube”>
  69. <!–// isi–>
  70. <?php isi(); ?>
  71. <!–//end isi–>
  72.     <br /><hr />
  73. <?php
  74. echo ’<b>website : </b> ’.$website.’<br>’;
  75. echo ’<b>$a_url : </b> ’.$a_url.’<br>’;
  76. echo ’<b>$b_url : </b> ’.$b_url.’<br>’;
  77. echo ’<b>$c_url : </b> ’.$c_url.’<br>’;
  78. ?>
  79. </div>
  80. </div>
  81. </div>
  82. <div id=”rightcolumn”>
  83. <div class=”innertube”><?php menu_skpd(); ?></div>
  84. </div>
  85. <div id=”footer”>© 2008 <a href=”http://www.gecko.web.id”>www.gecko.web.id</a> </div>
  86. </div>
  87. </body>
  88. </html>

2. gecko.php

  1. <?
  2. //   DATABASE
  3. //==============//
  4. $db_host = ”localhost”;
  5. $db_user = ”root”;
  6. $db_pass = ”sipit”;
  7. $db_name = ”simpegda”;
  8. //   KONEKSI KE DATABASE
  9. //=========================//
  10. $link = mysql_pconnect ($db_host, $db_user, $db_pass) or die (“Ga bisa connect”);
  11. mysql_select_db ($db_name) or die (“Ga bisa select database”);
  12. $host = ’http://’.$_SERVER['HTTP_HOST'];
  13. $directory = dirname($_SERVER["SCRIPT_NAME"]);
  14. $website = $directory == ’/' ? $host.’/' : $host.$directory.’/';
  15. /********************************************
  16. //================================//
  17. //   MENDAPATKAN SEO URL
  18. //================================//
  19.    ==>> konsep directory ::
  20.    simpol/dinas/aksinya/detailnya.htm
  21.       + all/biodata/510142744.htm
  22.       + bkd/nominatif
  23.       + all/cari/eko.htm
  24.       -a-  /  -b-  /  -c-  .htm
  25. *********************************************/
  26. $url = explode(‘/’,clean(cleanXSS($_SERVER['REQUEST_URI'])));
  27. $a_url = $url[2];
  28.   $a_url = explode(‘.’,$a_url);
  29.   $a_url = $a_url[0];
  30. $b_url = $url[3];
  31.   $b_url = explode(‘.’,$b_url);
  32.   $b_url = $b_url[0];
  33. $c_url = $url[4];
  34.   $c_url = explode(‘.’,$c_url);
  35.   $c_url = $c_url[0];
  36. if (!$a_url) { $a_url = ’home’; }
  37. //==================================//
  38. //  MODULs
  39. //==================================//
  40. // Isi
  41. function isi() {
  42.         global $a_url, $b_url, $c_url;
  43.     switch(true) {
  44.             case ($a_url == home) :
  45.                   echo ’Anda berada di halaman depan (home) dan disini akan diisi statistik pegawai secara umum. $a_url diset semua pegawai’;
  46.                   break;
  47.             case ($b_url == nominatif):
  48.                   echo ’Nominatif ’.$a_url;
  49.                   include(“modul/nominatif.php”);
  50.                   break;
  51.             case ($b_url == rekapitulasi):
  52.                   echo ’Rekapitulasi ’.$a_url;
  53.                   break;
  54.             case isset($c_url):  break;
  55.     }
  56. }
  57. // menu DKPD
  58. function menu_skpd() {
  59.         global $link, $website, $a_url, $b_url, $c_url ;
  60.         $sql = mysql_query(“SELECT tampil,skpd_singkat,skpd_sef FROM skpd where skpd.tampil = 1 order by skpd.skpd_singkat ASC”) or die(mysql_error());
  61.     while ($res=mysql_fetch_array($sql)) {
  62.         echo ’<a href=”‘.$website.$res['skpd_sef'].’/’.$b_url.’/’.$c_url.’”>’.$res['skpd_singkat'].’</a><br>’;
  63.         }
  64.         mysql_free_result($sql);
  65. }
  66. //==================================//
  67. //  FUNCTIONs
  68. //==================================//
  69. // XSS CLEAN
  70. function cleanXSS($val) {
  71.     # source from http://quickwired.com/kallahar/smallprojects/php_xss_filter_function.php
  72.     $val = preg_replace(‘/([x00-x08][x0b-x0c][x0e-x20])/’, ”, $val);
  73.     $search = ’abcdefghijklmnopqrstuvwxyz’;
  74.     $search .= ’ABCDEFGHIJKLMNOPQRSTUVWXYZ’;
  75.     $search .= ’1234567890!@#$%^&*()’;
  76.     $search .= ’~`”;:?+/={}[]-_|’\';
  77.     for ($i = 0; $i < strlen($search); $i++) {
  78.         $val = preg_replace(‘/(&#[x|X]0{0,8}’.dechex(ord($search[$i])).’;?)/i’, $search[$i], $val);
  79.         $val = preg_replace(‘/(�{0,8}’.ord($search[$i]).’;?)/’, $search[$i], $val);
  80.     }
  81.     $ra1 = Array(‘javascript’, ’vbscript’, ’expression’, ’applet’, ’meta’, ’xml’, ’blink’, ’link’, ’style’, ’script’, ’embed’, ’object’, ’iframe’, ’frame’, ’frameset’, ’ilayer’, ’layer’, ’bgsound’, ’title’, ’base’);
  82.     $ra2 = Array(‘onabort’, ’onactivate’, ’onafterprint’, ’onafterupdate’, ’onbeforeactivate’, ’onbeforecopy’, ’onbeforecut’, ’onbeforedeactivate’, ’onbeforeeditfocus’, ’onbeforepaste’, ’onbeforeprint’, ’onbeforeunload’, ’onbeforeupdate’, ’onblur’, ’onbounce’, ’oncellchange’, ’onchange’, ’onclick’, ’oncontextmenu’, ’oncontrolselect’, ’oncopy’, ’oncut’, ’ondataavailable’, ’ondatasetchanged’, ’ondatasetcomplete’, ’ondblclick’, ’ondeactivate’, ’ondrag’, ’ondragend’, ’ondragenter’, ’ondragleave’, ’ondragover’, ’ondragstart’, ’ondrop’, ’onerror’, ’onerrorupdate’, ’onfilterchange’, ’onfinish’, ’onfocus’, ’onfocusin’, ’onfocusout’, ’onhelp’, ’onkeydown’, ’onkeypress’, ’onkeyup’, ’onlayoutcomplete’, ’onload’, ’onlosecapture’, ’onmousedown’, ’onmouseenter’, ’onmouseleave’, ’onmousemove’, ’onmouseout’, ’onmouseover’, ’onmouseup’, ’onmousewheel’, ’onmove’, ’onmoveend’, ’onmovestart’, ’onpaste’, ’onpropertychange’, ’onreadystatechange’, ’onreset’, ’onresize’, ’onresizeend’, ’onresizestart’, ’onrowenter’, ’onrowexit’, ’onrowsdelete’, ’onrowsinserted’, ’onscroll’, ’onselect’, ’onselectionchange’, ’onselectstart’, ’onstart’, ’onstop’, ’onsubmit’, ’onunload’);
  83.     $ra = array_merge($ra1, $ra2);
  84.     $found = true;
  85.     while ($found == true) {
  86.         $val_before = $val;
  87.         for ($i = 0; $i < sizeof($ra); $i++) {
  88.             $pattern = ’/';
  89.             for ($j = 0; $j < strlen($ra[$i]); $j++) {
  90.                 if ($j > 0) {
  91.                     $pattern .= ’(‘;
  92.                     $pattern .= ’(&#[x|X]0{0,8}([9][a][b]);?)?’;
  93.                     $pattern .= ’|(�{0,8}([9][10][13]);?)?’;
  94.                     $pattern .= ’)?’;
  95.                 }
  96.                 $pattern .= $ra[$i][$j];
  97.             }
  98.             $pattern .= ’/i’;
  99.             $replacement = substr($ra[$i], 0, 2).’<x>’.substr($ra[$i], 2);
  100.             $val = preg_replace($pattern, $replacement, $val);
  101.             if ($val_before == $val) {$found = false;}
  102.         }
  103.     }
  104.     $allowedtags = ”<strong><em><ul><li><pre><hr><blockquote><span>”;
  105.     $cstring = strip_tags($val, $allowedtags);
  106.     $cstring = nl2br($cstring);
  107.     return $cstring;
  108. }
  109. // CLEAN - cleaning query
  110. function clean($query) {
  111.     if (get_magic_quotes_gpc()) {$query = stripslashes($query);}
  112.     $query = mysql_real_escape_string($query);
  113.     return $query;
  114. }
  115. ?>

3. .htaccess

  1. <ifmodule mod_php4.c=”">
  2.     php_value session.use_trans_sid 0
  3. </ifmodule>
  4. <ifmodule mod_security.c=”">
  5. SecFilterEngine Off
  6. SecFilterScanPOST Off
  7. </ifmodule>
  8. RewriteEngine On
  9. RewriteCond %{REQUEST_FILENAME} !-f
  10. RewriteCond %{REQUEST_FILENAME} !-d
  11. RewriteCond %{REQUEST_FILENAME} !-l
  12. RewriteRule ^.* index.php

4. nominatif.php

  1. <table width=”100%” border=”1″>
  2.   <tr>
  3.     <td align=”center” valign=”middle”>No.</td>
  4.     <td align=”center” valign=”middle”>Nama /<br />
  5.     NIP</td>
  6.     <td align=”center” valign=”middle”>Tempat /<br />
  7.     Tanggal Lahir </td>
  8.     <td align=”center” valign=”middle”>GR / TMT </td>
  9.     <td align=”center” valign=”middle”>Pendidikan</td>
  10.     <td align=”center” valign=”middle”>Jabatan</td>
  11.     <td align=”center” valign=”middle”>Alamat</td>
  12.   </tr>
  13.   <tr>
  14.     <td align=”center” valign=”top”>1</td>
  15.     <td align=”center” valign=”top”>2</td>
  16.     <td align=”center” valign=”top”>3</td>
  17.     <td align=”center” valign=”top”>4</td>
  18.     <td align=”center” valign=”top”>5</td>
  19.     <td align=”center” valign=”top”>6</td>
  20.     <td align=”center” valign=”top”>7</td>
  21.   </tr>
  22.   <tr>
  23.     <td align=”left” valign=”top”> </td>
  24.     <td align=”left” valign=”top”> </td>
  25.     <td align=”left” valign=”top”> </td>
  26.     <td align=”left” valign=”top”> </td>
  27.     <td align=”left” valign=”top”> </td>
  28.     <td align=”left” valign=”top”> </td>
  29.     <td align=”left” valign=”top”> </td>
  30.   </tr>
  31. </table>

Memang belum berwujud sebuah simpeg. Karena memang masih dihari pertama. Di hari berikutnya kita lanjutkan lagi.. kalo ada script yang salah, kurang bagus mohon dikomentari. TNX

Post By : Zainuddin am 9. October 2011

Memilih CMS (Content Management System)

Ada banyak CMS script yang bisa digunakan untuk membuat blog. Bahkan banyak di antaranya yang gratis. Adapula yang sudah menyediakan installed script, jadi Anda tinggal daftar dan bisa langsung ber-blogging ria. Cukup mudah memang, bahkan untuk pemula yang tidak mengerti PHP, CSS dan database ataupun yang tidak bisa HTML.

Berikut beberapa hal yang perlu diperhatikan dalam pemilihan CMS Script:

  • Apakah CMS script tersebut sesuai dengan kebutuhan Anda
    Apa yang Anda harapkan dari blog? Cukup untuk menulis saja ataukah perlu komentar, trackback, callendar dll. Apakah CMS tersebut cocok untuk blogging, news manajemen ataukah untuk online education.
  • Apakah webhosting Anda mendukung untuk CMS script tersebut.
    Perlu diperhatikan apakah webhosting Anda mendukung database mysql, kalo tidak maka kita gunakan saja yang memakai database flat text. Apakah versi PHP memenuhi? Apakah Gd-librarynya untuk mendukung image manipulation. dll
  • Apakah sesuai dengan koneksi internet Anda
    Kalo Anda menggunakan CMS yang banyak fasilitasnya (menggunakan AJAX sehingga mirip aplikasi destop) sehingga waktu loadingnya lama, perlu diperhatikan apakah koneksi internet Anda mampu. Untuk mobile blogging apakah bisa??
  • Apakah mendukung SEF
    Sangat perlu agar bot google sudi singgah di website kita.
  • Apakah mendukung RSS
    RSS sepertinya sekarang sudah menjadi menu wajib di website-website sekarang. Bahkan juga mampu mendongkrak popularitas web site kita di google.
  • Apakah mendukung pembagian kategori
    Agar pengunjung kita mudah membaca website kita. Lebih mudah membaca tulisan yang dikategorikan dengan baik daripada yang tercampur menjadi satu.
  • Apakah mendukung sitemap dan Google sitemap.
    Sitemap sebenarnya mempermudah user untuk menelusuri website kita. Akan tetapi kenyataannya juga mempermudah bot google dalam mengindex website kita. Apabila CMS kita mendukung google sitemap, maka akan membantu sekali.

Berikut review dari beberapa CMS, dan sebelumnya mohon maaf karena review ini merupakan pendapat pribadi dari penulis setelah mencoba CMS tersebut di komputer lokal dan beberapa di webhosting beneran;

  • WordPress
    • Website : http://www.wordpress.com
    • Fasilitas : Sangat lengkap, tersedia banyak plugin untuk menambah fungsi.
    • SEF : Ada dan bagus
    • Templating : Ada banyak tersedia free template
    • Komentar : Sangat bagus untuk blogging
  • Snews15
    • Website : http://www.solucija.com/snews
    • Fasilitas : Mencukupi untuk blogging stAndar
    • SEF : Ada
    • Templating : tersedia free template
    • Komentar : bagus untuk yang mengutamakan kesederhanaan, dengan sedikit addon dan fixed akan menjadi CMS yang sempurna. Mungkin di rilis selanjutnya.
  • N13
    • Website : http://network-13.com
    • Fasilitas : standar
    • SEF : tidak
    • Templating : bikin sendiri
    • Komentar : dulu pernah menggunakan, tapi karena tidak SEF jadi males
    • Kesimpulan : Tidak SEF dan fasilitasnya stAndart banget
  • Etomite0613
    • Website : http://www.etomite.org
    • Fasilitas : Sangat lengkap dengan fasilitas ajax di bagian Admin. Karena terlalu lengkap malah bingung J
    • SEF : Ya, bahkan ada fasilitas untuk membuat static page.
    • Templating : Ya
    • Komentar : sebenarnya bagus, tapi pas masuk Admin jadi males karena terlalu banyak menu dan loadingnya lama.
  • Modx-0.9.6-rc1
    • Website : http://modxcms.com
    • Fasilitas : Lengkap
    • SEF : tidak
    • Templating : Ya
    • Komentar : Sebenarnya bagus cuman sayang tidak mendukung SEF. Mungkin di rilis selanjutnya.
  • Doop
    • Website : http://www.doop.co.nr
    • Fasilitas : Minim
    • SEF : Ya
    • Templating : tidak
    • Komentar : Unik. Pertama mencoba sempat bingung bagaimana cara kerja CMS ini, karena tidak ada database maupun flat text sebagai gantinya. Ternyata postingan baru langsung disimpan jadi file HTML. Cuman sayang ga da fasilitas lain seperti komentar dan arsip.

Untuk memilih CMS script apa yang cocok untuk Anda, situs-situs berikut mungkin layak dijadikan sarana untuk menentukan pilihan.

Sebuah situs yang memang dikhususkan untu memonitor open source CMS. Anda bisa mencoba live demo di sini sebelum anda mendoloadnya. Review dari pembaca-pembaca lain juga dijadikan referensi.

Bisa disebut sebagai gudangnya script. Anda bisa menelusuri script-script CMS mulai dari yang berbayar hingga yang gratis. Mulai yang dari CMS paling komplek hingga CMS yang paling simpel berupa satu file saja. (serius)

Post By : Zainuddin am 9. October 2011

14 hal untuk membuat website yang cepat diload

Kali ini kita membahas bagaimana cara mengoptimalkan website kita agar cepat diload. Hal ini saya rasa perlu karena banyak user yang koneksi internetnya masih lambat seperti penulis sendiri. Atau paling tidak kita memberikan pelayanan yang prima ke user. User kita jangan disuguhi halaman yang isinya .. pls wait a minutes. loading in progress.. Wew.. siapa juga yang mau menunggu. Di samping itu, menurut yang pernah saya baca “kecepatan loading suatu halaman berbanding lurus dengan jumlah pengunjung”. Maaf penulis lupa linknya, tapi kalau dipikir memang masuk akal juga. Pembaca yang kelamaan menunggu loading halaman, pasti tidak sabar dan kebanyakan langsung menutup halamannya.

Pada artikel kali ini penulis mencoba menjelaskan 14 aturan dasar agar website kita cepat diload.

    1. Perkecil jumlah HTTP requests

Hindari pemakaian image map server site dan perkecil jumlah script hal-hal lain yang merequest ke server

    1. Gunakan CDN

Content Delivery Network (CDN) adalah networ komputer yang terhubung bersama-sama melalui internet yang bekerjasama untuk mengirimkan content kepada user. Berikut situs-situs dan penyedia layanan CDNnya:

.CDN situ-situs besar

    1. Tambahkan Expires header
      Browser akan mencocokkan apakah cache di browser sudah kadaluarsa apa belum dan ini akan memakan waktu apabila ternyata cache sudah kadaluarsa. Untuk mencegah ini tambahkan expires date.
    2. Gzip components

HTML, XML, CSS dan JSon (selain gambar dan PDF). Penulis menggunakan kode berikut di baris atas untuk mengcompress halaman blog ini.

  1. <?php
  2. ob_start(“ob_gzhandler”);
  3. ?>
    1. Tempatkan CSS di bagian atas

Karena CSS akan menghalangi proses render di Internet Explorer. Untuk mencegah hal ini letakkan CSS di <HEAD> HTML Anda dan gunakan external link ke CSS Anda jangan menggunakan @import.

    1. Pindahkan Java Script ke bagian bawah

Akibat dari javascript diletakkan di atas adalah adanya blank screen berwarna putih yang lama saat loading dan tertundanya loading isi halaman. Java Script tidak akan bekerja apabila obyek yang dikenai efek script belum selesai diload. Contohnya apabila kita menambahkan tool tips di links-links kita. Apanya yang akan diberi tools tips, jika links itu sendiri masih diload oleh browser. Belum lagi loading CSS dari tool tips itu sendiri.

Dan kenyataanya Java Script menghalangi browser melakukan parallel downloads dan menghalangi rendering semua content yang berada di bawahnya (CSS, HTML, image, dll). Pada keadaan normal (tidak ada Java Script) image akan didownload secara parallel sedangkan jika ada Java Script di bagian atas maka Java Script akan menghalangi proses ini, sampai keseluruhan kode java script selesai diload.

jika script diletakkan di baris atas

Untuk menghindari hal ini sebisa mungkin pindahkan java script ke bagian yang paling bawah. Tentunya tidak melupakan perimbangan agar java script tersebut bisa bekerja.

    1. Hindari CSS expressions
      CSS expressions dikenalkan pertama kali di Explorer 5.0 dan memperbolehkan kita untuk memanggil JavaScript expression ke dalam CSS. Sebagai contohnya adalah CSS expression untuk menentukan posisi elemen div berdasarkan uskuran browser. Menjanjikan memang, tapi silahkan Anda coba sendiri di browser Anda.
      Berikut contohnya:

       

      1. #myDiv {
      2.    position:   absolute;
      3.    width:      100px;
      4.    height:     100px;
      5.    left:       expression(document.body.offsetWidth  - 110 + ”px”);
      6.    top:        expression(document.body.offsetHeight - 110 + ”px”);
      7.    background: red;
      8. }

      CSS expressions are a powerful (and dangerous) way to set CSS properties dynamically.
      High Performance Web Sites by Steve Souders

      Masalah yang timbul dengan penggunaan CSS expression adalah, CSS expression ini dijalankan berkali-kali, lebih dari yang diharapkan. Tidak hanya dijalankan saat halaman dirender dan diresize tetapi juga saat halaman di scroll bahkan saat user mengerakkan mouse di halaman web tersebut.

    2. Buat JavaScripts and CSS externalAlasan membuat Script dan CSS external adalah agar dapat dicache oleh browser. Dengan demikian halaman akan cepat diload apabila user kembali lagi ke halaman kita.
      1. <link href=”style/style.css” rel=”stylesheet” type=”text/css” />
      2.   <script src=”contoh_javascript.js?t=1179019634″></script>
    3. Mengurangi DNS lookups

Alasan utamanya adalah DNS lookup bisa menghalangi browser untuk melakukan parallel downloads.

    1. Perkecil ukuran file Java Script

Dengan salah satu javascript compression tool di bawah ini, Anda bisa menghilangkan whitespaces yang tidak berguna dari file javascript. Dengan demikian ukuran file menjadi kecil dan akan mempercepat waktu download. Dengan tool tersebut Anda juga dapat menghilangkan komentar pribadi terhadap script yang telah Anda buat.

      Berikut tool yang bisa digunakan untuk memperkcel ukuran java script Anda:

 

      -

http://crockford.com/javascript/jsmin

      -

http://dojotoolkit.org/docs/shrinksafe

    1. Menghindari redirects

Berikut gambaran waktu yang dibutuhkan untuk redirect.
karena ada redirect

    1. Hilangkan duplicate scripts

Jangan meng-include script lebih dari sekali. Atau Memasukkan include di fetch array yang akan diload sebanyak x data.
Akibatnya adalah extra HTTP requests (hanya di IE) dan eksekusi script yang berulang. Akibatnya loading halaman menjadi lama. “Akan tetapi kenyataanya sekarang 2 dari 10 website terkemuka masih melakukannya. *Steve Souders

    1. Matikan ETags

Entity tags (ETags) adalah suatu mekanisme yang digunakan oleh web server dan browser untuk memvalidasi komponen cached.

    1. buat AJAX bisa di-cache dan kecil

Ajax memang pada awalnya didesain untuk meload content tertentu tanpa meload halaman secara keseluruhan. Tapi sekarang sepertinya lebih mengarah ke segi interaktifnya. Memang bisa load data tanpa harus refresh page, tapi coba lihat Yahoo mail beta yang loadingnya lama banget. Penulis lebih suka cek email lewat wap di Opera. Atau Gmail yang banyak lebih suka mengakses lewat Thunderbird atau Outlook. Mungkin cuma bagus yang punya jaringan pita lebar kali.

Post By : Zainuddin am 9. October 2011

Menyimpan gambar ke dalam database MySql

Artikel ini saya ubah karena terus terang script yang lama tidak berfungsi maksimal karena saya tidak menyertakan beberapa file yang di-include seperti PHP mysql connect dan bebrapa function. Hal ini dikarenakan say cuman ngasih sedikit clue dan menanggapi request dari saudari Shary.

Saya berharap dengan sedikit clue bisa membantunya.

contoh upload gambar ke database

Tapi maksud baik mendapat tanggapan lain, beberapa script kiddies menganggap ane plagiat. Plagiat dari mana? tolong sebutkan dari mana?
Terus terang script lama saya kopas dari SIMPEG pemkab Trenggalek. Tapi bentar, programmer SIMPEG Online pemkab Trenggalek versi 1 itu programmernya the one and only cuman saya.. dari script sampai database saya yang ngulik.. kok dikatakan plagiat..

Marilah kita koreksi diri kita masing-masing, untuk belajar PHP kita tidak bisa hanya kopas, tapi pahami satu per satu kodenya…

Sebagai gantinya ini script upload gambar yang sudah saya perbaiki beberapa tahun kemarin. Karena bolak-balik pindah post mengenai script ini hilang..

Saya bangkitkan lagi di sini buat menanggapi beberapa orang yang mengatai plagiat. heheheh..
Tertawa bikin sehat.. piss man (*___*)

Oke sekian curhatnya, mari kita lihat tutorialnya….

SIMPAN GAMBAR KE DATABASE MYSQL
=================================
oleh: http://gecko.web.id

Petunjuk:
1. bikin database pakai foto.sql
2. Untuk menjalankan file buka simpan_foto.php

Fasilitas:
1. menolak type selain gambar
2. meresize gambar ke lebar yang ditemtukan
3. lebar gambar dan tingginya tetap proporsional

Sekian tutorial dan pembelaan dari saya, masih bisa komentar kah??

contoh upload gambar ke database

Kalau belum puas bisa menuntut saya di meja hijau.. tapi karena plagiat script ane sendiri?

Download Script yang sudah saya ubah: http://www.box.net/shared/o2p2lxnryy

 

 

Artikel ini ke bawah yg membuat saya dikatain plagiat hahahahaha

Mending ga usah dibaca karena udah saya update di sini


Menanggapi request Shary, ini ada script yang km minta.

Oh iya, script ini sudah dilengkapi dengan auto resize gambar dan sudah dilengkapi fungsi cek apakah yang diupload itu gambar atau bukan.

Ini gw ambil dari simpeg online Pemkab Trenggalek. Silahkan diedit sesuai keperluan Anda.

Script untuk menyimpan gambar:

  1. <?php
  2. //   DATABASE
  3. $db_host = ”localhost”;
  4. $db_user = ”root”;
  5. $db_pass = ”p455w0rdku”;
  6. $db_name = ”simpol”;
  7. //   BAGIAN INI KE BAWAH JANGAN DIUBAH
  8. $link = mysql_pconnect ($db_host, $db_user, $db_pass) or die (“Ga bisa connect”);
  9. mysql_select_db ($db_name) or die (“Ga bisa select database”);
  10. if (isset($act) && $act == ”up_foto”) {
  11. $id = trim($nip);
  12. $editFormAction = $_SERVER['PHP_SELF'];
  13. $img_thumb_width = 120;
  14. $path_thumbs = ”items/icons”;
  15.        $file_type = $_FILES['imgfile']['type'];
  16.        $file_name = $_FILES['imgfile']['name'];
  17.        $file_size = $_FILES['imgfile']['size'];
  18.        $file_tmp = $_FILES['imgfile']['tmp_name'];
  19.        //check if you have selected a file.
  20.        if(!is_uploaded_file($file_tmp)){
  21.           echo ”<BR><BR>Anda belum memilih file gambar…..”;
  22.     print ”<meta http-equiv=”refresh” content=”0; URL=?mod=up_foto&nip=$nip”>”;
  23.           exit(); //exit the script and don’t do anything else.
  24.        }
  25.        //check file extension jika salah or bukan gambar langsung keluar
  26.     $size =GetImageSize(“$file_tmp”);
  27.     if (($size[2] < 1) || ($size[2] > 4)) {
  28.     echo ’<BR><BR>Maaf yang Anda pilih bukan gambar’;
  29.     print ”<meta http-equiv=”refresh” content=”0; URL=?mod=up_foto&nip=$nip”>”;
  30.     exit();
  31.     }
  32.        //get the file extension.
  33.        $getExt = explode (‘.’, $file_name);
  34.        $file_ext = $getExt[count($getExt)-1];
  35.        //create a random file name
  36.        $rand_name= ”tmp”;
  37.        //get the new width variable.
  38.        $ThumbWidth = $img_thumb_width;
  39.        //keep image type
  40.        if($file_size){
  41.           if($file_type == ”image/pjpeg” || $file_type == ”image/jpeg”){
  42.                $new_img = imagecreatefromjpeg($file_tmp);
  43.            }elseif($file_type == ”image/x-png” || $file_type == ”image/png”){
  44.                $new_img = imagecreatefrompng($file_tmp);
  45.            }elseif($file_type == ”image/gif”){
  46.                $new_img = imagecreatefromgif($file_tmp);
  47.            }
  48.            //list width and height and keep height ratio.
  49.            list($width, $height) = getimagesize($file_tmp);
  50.            $imgratio=$width/$height;
  51.            if ($imgratio>1){
  52.               $newwidth = $ThumbWidth;
  53.               $newheight = $ThumbWidth/$imgratio;
  54.            }else{
  55.                  $newheight = $ThumbWidth;
  56.                  $newwidth = $ThumbWidth*$imgratio;
  57.            }
  58.           //function for resize image.
  59.            if (function_exists(imagecreatetruecolor)){
  60.            $resized_img = imagecreatetruecolor($newwidth,$newheight);
  61.            }else{
  62.                  die(“Error: Please make sure you have GD library ver 2+”);
  63.            }
  64.            imagecopyresized($resized_img, $new_img, 0, 0, 0, 0, $newwidth, $newheight, $width, $height);
  65.            //save image
  66.            ImageJpeg ($resized_img,”$path_thumbs/$rand_name.$file_ext”);
  67.            ImageDestroy ($resized_img);
  68.            ImageDestroy ($new_img);
  69. $gb_baru = ”$path_thumbs/$rand_name.$file_ext”;
  70. ///ini ke bawah buat nyimpen gambar ke database
  71. $fp = fopen($gb_baru, ’r') or die(‘ga bisa buka gambar’);
  72. $data=fread($fp,filesize(“$gb_baru”));
  73. $data = mysql_escape_string($data);
  74. $updatesql=mysql_query(“UPDATE foto SET FOTO=’$data’  where NIP=’$id’”) or die(mysql_error());
  75. }
  76. }
  77. ?>
  78. <br />
  79. <br />
  80. <table width=”100%” border=”0″ cellpadding=”0″ cellspacing=”1″ background=”items/bg_gradasi.jpg”>
  81.   <tr>
  82.     <td width=”73%”><strong><img src=”items/icons/duk.gif”  hspace=”5″ align=”absmiddle” /> <big>EDIT FOTO </big> </strong></td>
  83.     <td width=”27%” align=”center”> </td>
  84.   </tr>
  85. </table>
  86. <form method=”POST”  enctype=”multipart/form-data” action=”<?php echo $editFormAction; ?>?mod=up_foto&nip=<?= $nip ?>&act=up_foto”>
  87.   <table width=”58%” border=”0″ align=”center”>
  88.     <tr>
  89.       <td width=”176″ rowspan=”3″ align=”center” valign=”middle”><table cellspacing=”3″ border=”0″>
  90.         <tbody>
  91.           <tr>
  92.             <td width=”100%” bgcolor=”#999999″><table cellspacing=”0″ cellpadding=”3″ width=”100%” border=”0″>
  93.                 <tbody>
  94.                   <tr>
  95.                     <td bgcolor=”#ededed”><a href=”?mod=up_foto&nip=<?= $nip ?>”><img src=”modul/foto.php?nip=<?php echo $nip; ?>” alt=”Foto” name=”foto” border=”3″ id=”foto” /></a></td>
  96.                   </tr>
  97.                 </tbody>
  98.             </table></td>
  99.           </tr>
  100.         </tbody>
  101.       </table></td>
  102.       <td height=”23″ colspan=”2″ valign=”bottom”>Silahkan klik ”<em><strong>Browse</strong></em>” dan pilih foto yang baru, kemudian klik ”<strong><em>Submit</em></strong>”. </td>
  103.     </tr>
  104.     <tr>
  105.       <td height=”23″ colspan=”2″ valign=”bottom”><input name=”imgfile” type=”file” id=”imgfile” size=”35″ /></td>
  106.     </tr>
  107.     <tr>
  108.       <td width=”310″ valign=”middle”><br />
  109.       <br /></td>
  110.       <td width=”66″ align=”center” valign=”middle”><input type=”submit” name=”Submit” value=”Submit” /></td>
  111.     </tr>
  112.   </table>
  113. </form>

Kalo yang ini untuk menampilkan gambarnya:

  1. <?php
  2. //   DATABASE
  3. $db_host = ”localhost”;
  4. $db_user = ”root”;
  5. $db_pass = ”p455w0rdku”;
  6. $db_name = ”simpol”;
  7. //   BAGIAN INI KE BAWAH JANGAN DIUBAH
  8. $link = mysql_pconnect ($db_host, $db_user, $db_pass) or die (“Ga bisa connect”);
  9. mysql_select_db ($db_name) or die (“Ga bisa select database”);
  10. require_once (‘../inc/db.php’);
  11. $sql = mysql_query(“SELECT NIP,FOTO FROM foto where  foto.NIP = ”$nip” ”) or die(mysql_error());
  12.     while ($res=mysql_fetch_array($sql)) {
  13. echo $res['FOTO'];
  14.  }
  15. mysql_free_result($sql);
  16. ?>

Kemudian struktur databasenya sebagai berikut:

  1. CREATE TABLE `foto` (
  2.   `NIP` varchar(27) NOT NULL default ”,
  3.   `FOTO` longblob,
  4.   PRIMARY KEY  (`NIP`)
  5. ) ENGINE=MyISAM DEFAULT CHARSET=latin1;

Cuman begitu saja. Semoga bermanfaat.

Contoh yang sudah berjalan: contoh upload gambar ke database

 

Download Script yang sudah saya ubah: http://www.box.net/shared/o2p2lxnryy

Post By : Zainuddin am 9. October 2011

Membuat Kamus sederhana Inggris – Indonesia dengan PHP dan MySQL

Untuk tutorial selanjutnya gw pengen bikin kamus. hal yang bisa kita pelajari di sini adalah:

  1. bagaimana membuat proyek sederhana,
  2. export csv ke MySQL
  3. bagaimana menghubungkan dengan database mySQL,
  4. bagaimana menampilkan data dan
  5. memanfaatkan pencarian dengan PHP.

Untuk mempermudah mereka yang ingin belajar maka proyek ini saya buat sesederhana mungkin agar mudah dipahami. Apabila Anda ingin mengembangkannya silahkan dan alangkah baiknya kalo Anda share di sini.

 

PERSIAPAN

Baiklah mari kita mulai, tapi sebelumnya siapkan siapkan alat dan bahan berikut:

  1. server PHP dan server mysql / appserv / xamps : baca artikel instalasi webserver (Appserv)
  2. text editor (notepad++, scite, ultraedit, dll) atau Dreamweaver.
  3. database dari gkamus (gkamus-en.dict dan gkamus-id.dict)

Hal paling penting di kamus adalah databasenya.Setelah nanya-nanya om google akhirnya nemu databasenya gkamus (http://gkamus.sourceforge.net). Syukurlah databasenya public domain, artinya bisa kita pakai di tutorial ini. Makasih buat saudara Ardhan Madras, Firmansyah dan Hantarto Gunawan.

 

EXPORT DATABASE KE CSV

Database di sini ada dua macam yaitu:

  1. gkamus-en.dict : kamus English ke bahasa Indonesia
  2. gkamus-id.dict : kamus bahasa Indonesia ke English

Selanjutnya database ini kita convert (ubah) menjadi bentuk mysql. Nantinya kita buat dua tabel yakni tabel english dan tabel indonesia.

Mari kita obok-obok database. pertama kita export menjadi bentuk *.CSV lewat excel. Buka aja file gkamus-en.dict dan gkamus-id.dict tadi. tapi satu-satu ajah biar ga ribet. Kalo ga bisa buka sini gw ajarin buka. caranya klik kanan open trus pilih “select program from list” klik OK dan pilih “Microsoft office excel“.

Ini screen shotnya.

membuat kamus screen shot database kamus

Kemudian hapus yang tidak berguna. Hapus baris 1 sampai dengan 5. delete rows. Ok siap diexport ke *.csv.
Pilih file | save as another format | di bagian save as type pilih “CSV (comma delimited)“. Kasih nama english. Klik save apabila ada prompt klik yes

PENTING:
lakukan juga search an replace karakter (double quote) menjadi ` (back quote)
ini penting agar waktu import ke mySQL tidak mengalami error.
Catatan: backquote bukanlah quote. Kalo di keyboard gw letaknya di bawah tilde (~)

simpan database kamus jadi csv file
Lakukan juga pada file satunya kemudian export ke *.csv dengan nama indonesia

Apabila ingin tahu hasil exportnya ini gw share: indonesia.csv dan english.csv.

 

EXPORT CSV KE MySQL

Untuk export dari csv ke MySql kita pakai phpmyadmin. Omong-omong phpmyadmin ini udah ada di bundle phpmyadmin. buka http://localhost dan ada akan mendapatinya di situ.

klik phpmyadmin

Klik link tersebut. kalo diminta password, masukkan user dan password Anda, apabila phpmyadmin-nya belum ada set biasanya user: root dan passwordnya kosong. Kemudian buat database dengan nama kamus.Klik tombol ciptakan.

buat database

Kemudian buat tabel dengan nama “english” jumlahnya 2 fields.

buat tabel di phpmyadmin

Klik go.

Kemudian isikan propertynya. Set seperti ini:

kata : VARCHAR : 100
arti : TEXT :

properti tabel kamus.english

Kemudian klik save.

Struktur tabel english sudah jadi. Sekarang mari kita import file CSV kita.

  1. klik Import di menu atas phpmyadmin.
  2. klik browse dan arahkan ke english.csv
  3. klik go.

Data sudah diimport tinggal tambah kolom id , jadikan primary key dan auto increement.

  1. klik tabel english di bagian kiri
  2. pilih add 1 field. letaknya pilih at beginning of table
  3. klik go
  4. isi dengan
    Field : id
    type : INT
    extra : auto_increement
    pilih primary key

primary dan auto increement

Jadi deh tabel english kita.
Tinggal bikin tabel indonesia. langkahnya sama seperti tadi. field-fieldnya juga sama seperti tadi.
Jangan lupa import seperti tadi dan jangan lupa pula untuk search and repalce karakter double quote (“) menjadi back quote(`) biar sewaktu importnya ga error.

Kalo bingung navigasi di phpmyadmin coba klik kata kamus di kiri. Itu akan membawa kita kembali ke halaman depan database kita; yakni database kamus.

Kalo sudah jadi akan tampak seperti inilah database kita.

database kamus

 

Menampilkan database Kamus dengan PHP

Sekedar mengingat kembali, kita tadi sudah membuat:

  • database dengan nama kamus,
  • dua buah tabel yang masing-masing namanya english dan indonesia
  • kemudian masing-masing tabel berisi field id, kata dan arti

Ok mari kita mulai koding.
Penulis menggunakan appserv untuk servernya. Untuk xamp atau lainnya bisa menyesuaikan.

Pertama kita buat folder dengan nama kamus di folder www. Path lengkapny adalah “C:AppServwwwkamus
nantinya kita dapat mengakses kamus kita melalui browser dengan alamat “http://localhost/kamus

Ke dua kita buat file tampil.php
dan isi dengan script berikut untuk koneksi ke database.

  1.   <?php
  2. //   SETTING
  3. $db_host = ”localhost”;
  4. $db_user = ”root”;    // isi sesuai user mysql Anda
  5. $db_pass = ”sipit”;   // isi sesuai password mysql Anda
  6. $db_name = ”kamus”;   // nama database anda
  7. //   KONEKSI KE DATABASE
  8. $link = mysql_pconnect ($db_host, $db_user, $db_pass) or die (“Ga bisa connect”);
  9. mysql_select_db ($db_name) or die (“Ga bisa select database”);
  10. ?>

Ke tiga tambahkan script untuk menampilkan database. Script lengkapnya seperti ini

  1.   <?php
  2. //   SETTING
  3. $db_host = ”localhost”;
  4. $db_user = ”root”;    // isi sesuai user mysql Anda
  5. $db_pass = ”sipit”;   // isi sesuai password mysql Anda
  6. $db_name = ”kamus”;   // nama database anda
  7. //   KONEKSI KE DATABASE
  8. $link = mysql_pconnect ($db_host, $db_user, $db_pass) or die (“Ga bisa connect”);
  9. mysql_select_db ($db_name) or die (“Ga bisa select database”);
  10. //   MENAMPILKAN SEMUA DATA
  11. //   - masih menampilkan data tanpa pemisah
  12. $sql = mysql_query(“SELECT * from english”) or die(mysql_error());
  13.     while ($res=mysql_fetch_array($sql)) {
  14.             echo $res['id'];
  15.             echo $res['kata'];
  16.             echo $res['arti'];
  17.         }
  18. ?>

Script di atas akan menampilkan semua data di tabel english dan tanpa pemisah.

Untuk memisahkan per data coba tambahkan <BR> pada akhir script, dan untuk memisahkan per field kita bisa pakai dash (-) seperti contoh di bawah ini:
Atau terserah Anda untuk menampilkan data seperti yang Anda kehendaki.

  1. $sql = mysql_query(“SELECT * from english”) or die(mysql_error());
  2.  while ($res=mysql_fetch_array($sql)) {
  3.  echo $res['id'];
  4.  echo $res['kata'];
  5.  echo $res['arti'];
  6.  echo ’<br>
  7.  ’;
  8.  }

Ke empat misalkan kita ingin menampilkan data yang cocok dengan kata gecko.
Kita tinggal memodifikasi SQLnya. seperti ini:

  1. $sql = mysql_query(“SELECT * from english where kata = ’gecko’ ”) or die(mysql_error());
  2.  while ($res=mysql_fetch_array($sql)) {
  3.  echo $res['id'] . ’ - ’;
  4.  echo $res['kata'] . ’ - ’;
  5.  echo $res['arti'];
  6.  echo ’<br>’;
  7.  }

Cermati kode SELECT * from english where kata = ‘gecko’

hasil pertama kamus

Ke empat bagaimana apabila kita ingin melakukan kata yang mendekati / mirip?
jawabnya gampang. tinggal tambahkan % di awal dan atau akhir kata yang dicari dan mengubah = dengan LIKE

contohnya seperti ini

  1. SELECT * from english where kata LIKE ’ge%’

Coba ganti dengan ‘%ge%’ atau ‘%ge’ maka Anda akan mendapatkan hasil yang berbeda.

Hasilnya seperti ini:

hasil kamus

Cuman seperti itu. Gampang khan?

 

Membuat Form Pencarian

Sekarang kita buat form pencariannya.

buat file berikut dan simpan dengan nama cari.php

  1. <form method=”post” action=”tampil.php”>
  2.   <p>Kata yang dicari: <input type=”text” name=”cari” id=”cari” /> </p>
  3.   <p><input type=”submit” name=”submit” id=”submit” value=”Submit” /> </p>
  4. </form>

Form sederhana di atas apabila diklik akan mengarah ke file tampil.php dengan membawa nilai post cari ($_POST['cari'])

 

Memodifikasi Tampil.php untuk Menghandle Form Pencarian

tampil.php kita edit seperti di bawah ini agar bisa menangkap variabel post ($_POST['cari'])

  1. <?php
  2. ari = $_POST['cari']; // menangkap inputan dari fiel cari di form pada file cari.php
  3.   //   SETTING
  4.   $db_host = ”localhost”;
  5.   $db_user = ”root”;    // isi sesuai user mysql Anda
  6.   $db_pass = ”sipit”;   // isi sesuai password mysql Anda
  7.   $db_name = ”kamus”;   // nama database anda
  8.   //   KONEKSI KE DATABASE
  9.   $link = mysql_pconnect ($db_host, $db_user, $db_pass) or die (“Ga bisa connect”);
  10.   mysql_select_db ($db_name) or die (“Ga bisa select database”);
  11.   //   MENAMPILKAN SEMUA DATA
  12.   //   - masih menampilkan data tanpa pemisah
  13.   $sql = mysql_query(“SELECT * from english where kata LIKE ’$cari’ ”) or die(mysql_error());
  14.           while ($res=mysql_fetch_array($sql)) {
  15.               echo $res['id'] . ’ - ’;
  16.               echo $res['kata'] . ’ - ’;
  17.               echo $res['arti'];
  18.               echo ’<br>’;
  19.           }
  20. gt;

Kemudian apabila ingin menampilkan form dan hasil pencarian dalam satu halaman bisa menggunakan satu file berikut.

  1. <form method=”post” action=”<?=$_SERVER['PHP_SELF']?>”>
  2.   <p>Kata yang dicari: <input type=”text” name=”cari” id=”cari” /> </p>
  3.   <p><input type=”submit” name=”submit” id=”submit” value=”Submit” /> </p>
  4. </form>
  5. <?php
  6. $cari = $_POST['cari']; // menangkap inputan dari fiel cari di form pada file cari.php
  7. If (isset($cari)) {
  8.     //   SETTING
  9.     $db_host = ”localhost”;
  10.     $db_user = ”root”;    // isi sesuai user mysql Anda
  11.     $db_pass = ”sipit”;   // isi sesuai password mysql Anda
  12.     $db_name = ”kamus”;   // nama database anda
  13.     //   KONEKSI KE DATABASE
  14.     $link = mysql_pconnect ($db_host, $db_user, $db_pass) or die (“Ga bisa connect”);
  15.     mysql_select_db ($db_name) or die (“Ga bisa select database”);
  16.     //   MENAMPILKAN SEMUA DATA
  17.     //   - masih menampilkan data tanpa pemisah
  18.     $sql = mysql_query(“SELECT * from english where kata LIKE ’$cari’ ”) or die(mysql_error());
  19.             while ($res=mysql_fetch_array($sql)) {
  20.                 echo $res['id'] . ’ - ’;
  21.                 echo $res['kata'] . ’ - ’;
  22.                 echo $res['arti'];
  23.                 echo ’<br>’;
  24.             }
  25. }
  26. ?>

perubahannya adalah : <form method=”post” action=”kamus.php”> untuk redirect ke halamannya sendiri.
Atau bisa kita ubah menjadi <form method=”post” action=”<?=$_SERVER['PHP_SELF']?>”

kemudian untuk mengecek apakah inputannya sudah di set ataukah belum menggunakan:

  1. if (isset($cari)) {
  2. // kode isinya di sini
  3. //
  4. // kode isinya di sini
  5. }

 

Finaly

Akhirnya selesai sudah. Project kamus dengan PHP kita sudah selesai dan cuman diwakili oleh satu buah file kamus.php

Tentunya itu untuk keperluan belajar aja. Untuk aplikasi sebenarnya perlu beberapa opsi security dan tambahan fungsi. Mungkin ada yang nanya. Tabel indonesia-nya mo diapain?? Hehe itu untuk PR bikin kamus yang versi English ke bahasa Indonesia.

Post By : Zainuddin am 9. October 2011

Prinsip Dasar Pemrograman PHP

Sebelum lebih jauh mari kita kenali dulu struktur dan aturan dasar dalam pemrograman PHP. Dalam tutorial kali ini alat yang diperlukan yaitu:

  • Editor text yang bagus, bukan sekedar notepad. Tapi kita membutuhkan editor text yang memberikan kemudahan kepada kita misalnya text highliting, auto completion, line numbering dll. Penulis memakai Notepad++.
  • Browser: Firefox, opera atau IE

a. Awal dan Akhir Tags PHP

Pada contoh di bawah ini kita akan menggunakan <?php sebagai awal tags PHP dan ?> sebagai akhir tags PHP. Semua karakter di dalam tags PHP ( sesudah <?php dan sebelum ?> ) akan diolah oleh intrepeter PHP. Sedangkan di luarnya ( sebelum <?php dan sesudah ?> ) akan diabaikan oleh intrepeter PHP.

Untuk jelasnya mari kita lihat contoh berikut:

  1. Lima ditambah lima sama dengan:
  2. <?php print 5 + 5; ?>
  3. <p>
  4. Tiga ditambah tiga sama dengan :
  5. <?php
  6. print 3 + 3;
  7. ?>
  8. <p>
  9. <a href=”http://www.gecko.web.id”>gecko</a>
  10. <img src=”http://www.gecko.web.id/watermark.jpg”>

Contoh di atas sama saja dengan kode HTML berikut:

  1. Lima ditambah lima sama dengan:
  2. 10<p>
  3. Tiga ditambah tiga sama dengan :
  4. 6<p>
  5. <a href=”http://www.gecko.web.id”>gecko</a>
  6. <img src=”http://www.gecko.web.id/watermark.jpg”>

Dan di browser menghasilkan:

hasil belajar contoh satu

Di PHP versi-versi terdahulu juga menggunakan <? sebagai awal tags PHP. <? disebut sebagai short open tags. Tags ini masih berfungsi di PHP 5 akan tetapi dapat dinon aktifkan dengan merubah konfigurasi PHPnya. jadi lebih baik menggunanan <?php.

b. Whitespace

  1. <?php print ”Hello”; print ” World!”; ?>

Perhatikan kode di atas. Sulit dibaca bukan? akan lebih baik apabila ditulis demikian.

 

  1. <?php
  2. print ”Hello”;
  3. print ” World!”;
  4. ?>

Lebih mudah dibaca bukan?

Berikut penulisan yang kurang pas, walaupun menghasilkan tampilan yang sama di browser

 

  1. <?php
  2. print ”Hello”;
  3. print ” World!”;
  4. ?>
  5. <p>Terlalu mengumbar enter heheheh.
  6. Kalau yang dibawah terlalu banyak spasinya.
  7. <p>
  8. <?php
  9. print ”Hello”           ;
  10. print     ” World!”     ;
  11. ?>
  12. <p>kalo yang di bawah ini terlalu mepet. terlalu pelit spasi
  13. <?php print”empet-empetan jadi susah bacanya”; ?>

c. Case-Sensitivity

Fungsi-fungsi di PHP tidak case sensitive. Jadi tidak ada perbedaan anatara penggunaan huruf besar dan kecil. Contoh di bawah ini menghasilkan output yang sama.

  1. // Empat baris script ini menghasilkan output yang sama
  2. print number_format(285266237);
  3. PRINT Number_Format(285266237);
  4. Print number_format(285266237);
  5. pRiNt NUMBER_FORMAT(285266237);

Di beberapa sumber menyebutkan bahwa eksekusi fungsi dengan huruf kecil lebih cepat daripada fungsi yang ditulis dengan huruf besar atau ditulis menggunakan kombinasi huruf besar dan kecil. Jadi ga ada ruginya menggunakan huruf kecil saja, betul?

Catatan: Berbeda halnya kalau berurusan dengan file. Di server dengan mesin LINUX penamaan file adalah case sensitif. File dengan nama gecko.jpg berbeda dengan GECKO.JPG

d. Comment

Di PHP ada 2 macam comment:

  • single line comment
  • multi line comment

Single Line Comment bisa menggunakan # atau //

Contoh penggunaannya sebagai berikut:

  1. <?php
  2. print ”Belajar PHP bareng gecko”; //ini adalah komentar
  3. //bisa juga ditulis di sini
  4. print ”<p>Belajar menuliskan komentar di PHP”; #bisa juga memakai tanda pagar
  5. #menggunakan tanda pagar untuk komen
  6. #ini juga masih komen
  7. //belajar itu enaknya praktek langsung, betul????
  8. ?>

Multi line comment menggunakan tanda /* sebagai awal dan */ sebagai akhir komentar

Contoh penggunaannya sebagai berikut:

  1. <?php
  2. echo ’ini kode PHP’;
  3. /* INI ADALAH CONTOH PENGGUNAAN KOMEN
  4. di bagian ini masih komen
  5. ini juga masih komen
  6. emmmm.. belajar PHP menyenangkan yah…
  7. - betul??
  8. - <?php print ”I love PHP”; ?> walaupu ada kode PHP
  9. di dalam juga masih di anggap komen. Betul???
  10. - <noscript>hehehehe</noscript> tags HTML juga ga masalah
  11. - tetep dianggap komen
  12. INI AKHIR KOMENNYA> LIHAT TANDANYA */
  13. echo ’Kalo ini sudah bukan komentar lagi’;
  14. ?>

catatan: kalo HTML komennya seperti ini

  1. <!– ini komen di HTML
  2. merupakan komen multi line –>
  3. <?php echo ’hai….. aku ditulis pake PHP’; //hi aku komen PHP
  4. ?>

Sudah faham khan? Kalo ada pertanyaan, silahkan…

Semoga berguna..

Post By : Zainuddin am 9. October 2011

Trik Mudah Import Data : import data dari flat text ke data excel

Latar Belakang :

Beberapa hari kemarin penulis memperoleh data tenaga honorer dari BKN dan ehm berupa file flat text. Trus mau diapakan file ini. Benar ga bisa diolah.. cuman bisa dicetak..
Dan tugas besar yang harus dilakukan adalah mengubah file flat text itu menjadi database tenaga honorer di daerah. Uw… tugas besar. Ga juga sebenernya. Kita bisa import data tersebut melalui tahapan berikut ini….
Alat:

  • Text editor (misalnya notepad atau yang lebih baik seperti: scite, edit plus, ultra edit, notepad++, PSPAD atau texteditor favorit Anda)
  • File excel editor (Penulis menggunakan MS Office Excel 2007) silahkan mencoba excel editor lain seperti OpenOffice.org

Bahan :

  • Data berupa text yang akan diimport, tampilan nya seperti ini… (file kesehatan.txt)

LANGKAH PERTAMA : merubah flat text menjadi CSV
Perlu diketahui bahwa MS Excel dapat membaca file dengan format CSV (*.csv). Sedangkan CSV sendiri adalah Comma Separated Value yang di Indonesiakan menjadi nilai-nilai yang dipisahkan oleh koma. Menurut yang penulis ketahui, CSV tidak hanya dipisahkan oleh koma akan tetapi dapat juga dipisahkan oleh tanda titik koma;
Untuk lebih jelasnya Anda bisa mencari referensi di www.wikipedia.org/

Berikut contoh format CSV yang dibuka lewat NOTEPAD

  1. Nama;Alamat;umur;
  2. Lala;Trenggalek;23;
  3. Nanako;Surabaya;12;
  4. Moh. Harun;Indonesia;60;
  5. Eko Priyanto;Ada deh;ada aja;

Yang kita perlu lakukan hanyalah menyisipkan tanda titik koma di antara data-data yang ada. Dan kita bisa lakukan dengan find and replace. Biasanya dengan shortcut ctrl+H. tapi terlebih dahulu kita bersihkan data-data yang tidak kita perlukan. Hasilnya seperti ini (file kesehatan2.txt)

Setelah bersih silahkan lakukan find and replace

Menurut pengalaman penulis apabila menggunakan notepad, akan memerlukan waktu yang lama. Bahkan dengan RAM sebesar 1 giga sekalipun.
Lebih baik gunakan editor lain. Penulis menggunakan scite.

Lakukan replace “|” dengan “;”
Kemudian lakukan juga replace “/” dengan “;”

Hasilnya sepert gambar (file kesehatan3.txt)

Kemudian rename menjadi file CSV : (file kesehatan.csv)

Sekarang tinggal kita buka file kesehatan.csv tersebut di MS Excel

Dengan sedikit modifikasi data siap untuk diolah. Apabila masih banyak spasi di sana sini Anda bias melakukan trim() di excel. Mudah khan?
Apabila kurang jelas jangan sungkan untuk posting di sini..

Selanjutnya penulis akan memberikan tips mengexport data excel ini ke database MySQL dengan mudah dan tool yang sudah ada.

Post By : Zainuddin am 9. October 2011

Membuat Laporan dan Solusi Printing di Aplikasi Berbasis Web

Banyak teman-teman di web ini yang bertanya tentang bagaimana cara bikin laporan dengan PHP. Berikut pertanyaan yang sering muncul:

  • Gimana cara bikin laporan di web?
  • Gimana sih cara bikin laporan dengan PDF file?
  • Gimana sih cara export web ke MS Excel?
  • Gimana sih cara export web ke MS Word?
  • Saya pusing dengan FPDF. Harus main koordinat. Apa ada penyelesaian yang lebih mudah?
  • Cara print di web yang mudah?

Baiklah pada artikel kali ini gw akan memberi masukan mengenai pertanyaan-pertanyaan di atas. Walaupun tidak menjawab semua pertanyaan tapi gw berharap penyelesaian ini bisa menyelesaikan masalah Anda.

Kalo menjawab pertanyaan “Gimana cara bikin laporan di web?” kayaknya penulis sedikit bingung. Soalnya menurut penulis, kalau datanya udah tampil di web ya itulah laporannya dan itu juga yang akan kita cetak. Mungkin bedanya kalo di aplikasi berbasis desktop ada yang namanya “data grid” dan ada yang namanya “laporan“. Di aplikasi berbasis desktop laporan biasanya menggunakan Crystal Report.

Mungkin Anda berpendapat bahwa tampilan untuk monitor dan untuk print harusnya berbeda karena tidak mungkin kita membuat laporan cetak dan di situ terdapat menu navigasi, belum lagi background yang menggangu. Yup, setuju. Untuk itu kita harus membuat 2 versi halaman kita. Versi layar monitor dan versi cetak.

Berikut cara-cara membuat dua versi halaman, yakni: versi layar monitor dan versi cetak yang bisa Anda pilih salah satunya:

  1. menggunakan tag PHP untuk memanggil 2 file CSS
  2. menggunakan tag HTML untuk memanggil 2 file CSS
  3. menggunakan @import url
  4. menggunakan satu file CSS untuk dua versi tampilan

1. Menggunakan tag PHP untuk memanggil 2 file CSS

Berikut kode PHPnya dan letakkan di bagian <HEAD> pada kode HTML Anda.

  1.   <?php if ($_GET['q'] == ”printme”) { ?>
  2. </p>
  3. <link rel=”stylesheet” type=”text/css” href=”print.css” />
  4. <?php } else { ?>
  5. <link rel=”stylesheet” type=”text/css” href=”default.css” />

Kelemahan dari cara ini adalah harus load ulang halaman. bayangkan jika halaman yang akan kita cetak merupakan bentuk rekapitulasi dengan banyak query dan loadnya sangat lama. Wew tidak praktis. Cara ini sama saja dengan membuat link ke halaman baru, dengan desain halaman baru yang minimalis, yang sengaja disiapkan untuk cetak laporan.

2. Menggunakan tag HTML untuk memanggil 2 file CSS

  1. <LINK rel=”stylesheet” type”text/css” href=”style.css” media=”screen”>
  2. <LINK rel=”stylesheet” type”text/css” href=”print.css” media=”print”>

Cara ini yang sering penulis gunakan. Cukup membuat 2 file CSS yang berbeda dan menempatkan tag tersebut di bagian <HEAD>. kemudian menyembunyikan <div> yang tidak ingin kita tampilkan. Lebih lengkapnya bisa dilihat di pembahasan selanjutnya.

3. Menggunakan @import url

  1. @import url(print.css) print,projection;

Hampir sama dengan cara di atasnya, cuman beda kode.

4. Menggunakan satu file CSS untuk dua versi tampilan

  1.   <STYLE type=”text/css”>
  2. @media screen {
  3.    BODY {font-size: medium; line-height: 1em; background: silver;}
  4. }
  5. @media print {
  6.    BODY {font-size: 10pt; line-height: 120%; background: white;}
  7. }
  8.   </STYLE>

cara ini juga bagus dan bahkan hanya menggunakan 1 file CSS. Yup, style untuk dua versi tampilan (layar dan printing) dalam satu file CSS.

 

Baiklah, sekarang kita mulai praktek membuat laporan di web yang bisa langsung kita cetak. Tapi sebelumnya mari kita lihat versi layar untuk aplikasi SIMPEG yang penulis buat.

  1. #atas{
  2. height: 100px; /*Height of top section*/
  3. background:url(items/header.jpg) repeat-x #2D1721;
  4. }
  5. #atas h1{
  6. margin: 0;
  7. padding-top: 15px;
  8. }
  9. #wrapper{
  10. float: left;
  11. width: 100%;
  12. }
  13. #isi{
  14. margin-right: 170px;
  15. }
  16. #kanan{
  17. float: left;
  18. width: 170px; /*Width of right column in pixels*/
  19. margin-left: -170px; /*Set left margin to -(RightColumnWidth) */
  20. }
  21. #bawah{
  22. clear: left;
  23. width: 100%;
  24. background: black;
  25. color: #FFF;
  26. text-align: center;
  27. padding: 4px 0;
  28. }

File di atas disimpan dengan nama layar.css

Berikut tampilannya:
layout buat layar monitor

layout simpegda

Kalau untuk printing tentunya kita harus menyingkirkan <div> yang tidak diperlukan. Dengan CSS kita bisa menyembunyikannya. Berikut CSS lengkapnya.

  1. #atas, #kanan, #bawah
  2. {display:none;}
  3. #wrapper{
  4. float: left;
  5. width: 100%;
  6. }
  7. #isi{
  8. width: 100%;
  9. }

Selanjutnya disimpan menjadi print.css

Dan untuk format tampilan <div> yang masih kita tampilkan perlu mendapat beberapa perubahan, seperti lebar kita set 100% dan background gambar kita ubah menjadi background warna putih.

Untuk menampilkan 2 file CSS di atas kita menggunakan kode sebagai berikut:

  1. <LINK rel=”stylesheet” type”text/css” href=”layar.css” media=”screen”>
  2. <LINK rel=”stylesheet” type”text/css” href=”print.css” media=”print”>
  3. <p>

Cukup begitu saja. Apabila dilihat melalui print preview hasilnya seperti ini:
hasil print laporan

Apabila Anda menginginkan file CSS yang standar Anda bisa merujuk ke Hartija Css Print Framework.

Artikel-artikel ini membahas tentang bagaimana membuat printer frendly webpage:

  1. CSS Design: Going to Print
  2. Back To The Future of Print
  3. Five Simple Steps to Typesetting on the web: Printing the web
  4. What is a Printer-Friendly Web Page?
  5. Printing the Web
  6. A Print CSS Primer

Export Laporan ke Format File Lain

Export ke PDF:
Untuk export file ke bentuk *.pdf kita bisa menggunakan Free PDF library atau dikenal sebagai FPDF (www.FPDF.org). Sedikit ribet memang dan butuh kesabaran untuk mencoba-coba membuat laporan. Tapi kalo keperluannya cuman sekadar mencetak laporan apa tidak mudah dengan cara di atas? ga tahu lagi kalo tujuannya lain.

Export ke MS Word:
Untuk export ke MS Word kita bisa memanfaatkan sebuah class dari phpclass.org dengan nama clsWord. Apabila Anda menginginkan bisa search di paman google dengan kata kunci: mswordphp-2006-12-26
Tapi akan lebih mudah dengan cara memanipulasi header file PHP Anda. Tambah beberapa baris kode berikut di bagian atas sendiri pada kode Anda

  1. <?php
  2. header(“Content-Type: application/download’”);
  3. header(“Content-Disposition: inline; filename=”word.doc”");
  4. header(“Expires: 0″);
  5. header(“Cache-Control: must-revalidate, post-check=0, pre-check=0″);
  6. header(“Pragma: public”);
  7. ?>

Export ke MS Excel:
Kita bisa memanfaatkan excel stream. Cari xlsstream-2005-01-20.zip dengan paman google, apabila Anda tertarik dengan class ini. Penulis juga mendapatkannya di phpclass.org .
Sama seperti word kita juga bisa memanipulasi header di script PHP kita.

  1.   <?php
  2. header(“Content-Type: application/download”);
  3. header(“Content-Disposition: inline; filename=”excel.xls”");
  4. header(“Expires: 0″);
  5. header(“Cache-Control: must-revalidate, post-check=0, pre-check=0″);
  6. header(“Pragma: public”);
  7. ?>

Saya kira cukup sekian penjelasan tentang laporan, printing dan lain-lain. Sebenernya masih banyak cara-cara lain yang bisa kita pakai dalam membuat laporan. tergantung kreatifitas kita. Coba luangkan waktu untuk baca-baca artikel mengenai OWC (Office Web Component) mungkin bisa banyak membantu. Biar tambah penasaran, kita juga bisa menfaatkan Crystal Report untuk membuat laporan pada aplikasi berbasis web. Udah dulu ah, kalo ada pertanyaan atau koreksi jangan ragu buat ngasih comment or japri gw.

Semoga bermanfaat.

Post By : Zainuddin am 9. October 2011

PHP Tutorial II: Installasi CMS (sNews 1.5) di localhost

Pada PHP tutorial yang ke dua ini, mari kita belajar menginstall sNews 15 di komputer kita (localhost). Syaratnya kita harus sudah mempunyai AppServ yang sudah terinstall (lihat PHP Tutorial I). Dan apabila ada yang bertanya mengapa sNews15? Karena penulis menggunakan CMS ini di gecko.web.id dengan harapan pembaca ‘yang berminat’ nantinya akan dapat dapat membuat blog seperti ini. Penulis juga jadi enak nantinya, melakukan modifikasi di web ini sekaligus menulis apa aja yang udah dilakukan dengan web ini. Buat yang udah expert, skip aja artikel ini. harap maklum, soale masih part II.

Alat dan bahan:

  1. komputer yang sudah terinstall Apache, PHP, MySql, phpMyAdmin
  2. sNews15, download di http://snews.solucija.com
  3. text editor (notepad, notepad++, scite, ultra edit atau lainnya)

Kenapa sNews? Berikut dasar pertimbangan penulis:

  1. Simple (one file CMS) dan kecil (file distibusinya cuma 28kb)
  2. Karena biarpun kecil dan ‘one file CMS’ namun kaya fitur.
    • SEF (Search Engine Friendly)
    • keyword
    • Topik
    • search
    • RSS (Real Simple Syndication)
    • sitemap
    • comment
    • spam block
    • new article
    • new comment
    • pages
    • dan lain-lain
  3. Sesuai kebutuhan
  4. Mudah dimodif
  5. Unik karena masih jarang yang menggunakan

Langkah pertama yang harus kita lakukan adal merubah kofigurasi Apache server kita dan mengaktifkan modul Rewrite URL. Caranya adalah sebagai berikut:

  1. cari file httpd.conf dengan fasilitas search windows. Di komputer penulis letaknya adalah di C:AppServApache2.2conf
  2. edit dengan text editor dan cari #LoadModule rewrite_module modules/mod_rewrite.so
  3. aktifkan dengan cara menghilangkan tanda # sehingga menjadi
    LoadModule rewrite_module modules/mod_rewrite.so
    mod rewrite url
  4. simpan
  5. restart Apache Server dengan cara klik Start | All Programs | AppServ | Control Server by Service | Apache Restart
  6. Tapi lebih baik apabila Anda restart komputer Anda. Caranyanya udah tahu khan??? :D

Langkah ke dua adalah mengextract file sNews15.zip hasil download ke direktori www di server Anda. Ada kemungkinan Anda harus meletakkan di direktori htdocs apabila anda menggunakan paket instalasi selain AppServ, misalnya XAMPS.
Pada kasus ini penulis menggunakan Appserv yang direktorinya berada di C:AppservwwwsNews15

isi file snews

Langkah ke tiga adalah membuat database untuk CMS kita. Caranya adalah sebagai berikut:

  1. Buka browser dan arahkan ke localhost/phpmyadmin
  2. isi username dan password (user dan password sesuai saat instalasi AppServ)
  3. buat database baru dengan mengisikan nama database dan klik create
    buat database snews
  4. Klik SQL untuk memasukkan kode sql kita.
    klik sql
  5. klik readme.html yang isinya petunjuk instalasi dan sql untuk database kita
  6. Kemudian copy kode sql ini: (lebih baik copy dari file readme.html saja)
    1.   CREATE TABLE articles (
    2.     id int(11) primary key auto_increment,
    3.     title varchar(100) default NULL,
    4.     seftitle varchar(100) default NULL,
    5.     `text` longtext,
    6.     `date` datetime default NULL,
    7.     category int(8) NOT NULL default ’0′,
    8.     position int(6) default NULL,
    9.     displaytitle char(3) NOT NULL default ’YES’,
    10.     displayinfo char(3) NOT NULL default ’YES’,
    11.     commentable varchar(5) NOT NULL default ”,
    12.     published int(3) NOT NULL default ’1′,
    13.     description_meta varchar(255) default NULL,
    14.     keywords_meta varchar(255) default NULL
    15. );CREATE TABLE categories (
    16.     id int(8) primary key auto_increment,
    17.     name varchar(100) NOT NULL,
    18.     seftitle varchar(100) NOT NULL,
    19.     description varchar(255) NOT NULL,
    20.     published varchar(4) NOT NULL default ’YES’,
    21.     catorder smallint(6) NOT NULL default ’0′
    22. );CREATE TABLE comments (
    23.     id int(11) primary key auto_increment,
    24.     articleid int(11) default ’0′,
    25.     name varchar(50),
    26.     url varchar(100) NOT NULL,
    27.     comment text,
    28.     time datetime NOT NULL default ’0000-00-00 00:00:00′,
    29.     approved varchar(5) NOT NULL default ’True’
    30. );CREATE TABLE settings (
    31.     id int(8) primary key auto_increment,
    32.     name varchar(20) NOT NULL,
    33.     `value` varchar(60) NOT NULL
    34. );  INSERT INTO settings VALUES (1, ’website_title’, ’sNews 1.5′);
    35.     INSERT INTO settings VALUES (2, ’home_sef’, ’home’);
    36.     INSERT INTO settings VALUES (3, ’website_description’, ’sNews CMS’);
    37.     INSERT INTO settings VALUES (4, ’website_keywords’, ’new, site, snews’);
    38.     INSERT INTO settings VALUES (5, ’website_email’, ’info@mydomain.com’);
    39.     INSERT INTO settings VALUES (6, ’contact_subject’, ’Contact Form’);
    40.     INSERT INTO settings VALUES (7, ’language’, ’EN’);
    41.     INSERT INTO settings VALUES (8, ’charset’, ’UTF-8′);
    42.     INSERT INTO settings VALUES (9, ’date_format’, ’d.m.Y. H:i’);
    43.     INSERT INTO settings VALUES (10, ’article_limit’, ’3′);
    44.     INSERT INTO settings VALUES (11, ’rss_limit’, ’5′);
    45.     INSERT INTO settings VALUES (12, ’display_page’, ”);
    46.     INSERT INTO settings VALUES (13, ’display_new_on_home’, ”);
    47.     INSERT INTO settings VALUES (14, ’display_pagination’, ”);
    48.     INSERT INTO settings VALUES (15, ’num_categories’, ’on’);
    49.     INSERT INTO settings VALUES (16, ’approve_comments’, ”);
    50.     INSERT INTO settings VALUES (17, ’comments_order’, ’ASC’);
    51.     INSERT INTO settings VALUES (18, ’comment_limit’, ’30′);
    52.     INSERT INTO settings VALUES (19, ’word_filter_enable’, ”);
    53.     INSERT INTO settings VALUES (20, ’word_filter_file’, ”);
    54.     INSERT INTO settings VALUES (21, ’word_filter_change’, ”);
    55.     INSERT INTO settings VALUES (22, ’username’, ’098f6bcd4621d373cade4e832627b4f6′);
    56.     INSERT INTO settings VALUES (23, ’password’, ’098f6bcd4621d373cade4e832627b4f6′);
  7. Paste di phpMyAdmin.
    run query sql sNews
  8. Klik Go
  9. Setelah proses selesai maka database Anda sudah siap.

Langkah ke empat adalah mengubah konfigurasi CMS kita. Letaknya di file snews.php. Langkah-langkahnya adalah sebagai berikut:

  1. Buka file snews.php di text editor kita
  2. Cari kode berikut dan ubah sesuai konfigurasi server kita
    1. // DATABASE VARIABLES
    2. function db($variable) {
    3. $db = array();
    4. $db['website'] = ’http://localhost/sNews15/’;
    5. $db['dbhost'] = ’localhost’; //MySQL Host
    6. $db['dbname'] = ’snews’; //Database Name
    7. $db['dbuname'] = ’username’; //Database Username
    8. $db['dbpass'] = ’password’; //Database password
    9. $db['prefix'] = ”; //Database prefix
    10. $db['dberror'] = ’<strong>There was an error while connecting to the database.</strong> <br />
    11. Check your database settings.’; //Database error message
    12. # session fingerprint password (hardcoded variant)
    13. $db['secretWord'] = ’my_secret_word’; // Default session password (make it hard to guess and change it often)
    14. return $db[$variable];
    15. }
  3. Untuk kasus kita, kita ubah sebagai berikut:
    1. // DATABASE VARIABLES
    2. function db($variable) {
    3.     $db = array();
    4.     $db['website'] = ’http://localhost/sNews15/’;
    5.     $db['dbhost'] = ’localhost’; //MySQL Host
    6.     $db['dbname'] = ’snews15′; //Database Name
    7.     $db['dbuname'] = ’root’; //Database Username
    8.     $db['dbpass'] = ’passwordku’; //Database password
    9.     $db['prefix'] = ”; //Database prefix
    10.     $db['dberror'] = ’<strong>There was an error while connecting to the database.</strong> <br /> Check your database settings.’; //Database error message
    11.     # session fingerprint password (hardcoded variant)
    12.     $db['secretWord'] = ’terserah_aja’; // Default session password (make it hard to guess and change it often)
    13.     return $db[$variable];
    14. }
  4. jangan lupa kasih tanda “/” sesudah alamat website kita
    1. $db['website'] = ’http://localhost/sNews15/’;
  5. Setelah diubah, simpan.
  6. CMS kita siap dicoba

Langkah ke lima; mencoba CMS kita

  1. Buka browser kita, misalnya Internet Explorer.
  2. Ketik alamat CMS kita: localhost/snews15
  3. Tekan enter dan upz….. ternyata begini tampilannya di Internet Explorer
    internet explorer error
  4. jangan panik dulu, mungkin IEnya yang error seperti punya penulis.
  5. Coba browser lain, misalnya Opera atau Mozilla Firefox
  6. Ternyata tidak ada masalah. Dan muncul tampilan sederhana Snews1.5
    snews 1.5 di Opera 9.10
  7. Apabila muncul peringatan seperti ini:
    There was an error while connecting to the database.
    Check your database settings.

    berarti konfigurasi Anda belum benar, dan edit lagi.
  8. Klik login kemudian isikan
    Username: test
    Password: test
    dan hasil penjumlahan 2 integer
  9. Masuk ke halaman Admin

Saya rasa cukup segini dulu tutorial menginstall sNews 1.5 di localhost. Tampilannya memang masih sederhana karena kita belum menambahkan template di situ. Di tutorial yang mendatang akan diuraikan secara gamblang. Atau bisa Anda pelajari sendiri di http://snews.solucija.com/. Semoga bermanfaat.

Post By : Zainuddin am 9. October 2011

Membuat Pencarian Sederhana dengan PHP dan MySQL

Kali ini kita akan mencoba pencarian sederhana dengan PHP. Pada pencarian ini kita akan mencari data yang ada di database mysql.

Yang dibahas di sini antara lain:

  • Pencarian di database mysql sederhana
  • Pencarian dengan 1 file php
  • mencegah menampilkan data apabila tombol submit belum diklik
  • Menampilkan nomor pencarian
  • menampilkan jumlah hasil pencarian
  • menampilkan pesan apabila hasil pencarian tidak ditemukan

 

Baiklah langsung aja kita mulai.

Langkah pertama adalah membuat database yang akan kita cari nantinya. Untuk lebih mudahnya gw siapkan query yang tinggal diexecute di PHPMyadmin Anda.

  1. – Struktur dari tabel `siswa`
  2. CREATE TABLE IF NOT EXISTS `siswa` (
  3. `id` int(12) NOT NULL auto_increment,
  4. `nama` text NOT NULL,
  5. `sex` varchar(1) NOT NULL,
  6. PRIMARY KEY  (`id`)
  7. ) ENGINE=MyISAM  DEFAULT CHARSET=latin1 AUTO_INCREMENT=15 ;
  8. – Dumping data untuk tabel `siswa`
  9. INSERT INTO `siswa` (`id`, `nama`, `sex`) VALUES
  10. (1, ’Kyubi naruto’, ’L'),
  11. (2, ’Uchiha sasuke’, ’L'),
  12. (3, ’Naruto Kun’, ’L'),
  13. (4, ’Sasuke Kun’, ’L'),
  14. (5, ’Sakura Chan’, ’P'),
  15. (6, ’Konohamaru Chan’, ’L'),
  16. (7, ’Hyuga Hinata’, ’P'),
  17. (8, ’Hyuga Neji’, ’L'),
  18. (9, ’Ichimaru’, ’L'),
  19. (10, ’Yamakiba’, ’L'),
  20. (11, ’Jiraiya’, ’L'),
  21. (12, ’Orochimaru’, ’L'),
  22. (13, ’Akamaru’, ’L'),
  23. (14, ’Kakashi’, ’L');

Caranya:

  1. Buat database dengan nama pencarian
    membuat database mysql
  2. Kemudian klik SQL pada tab menu atas.
  3. Kemudian paste kode sql di atas.
    exekusi query mysql di phpmyadmin
  4. Maka jadilah database Anda
    database siswa yang sudah jadi

Langkah ke dua adalah menampilkan data. Kita buat menampilkan data dulu kemudian nanti kita modifikasi untuk menampilkan hasil pencarian.

  1. kita buat dulu folder cari di dalam folder www (apabila menggunakan appserv) atau di dalam folder htdocs (apabila menggunakan xamps)
  2. kemudian kita buat file php dengan nama tampil.php
    1. <?php
    2. // konfigurasi
    3. $db_host = ”localhost”;  // nama host
    4. $db_user = ”root”;  // username mysql
    5. $db_pass = ”"; //password isi sesuai seting server Anda.
    6. $db_name = ”pencarian”;  // karena nama database yang kita buat adalah pencarian
    7. // koneksi ke database
    8. $link = mysql_pconnect ($db_host, $db_user, $db_pass) or die (“Ga bisa connect”);
    9. mysql_select_db ($db_name) or die (“Ga bisa select database”);
    10. // menampilkan data
    11. $sql = mysql_query(“SELECT * FROM siswa”) or die(mysql_error());
    12.   while ($res=mysql_fetch_array($sql)) {
    13.     echo $res[nama].’<br>’;
    14.   }
    15. ?>

    ini adalah script sederhana untuk menampilkan data. Nantinya kita ubah agar bisa menampilkan hasil pencarian

  3. Merubah script agar bisa menampilkan data tertentu.
    Di sini kita tinggal mengubag kode SQLnya. Kita bisa menggunakan LIKE diikuti kata yang ingin dicari. Dan diikuti kata yang dicari dan diberi tanda %.
    Contoh: apabila kita ingin menampilkan semua siswa yang berawalan huruf s maka kita buat seperti ini:

    1. SELECT * FROM siswa WHERE nama LIKE ’s%’

    Cukup mudah bukan? Mari kita lihat script selengkapnya:

    1. <?php
    2. // konfigurasi
    3. $db_host = ”localhost”;  // nama host
    4. $db_user = ”root”;  // username mysql
    5. $db_pass = ”"; //password isi sesuai seting server Anda.
    6. $db_name = ”pencarian”;  // karena nama database yang kita buat adalah pencarian
    7. // koneksi ke database
    8. $link = mysql_pconnect ($db_host, $db_user, $db_pass) or die (“Ga bisa connect”);
    9. mysql_select_db ($db_name) or die (“Ga bisa select database”);
    10. // menampilkan data
    11. // lihat perubahannya di bawah ini:
    12. $sql = mysql_query(“SELECT * FROM siswa WHERE nama LIKE ’s%’ ”) or die(mysql_error());
    13.   while ($res=mysql_fetch_array($sql)) {
    14.     echo $res[nama].’<br>’;
    15.   }
    16. ?>
  4. Yang tidak boleh dilupakan tentunya adalah form pencariannya.OK mari kita buat file dengan nama form_cari.htm
    1. <strong>PENCARIAN:</strong><br>
    2. <form action=”tampil.php” method=”post” name=”pencarian” id=”pencarian”>
    3.   <input type=”text” name=”search” id=”search”>
    4.   <input type=”submit” name=”submit” id=”submit” value=”CARI”>
    5. </form>

    Sebuah form sederhana ini nantinya digunakan untuk memasukkan kata yang hendak kita cari.
    Cermati kode berikut ini:

    1. … action=”tampil.php” method=”post” name=”pencarian” id=”penc…

    Ini maksudnya pencarian akan dilakukan di file tampil.php yakni file yang kita buat sebelumnya.

  5. Form pencarian sudah OK. Kita tinggal tangkap variabel dari form_cari.php.
    Karena metode yang digunakan adalah POST kita bisa menangkap variabelnya dengan $_POST['search'];
    search di sini adalah id dari Text Field di form pencarian.
    Ini dia script yang udah kita modifikasi:

    1. <?php
    2. // konfigurasi
    3. $db_host = ”localhost”;  // nama host
    4. $db_user = ”root”;  // username mysql
    5. $db_pass = ”"; //password isi sesuai seting server Anda.
    6. $db_name = ”pencarian”;  // karena nama database yang kita buat adalah pencarian
    7. // koneksi ke database
    8. $link = mysql_pconnect ($db_host, $db_user, $db_pass) or die (“Ga bisa connect”);
    9. mysql_select_db ($db_name) or die (“Ga bisa select database”);
    10. // menampilkan data
    11. // lihat perubahannya di bawah ini:
    12. $search = $_POST['search'];
    13. // kemudian kita ubah kata kunci pencarian menjadi variabel
    14. // lihat pada $search
    15. // untuk mencari kata yang mengandung kata tertentu, kita ubah tanda % menjadi di awal dan akhir kata kunci.
    16. $sql = mysql_query(“SELECT * FROM siswa WHERE nama LIKE ’%$search%’ ”) or die(mysql_error());
    17.   while ($res=mysql_fetch_array($sql)) {
    18.     echo $res[nama].’<br>’;
    19.   }
    20. ?>
  6. Agar lebih simple kita bisa menjadikan 2 file (tampil.php dan form_cari.htm) menjadi satu file.
    Tapi kita juga harus memikirkan agar kode dieksekusi apabila tombol cari sudah dipencet. :D
    Tidak lucu apabila belum diapa-apain udah basah eh maaf, sudah mengeksekusi script. Yang ada hanyalah menampilkan halaman kosong atau lebih parah lagi menampilkan kode error.

    1. if ((isset($_POST['submit'])) AND ($_POST['search'] <> ”")) {
    2. }

    Maksud kode di atas adalah kode yang diantara kurung kurawal hanya akan dieksekusi jika $_POST['submit']sudah diklik dan apabila ($_POST['search'] sudah ada nilainya.
    Mari kita lihat script yang sudah jadi. dan ingat cukup satu file ini untuk menghandle pencarian.

    1. <strong>PENCARIAN:</strong><br>
    2. <form action=”<?$_SERVER['PHP_SELF']?>” method=”post” name=”pencarian” id=”pencarian”>
    3.   <input type=”text” name=”search” id=”search”>
    4.   <input type=”submit” name=”submit” id=”submit” value=”CARI”>
    5. </form>
    6. <?php
    7. // konfigurasi
    8. $db_host = ”localhost”;  // nama host
    9. $db_user = ”root”;  // username mysql
    10. $db_pass = ”"; //password isi sesuai seting server Anda.
    11. $db_name = ”pencarian”;  // karena nama database yang kita buat adalah pencarian
    12. // koneksi ke database
    13. $link = mysql_pconnect ($db_host, $db_user, $db_pass) or die (“Ga bisa connect”);
    14. mysql_select_db ($db_name) or die (“Ga bisa select database”);
    15. // menampilkan data
    16. // lihat perubahannya di bawah ini:
    17. if ((isset($_POST['submit'])) AND ($_POST['search'] <> ”")) {
    18.   $search = $_POST['search'];
    19.   $sql = mysql_query(“SELECT * FROM siswa WHERE nama LIKE ’%$search%’ ”) or die(mysql_error());
    20.     while ($res=mysql_fetch_array($sql)) {
    21.       echo $res[nama].’<br>’;
    22.     }
    23. }
    24. ?>
    25. <br>
    26. <strong>Catatan:</strong>

    Perhatikan pula kode <?$_SERVER['PHP_SELF']?> yang semula adalah tampil.php. Kode diatas untuk mencegah adanya error apabila nama file diganti dan akan mengeksekusi dirinya sendiri.

Sedikit Tambahan.

Kita coba modif dikit kode diatas agar bisa menampilkan:

  • nomor pencarian
  • jumlah pencarian
  • pesan apabila tidak ada hasil pencarian
  1. Untuk nomor pencarian kita bisa menggunakan increement dengan kode sederhana berikut:
    1. $nomor++; echo $nomor;

    Sangat mudah dan simple..

  2. Untuk jumlah pencarian kita bisa gunakan sedikit kode ini:
    1. $jumlah = mysql_num_rows($sql);
    2. echo ’Ada ’.$jumlah.’ data yang sesuai.’;
  3. Sedangkan untuk pesan zero data kita bisa bikin conditional seperti ini:
    1. if ($jumlah > 0) {
    2.   // kode menampilkan data
    3.   }
    4.   else { echo ’Maaf, hasil pencarian tidak ditemukan.’;}

Kode lengkapnya seperti ini:

  1. <strong>PENCARIAN:</strong><br>
  2. <form action=”<?$_SERVER['PHP_SELF']?>” method=”post” name=”pencarian” id=”pencarian”>
  3.   <input type=”text” name=”search” id=”search”>
  4.   <input type=”submit” name=”submit” id=”submit” value=”CARI”>
  5. </form>
  6. <?php
  7. // konfigurasi
  8. $db_host = ”localhost”;  // nama host
  9. $db_user = ”root”;  // username mysql
  10. $db_pass = ”"; //password isi sesuai seting server Anda.
  11. $db_name = ”pencarian”;  // karena nama database yang kita buat adalah pencarian
  12. // koneksi ke database
  13. $link = mysql_pconnect ($db_host, $db_user, $db_pass) or die (“Ga bisa connect”);
  14. mysql_select_db ($db_name) or die (“Ga bisa select database”);
  15. // menampilkan data
  16. if ((isset($_POST['submit'])) AND ($_POST['search'] <> ”")) {
  17.   $search = $_POST['search'];
  18.   $sql = mysql_query(“SELECT * FROM siswa WHERE nama LIKE ’%$search%’ ”) or die(mysql_error());
  19.   //menampilkan jumlah hasil pencarian
  20.   $jumlah = mysql_num_rows($sql);
  21.   if ($jumlah > 0) {
  22.     echo ’<p>Ada ’.$jumlah.’ data yang sesuai.</p>’;
  23.         while ($res=mysql_fetch_array($sql)) {
  24.         $nomor++; echo $nomor.’. ’;
  25.         echo $res[nama].’<br>’;
  26.       }
  27.   }
  28.   else {
  29.    // menampilkan pesan zero data
  30.     echo ’Maaf, hasil pencarian tidak ditemukan.’;
  31.   }
  32. }
  33. else { echo ’Masukkan dulu kata kuncinya’;}
  34. ?>

Gw rasa itu aja cukup untuk pencarian. Hal-hal yang perlu dilakukan agar pencarian menjadi lebih baik adalah:

  1. menambahkan fasilitas anti sql injection
  2. anti XSS atack. Tapi bisa nggak yah XSS attack lewat pencarian gini?
  3. pencarian multi kolom
  4. pencarian dengan OR ata AND
  5. dan lain lain