si newbie belajar PHP: sharing kesalahan2 bodoh gue saat membangun kotakkue.com

Pepatah mengatakan, “Orang pintar belajar dari pengalamannya sendiri, orang bijak belajar dari pengalaman orang lain.” Dengan posting ini, gue telah memberikan kesempatan bagi kalian semua untuk menjadi orang bijak dengan cara belajar dari kesalahan gue. Jadi ini bukanlah tutorial, tapi sekedar sharing pengalaman. Selamat menikmati.

Berawal dari keseriusan Ida berbisnis kue, dan berakhir pada tuntutan untuk punya website sendiri, maka dengan segala keterbatasan pengetahuan gue mencoba membangun kotakkue.com, website khusus buat jualan kuenya Ida.

Ide awalnya, website ini harus mampu untuk:

  1. Diupdate secara gampang dan cepat oleh orang yang buta sama sekali soal HTML
  2. Bisa interaktif dengan pengunjung.

Maka nggak bisa enggak, websitenya harus dinamis, dalam hal ini gue memilih PHP (karena gratisan).

Berhubung di luar sana udah banyak banget tutorial PHP yang lebih lengkap dan ditulis oleh orang yang jauh lebih kompeten dari gue, maka di sini gue cuma akan menjelaskan sekilas aja tentang PHP. Selebihnya bisa kalian baca sendiri di link-link di bagian akhir posting ini.

Apa itu PHP?

Jadi begini ceritanya:

Dahulu kala, di awal masa internet, orang baru mengenal HTML (Hyper Text Mark-up Language) sebagai bahasa pemrograman web. Kalo diibaratkan, file HTML ini seperti poster: informasi ditulis ke dalamnya, terus dipasang untuk dibaca orang. Kalo informasi di dalamnya mau diubah, maka pilihannya cuma dua:

  1. Informasinya disetip terus diganti dengan informasi yang baru; atau
  2. Posternya diganti dengan poster yang baru

Berhubung orang makin butuh informasi yang serba cepat, maka terciptalah bahasa pemrograman web yang lebih dinamis, di antaranya PHP. Selain PHP masih banyak lagi sih bahasa pemrograman web yang lain, tapi berhubung gue cuma ngerti (dikit) PHP dan ASP, sementara untuk make ASP biaya sewa servernya lebih mahal, maka gue pilih PHP.

Kalo tadi HTML file gue analogikan seperti poster yang statis, PHP ini ibarat televisi: bendanya cuma satu dan itu-itu juga, tapi informasi yang dimunculkan bisa ganti-ganti sesuai kebutuhan. Dengan kata lain, PHP ini bekerja dengan dukungan sebuah database. Filenya cuma satu, tapi informasi yang dia munculkan ditarik dari database bernama MySQL.

Seberapa ‘sakti’-nya si PHP ini?

Sakti banget. Beberapa ilustrasi potensi penggunaan web berbasis PHP:

  1. Kalo elo punya toko di Bekasi, terus buka cabang di Tanjung Priok dan Tangerang, maka lo bisa bikin website di mana para pegawai toko lo bisa menginput laporan penjualan hari ini secara online, sehingga elo bisa mengelola stok secara lebih tepat dan akurat tanpa harus buang waktu, buang ongkos, buang umur kena macet di jalan. .
  2. Elo juga bisa bikin website di mana pengunjung bisa mendaftarkan diri jadi anggota, terus masing-masing anggota bisa punya halaman sendiri tempat nulis curhat, masang foto, dan upload lagu… jadi kaya Multiply gitu deh.
  3. Lo bisa bikin toko online di mana pengunjung yang mau beli bisa pilih barang cukup dengan klik-klik-klik, uang dikirim, barang diantar, dan elo bisa kaya raya sambil sarungan di rumah.

Beda dengan file HTML yang bisa dibuat dengan diketik di notepad trus disave as HTML trus kalo didouble klik bisa kebuka, PHP hanya bisa jalan di komputer yang telah terinstall dengan Apache Server dan MySQL server.


Capture halaman panduan installasi CMS “Joomla”, yang gampang untuk diikuti

Mengingat gue sama sekali nggak pernah belajar soal web programing, maka gue sebenernya nggak mudeng dengan segala kode-kode ajaibnya PHP. Untunglah di luar sana banyak orang baik hati yang mau membuat CMS (Content Management System) yang bisa didownload gratisan. CMS ini adalah sebuah file paket (biasanya zip atau rar file) yang kalo diupload ke sebuah server akan simsalabim… berubah jadi website yang canggih. Sangat membantu buat orang2 buta-PHP seperti gue.

Dengan demikian, langkah-langkah untuk mendesain dan mengonline-kan sebuah website PHP dengan bantuan CMS adalah:

  1. Install Apache dan MySQL Server di komputer kita. Dengan bantuan xammp, dua-duanya bisa langsung terinstall dalam 1 langkah.
  2. Buat database baru di MySQL
  3. Unzip paket file CMS
  4. Ikuti langkah-langkah installasi di layar, termasuk menginput nama database MySQL yang udah kita buat
  5. Simsalabim, website terbangun secara otomatis
  6. Kutak-katik tampilan web dengan CSS biar warnanya lebih sesuai dengan pilihan kita
  7. Input content website ke dalam database MySQL
  8. Upload file PHP dan MySQL server yang udah diutak-atik ke server sewaan, selesai.

Pilih-pilih CMS

Dulu waktu gue bikin website Planet Holiday, gue pake CMS bernama Joomla. Sekarang, iseng-iseng browsing around cari CMS baru, kali aja ada yang lebih keren dari Joomla. Setelah ngeliat sana-sini, gue tertarik sama CMS bernama “Drupal” yang konon abis menang penghargaan apaaa… gitu sebagai CMS favorit. Maka gue download Drupal, trus melakukan langkah 1 – 5: website default Drupal terbentuk di komputer gue.

Klik punya klik, kayanya gue masih kurang sreg dengan si Drupal ini, maka gue mulai cari-cari lagi. Pilihan jatuh pada WordPress karena kayaknya CMS yang satu ini laris bener dipake oleh para blogger. Gue coba install, klak-klik-klak-klik… ah masih kurang asoy.

Setelah nyari sana-sini, akhirnya gue lagi-lagi milih Joomla. Memang paket zipnya paling besar kalo dibanding dengan Drupal atau WordPress; setelah diunzip bisa mencapai 10 MB-an, tapi fiturnya paling lengkap. Kalo toh akhirnya fitur2nya yang banyak itu nggak gue pake, tinggal di-non-aktif aja. Lebih mudah ketimbang gue install CMS yang terlalu simpel terus masih harus browsing sana-sini untuk cari tambahan fitur.

Udah nih, pilihan jatuh pada Joomla, dan gue mulai melakukan proses permak wajah dengan CSS dan input content (langkah 6 dan 7). Berhubung komputer di kamar dijajah istri, maka gue ngerjain pake laptop di ruang tamu. Nyaris seminggu begadang, termasuk meladeni permintaan klien cerewet milih warna dan image background (“aku nggak mau gambar belakangnya gini, kesannya sok eksklusif” – “kok hurufnya kecil amat” – “link yang itu nggak keliatan” dsb dsb). Yah mau gimana lagi, klien adalah raja.

…dan kekacauan mulai terjadi

Setelah selesai permak wajah dan input content, gue pindahin seluruh file dari laptop ke flashdisk trus pindah lagi ke komputer di kamar. Sekarang masuk ke langkah 8, upload file CMS dan database MySQL ke server sewaan (gue pake Jagoanhosting.com, murah cuma 20 ribu per bulan dan lumayan kenceng). Lumayan lama juga proses uploadnya, apalagi setelah dipermak dan diinput, ukuran file yang tadinya 10 MB-an bengkak jadi sekitar 12 MB-an.


Tampilan file manager di control panel server, mirip windows explorer di komputer kita

Sambil nunggu proses upload selesai, gue iseng browsing cari referensi tentang tips mengupload Joomla ke server. Ealaaaa… ternyata ada satu tutorial yang mengajarkan bahwa untuk mengupload file CMS nggak perlu dalam keadaan udah diunzip (yang besarnya 12 MB itu tadi), melainkan cukup upload paket file zip-nya (ukuran sekitar 2 MB), baru nanti diunzip di server lewat control panel!

Maka, pelajaran pertama kita hari ini adalah:
Upload-lah file CMS dalam bentuk paket zip, supaya lebih irit waktu dan tentunya bandwith.

Berhubung udah tanggung, maka gue jabanin aja proses upload file yang 12 MB itu terus berjalan sampai selesai. Abis itu gue create new MySQL database, selesai. Berikutnya utak-atik file configuration biar file PHP-nya bisa mengenali database MySQL-nya di rumah yang baru, selesai.

Setting udah gue ubah, seharusnya sih website udah langsung online, tapi… lho… kok, malah muncul halaman error? Katanya:

ERROR: blablabla… file globals.php not found blablabla.. .

…atau dengan kata lain, server menuduh gue kelupaan nggak mengupload file globals.php, sebuah file yang vital untuk menjalankan website gue.

Lewat FTP program gue telusuri satu-satu file yang udah gue upload ke server. Lha itu, ada kok file bernama globals.php… gimana sih?

Gue coba refresh, dan…

ERROR: blablabla… file globals.php not found blablabla.. .

NOT FOUND GIMANA SEEEEH… ORANG UDAH JELAS-JELAS ADA GITU LOH, NGGAK PUNYA MATA YA?

Saking sebelnya gue sampe ngomong sendiri ke layar monitor di tengah malam buta. Ya iyalah, server mana punya mata…

Sampe subuh gue utak-atik, coba refresh bolak-balik, nggak berhasil juga. Sampe gue delete semua file yang 12 MB itu tadi, dan gue upload ulang, tetep aja nggak berhasil. Sial bener.

Besokannya gue tanya temen2 gue yang web-programmer betulan di kantor (kalo gue kan jadi2an), kata mereka “coba aja upload ulang filenya”. Udah, tauuuuu!

Pulang kantor, gue kembali melototin monitor. Apa sih yang salah? Gue coba upload ulang file paket zip Joomla yang asli ke server, gue unzip di sana, trus gue perhatiin satu-satu. Hmmm… kayaknya gue mulai nemu kesalahannya di mana.

Harusnya, kalo kita mengcopy sebuah file ke dalam folder, dan di folder itu udah ada file dengan nama yang sama, maka seharusnya file yang baru akan menimpa (overwrite) file yang lama, kan? Tapi ternyata, itu nggak terjadi di server gue. Jadi ada file index.php, berjejeran dengan INDEX.PHP. Ada globals.php, juga ada GLOBALS.PHP. Jadi…. ya ampuuun… ternyata nama file di server itu case-sensitive, alias membedakan nama file berdasarkan huruf besar dan kecil!

Pelajaran ke dua kita hari ini adalah:
Server linux, yang merupakan turunan dari server unix, itu case-sensitive, jadi perhatikan nama file jangan sampe keliru naro huruf besar dan kecil.

Yang gue masih nggak ngerti sampe sekarang adalah, kenapa nama2 file yang tadinya huruf kecil semua waktu diolah di laptop, bisa mendadak berubah jadi huruf besar semua waktu dipindah ke komputer di kamar. Ada yang tau?

Langkah berikutnya, mengupload database MySQL ke server. Dari laptop udah gue ‘dump’ (export) datanya, terus gue copy paste ke server lewat aplikasi PHPMyAdmin. Adan… error lagi. Katanya:

ERROR: table name wp_links is invalid blablabla

Loh kok, ada tabel berawalan ‘wp’ sih? Bukannya database Joomla biasanya berawalan ‘jos’??
Setelah gue inget-inget lagi… ya ampun, rupanya waktu gue coba-coba CMS Drupal dan WordPress kemarin ini, databasenya kecampur-aduk di database Joomla gue – sehingga waktu diupload ke server yang menjalankan website Joomla, jadinya malah error.

Terpaksa deh nyari kutu, nelusurin satu per satu databasenya dan ngedeletin table2 yang nggak berhubungan dengan Joomla.

Pelajaran ke tiga kita hari ini adalah:
Kalau mau nyoba aneka CMS, pastikan masing-masing terkoneksi ke database yang terpisah, biar nggak kusut!

Begitulah sharing pengalaman gue hari ini, yang berakhir dengan happy-ending karena sekarang website kotakkue.com udah online dengan suksesnya. Pesan moralnya adalah, buat kalian yang bernasib sama seperti gue, yaitu nggak punya latar belakang pendidikan web-programming tapi ingin punya website sendiri, jangan putus asa – sekarang udah banyak paket-paket CMS gratisan yang gampang untuk dijalankan. Pasti bisa kok, asal rajin aja browsing2 nyari referensi. Tetap semangat! 🙂

Referensi soal PHP dan CMS-nya yang ditulis dalam bahasa Indonesia

  1. Komunitas Joomla Indonesia
  2. Dapur Hosting – selain menyediakan layanan web-hosting juga punya banyak tutorial
  3. Aminudin.net – blog pribadi yang punya tutorial Joomla
  4. Rumahweb.com – aneka tutorial PHP dan Joomla

35 comments


  1. Kalo Otto tuch langsung naroh Joomla ke server, gak peduli kosong gitu, cuman standar dari Joomla.Lalu dech ngisi dikit-dikit, ngedit dikit-dikit.Sekarang…,ech.., ternyata bikin lebih mudah dari memeliharanya……


  2. thefool said: Ah, menghilang karena itu toh, Gung. Selamat dan semoga sukses untuk Ida.

    yah begitulah… krn penasaran, jadi nggak sempet ngerjain yang lain. begitu pulang kantor langsung utak-atik kotakkue.com lagi. hehehe.. terima kasih ya..


  3. Iya, memang nggak susah-susah amat kokDulu pertama-tama juga kaykanya menakutkan, setelah dicoba, wualah nggak repot-repot amat kok, asal seneng saja… :)Kalo belajar php sih memang harus belajar sambil jalan terus… :)(Ana juga masih belajar) :)Link keren semoga bermanfaat.::PHP::.PHP-idhttp://php-id.org/sitePHPughttp://phpug.or.idForumPHPhttp://forumphp.web.idGeckohttp://www.gecko.web.idPhpEasyStephttp://www.phpeasystep.com


  4. mprasodjo said: Programmer yang sudah butuh tidur

    setujuBanget!hu..hu…hu… tapi emang gituh kale yah… biasanya programer itu kalo sendang coding2 and nemuJalan buntu pasti deh bakal terusTerusan mencoba sampai lupa tidur lupa makan. setelah selesai, teriak “berhasil!!” he..he… padahal udah ga tidur 48 jam :)ayo ngaku para programer|webMaster|GamersJugaBoleh 😀


  5. kudiarto21 said: maz usul maz utk itu kotakkue.com.pasangin “virtuemart” biar resmi jadi webStore 🙂 and iForum |fireBoard| juga, biar rame and resmi jadi web 2.Ooh. iya jangan lupa liveSupport YM sekalian

    virtuemart sedang dipertimbangkan, lagi diujicoba nih di local :-)kalo iforum kayaknya enggak deh, terlalu makan space, dan lagi topik kotakkue.com terlalu spesifik untuk bisa dibahas di forum. kayaknya cukup di comment box aja deh (udah ada comment box lho by the way… hehehe iklan teruuus…. )


  6. kudiarto21 said: maz, enak mah cPanelnya ada “Fantastico”nya, ada itu beres dah semua….

    entah kenapa fantastico di webhosting gue nggak bisa dipake. ada ikonnya, tapi kalo diklik muncul tulisan ‘fantastico is disabled’.


  7. he..he… maz-maz.maz i lope joomla! :Ddrupal lumayan asik tapi ya itu tadi supportnya kurang :)lagiPula rajaCMS sekarang joomla! logh…seru yah, kalo udah nemu masalahnya——– tapi tambah pusing kalo ga beres2 :Dmaz, enak mah cPanelnya ada “Fantastico”nya, ada itu beres dah semua….-lopeJoomla!AndManiacCMS-


  8. mbakari said: Nunggu sepuluh menit baru layar kotakkue-nya jreng… kemarin nunggu setengah jam belum terbuka juga. So, sudah lumayan ada peningkatan.

    10 menit? waduh, lama banget ya… di sini kurang dari 1 menit lho… nggak nyangka segitu gede efek lokasi server ya.


  9. kangbayu said: kurang lebih begini…”gung, jadi Drupal nggak cocok? Soalnya gw lagi mau nyoba juga”

    dari segi performance sih dia sedikit lebih cepet dari joomla, tapi masalahnya fiturnya minimal banget. WYSIWYG editornya aja harus install dulu, belum ada polling, dsb. Konon kelebihannya memang krn dia highly customizable, tapi yang gue butuhkan adalah CMS yang udah tinggal jalan – maka gue memilih joomla.


  10. Lho, perasaan tadi udah reply juga… kemarin juga harus ngulang lagi dan sekarang harus ngulang lagi … *kurang kerjaan, padahal udah cuci piring, ngepel dan mencangkul kebon…* Oya, tadi cuma bilang setelah nunggu 10 menit barulah layar kotakkue-nya jreng… padahal kemarin nunggu setengah jam dan sudah bolak-balik re-boot sampai komporku bosen… hihihi… tapi waktu vote “lambat” eh result-nya cepat lho, Mbot… (copy dulu sebelum submit reply-an, biar kalau harus ngulang reply-an nya tinggal di paste, sedia payung sebelum hujan).