catetancoding


[Symfony] Criteria Objek Syntax

Posted in PHP, Symfony by masdabhakti on 2009/11/19

Catetan dikit,

SQL Criteria
WHERE column = value ->add(column, value);
WHERE column <> value ->add(column, value, Criteria::NOT_EQUAL);
Other Comparison Operators
> , < Criteria::GREATER_THAN, Criteria::LESS_THAN
>=, <= Criteria::GREATER_EQUAL, Criteria::LESS_EQUAL
IS NULL, IS NOT NULL Criteria::ISNULL, Criteria::ISNOTNULL
LIKE, ILIKE Criteria::LIKE, Criteria::ILIKE
IN, NOT IN Criteria::IN, Criteria::NOT_IN
Other SQL Keywords
ORDER BY column ASC ->addAscendingOrderByColumn(column);
ORDER BY column DESC ->addDescendingOrderByColumn(column);
LIMIT limit ->setLimit(limit)
OFFSET offset ->setOffset(offset)
FROM table1, table2 WHERE table1.col1 = table2.col2 ->addJoin(col1, col2)
FROM table1 LEFT JOIN table2 ON table1.col1 = table2.col2 ->addJoin(col1, col2, Criteria::LEFT_JOIN)
FROM table1 RIGHT JOIN table2 ON table1.col1 = table2.col2 ->addJoin(col1, col2, Criteria::RIGHT_JOIN)

Starting : PHP Framework Symfony

Posted in PHP, Symfony by masdabhakti on 2009/11/13

Jangan tanya gw tentang deskripsi formalnya. Gw penulis code yang berasaskan best practice dengan konsep seperlunya. Ketika koding sudah efektif dari segi algoritma, memori, dan run time nya, maka cukup sudah. Coding lama2  menyebabkan penggunaan dosis caffein dan nikotin meningkat.  Gak Sehat. *malah curhat*

Jadi, setelah cukup lama membangun aplikasi web deingan  Code Igniter (CI), sekarang gw dilibatkan dengan aplikasi yang  menggunakan php framework Symfony. Seberapa jauh bedanya??? beda banged.

Symfony dikembangkan sampe versi 1.3 . Beda ama CI yang sekarang udah ampe 1.7. Bukan berarti Symfony ga da perkembangan, ato kurang komunitasnya. Justru sejak awal dibangun, Symfony udah sangat direncanakan dengan konsep yang matang. Jadi, baik frameworknya, dokumentasinya,  dan  dukungan third party libraries-nya bisa dibilang lengkap dan stabil.

What next? pertamakali, cari tahu makhluk apa ini di site resminya : http://www.symfony-project.org/ .  Learning curve-nya lumayan berat, so just move on, slowly but sure.

Fundamental things that you have to know sebelum akhirnya masuk lebih jauh ke symfony, ga perlu tau detil,  setidaknya cukup mengenal, antara lain :

1. PHP 5.  Symfony dibangun diatas PHP 5. Dapat dipastikan berbau bau object, class, dsb.

2. OOP. Relasinya jelas dari point 1. Akan lebih sering menulis  code “tanda panah” disini :)

3. ORM (Object Relational Mapping). Singkat kata, ini merupakan metode pemetaan objek database menjadi objek class, sehingga kelak apapun database yg digunakan, ga jadi masalah. Dalam hal ini, ORM yang digunakan bisa Propel, atau Doctrine.

4. YAML. Semacam XML but with a much simpler syntax. Scripting language yang vital dan banyak ditemukan di symfony. Script ini nantinya akan meng’generate’/parsing menjadi script php yang gak perlu lagi dicoding oleh programmernya.

5. MVC Pattern. Model, View, Controller. Bla bla bla :)

Ada yang bilang, framework symfony adalah awalan yang baik untuk belajar framework di PHP. Kenapa? ga tau juga, gw baru mulai. Mungkin karena saking kompleksnya framework ini, sehingga kalo ini dikuasai, maka penguasaan framework lain akan lebih mudah. Setidaknya sebelumnya gw udah buktiin kalo CI itu mudah. Lightweight banged ^^ Kita buktikan saja.

Error CI : 404 Page Not Found

Posted in CodeIgniter, PHP by masdabhakti on 2009/05/27

Error ini gw temukan ketika aplikasi web yang gw kembangbiakkan di XAMPP windows, mendadak error 404 ketika di deploy di server linux.

Hasil pencarian menunjukkan beberapa yang harus diidentifikasi, mungkin juga ini jadi problem serupa yang dialami banyak CI coder :

  1. Server tidak bisa membaca routing URI yang dibentuk oleh CI. Salah satu solusinya adalah modifikasi file .htaccess. Detilnya silakan google. Ada kok yang versi indonesia dan komplit, sayang gw gak nyimpen linknya.
  2. Juga karena masalah routing URI. Barangkali sebelum ribet membongkar .htaccess bisa dicoba dengan mengubah-ubah variabel URI protocol di file config.
/*|--------------------------------------------------------------------------
| URI PROTOCOL
|--------------------------------------------------------------------------
|
| This item determines which server global should be used to retrieve the
| URI string.  The default setting of "AUTO" works for most servers.
| If your links do not seem to work, try one of the other delicious flavors:
|
| 'AUTO'            Default - auto detects
| 'PATH_INFO'        Uses the PATH_INFO
| 'QUERY_STRING'    Uses the QUERY_STRING
| 'REQUEST_URI'        Uses the REQUEST_URI
| 'ORIG_PATH_INFO'    Uses the ORIG_PATH_INFO
|
*/
$config['uri_protocol']    = "AUTO";

Nah kalo anda sudah terlalu lama meng-analisa kebingungan anda tentang itu, coba telisik dengan sesuatu yang lebih fundamental.

Apakah anda ingat bahwa Linux itu bersifat case-sensitive, termasuk ketika membaca URI protocol?

JRENG JRENG!! … *efek ahaa!*

Apakah anda sudah menerapkan konvensi koding milik CI? Diantaranya memberi judul file php diawali dengan huruf kecil, jika terdiri dari dua kata maka harus dipisah dengan underscore ( _ ) .

Walaupun nama class anda diberi nama

Class WelcomeWorld extend Controller {….

Maka tetap saja nama file sebaiknya menjadi welcome_world.php

Sehingga, mungkin saja kesalahan error tadi hanya muncul karena anda memanggil  :  http://localhost/tdms/index.php/WelcomeWorld ,

yang seharusnya dipanggil

http://localhost/tdms/index.php/welcome_world

Semoga bermanfaat : )

Javascript check all/uncheck all pada checkbox

Posted in Javascript, PHP by masdabhakti on 2009/04/06

Kebanyakan tutorial onclick untuk checkbox mengasumsikan nama checkbox yang sama untuk semua item.


<form name="test">
<input type="checkbox" name="checkgroup" checked />
<input type="checkbox" name="checkgroup" />
<input type="checkbox" name="checkgroup" checked />
</form>

Padahal seringkali checkbox yang dibuat dinamai dengan sebuah array. Hal ini untuk mempermudah indexing saat POST di controller.

<input type="checkbox" name="checkgroup[]" checked />
<input type="checkbox" name="checkgroup[]" />
<input type="checkbox" name="checkgroup[]" checked />

Tentu saja, ini membuat js yang mereka share jadi ga valid.

Berikut js script yang gw modif sedikit dan bisa digunakan untuk melakukan ‘check all’ dan ‘uncheck all’ pada array checkbox


<SCRIPT LANGUAGE="JavaScript">
        function select(myForm,nameField,a) {
               var theForm = myForm;
               for (i=0; i
<theForm.elements.length; i++) {
                       if (theForm.elements[i].name==nameField){
                            theForm.elements[i].checked = a;
                        }
                }
       }
 </SCRIPT>

/**keterangan :
 * myForm = nama form,
 * nameField = nama field checkbox,
 * a = 1 atau 0 (checked or not)
 */

Berikut contoh penggunaannya di html:

<a href="#" onClick="select(document.my_form,'view[]',1);return false;">Check All</a>

Atau kalo ditulis dalam CI menjadi :

anchor('#', 'Check All', array('onClick' => 'select(document.add_form,\'view[]\',1);return false;'))

Semoga bermanfaat.

Setting Environment XAMPP, Windows, dan Oracle XE

Posted in Database, Oracle, PHP by masdabhakti on 2009/03/06

Mari kita bikin tulisan ini singkat jaya dan padat makmur.

Untuk XAMPP sebagai web server kita, perlu di utak atik sedikit ketika ketika menggunakan Oracle sebagai databasenya. File yang diubah yaitu php.ini yang sedang aktif. Defaultnya berada di ‘xampp/apache/bin/php.ini’.

Buka/aktifkan extension untuk akses oracle, dengan menghapus ‘titik-koma’ didepannya.


//baris  : 634

extension=php_oci8.dll

Hmm, itu saja nampaknya cukup.

Next,

Untuk Setting Environment Windows. Terpenting adalah Download dulu Instant Client Oracle untuk windows disini . Pilih sesuka anda sesuai dengan weton anda. Karena jangan-jangan anda tidak cocok kerja di darat. Maaf, ngelantur.

Pilih saja versi terakhir. Kalo gw nyobanya yang versi 10.1.0.5. Kemudian donlotan berupa zip itu extract lah dengan bijaksana ke suatu folder bernama ohinstantclientku (yang lain juga boleh sih).

Lalu buka Path variable yang bermula dari System Properties > Advanced > Environment Variables .

Edit dan tambahkan lokasi extractan zip  yang tadi itu *kebingungan mencari bahasa baku*. Ini contoh punya gw :


<span class="parahead1">D:\foldernarikbecak\ohinstantclientku\instantclient10_1;</span>

OK. Save. Satu langkah terakhir menuju peradaban baru.

Kopikan 3 file berikut yang berada dalam extractan tadi ke system32 :

oci.dll

orannzsbb10.dll

oraociei10.dll

Ok. beres.

Kalo ada trouble, jangan sungkan untuk bertanya. Dengan senang hati saya akan baca pertanyaannya, walopun ujung2nya gak dijawab karena ga bisa ^ ^

Kali aja referensi ini bisa bantu untuk masalah yang serupa.