[PHP][JSON] Read JSON File


Deskripsi
        JSON (JavaScript Object Notation) adalah format data interchange yang ringan. Sangat mudah bagi manusia untuk membaca dan menulis. Sangat mudah bagi mesin untuk memparsing. Hal ini didasarkan pada subset dari JavaScript Programming Language, Standar ECMA-262 Edisi 3 - Desember 1999. JSON adalah format teks yang benar-benar independen tetapi menggunakan konvensi yang sangat memudahkan bagi programmer dari C-keluarga bahasa, termasuk C, C + +, C #, Java, JavaScript, Perl, Python, dan banyak lainnya. Properti ini membuat JSON bahasa data interchange yang ideal.

How To


Read File Json from Php  :


Json file content
{"val1":1,"val2":2}



<?php
// get file json and reading content
$varSementara = json_decode(file_get_contents('filejson.json'));

echo $varSementara->{'val1'};
echo '<br/>';
echo $varSementara->{'val2'};
?>


output :
1
2


[PHP][JSON] Write JSON File


Deskripsi
        JSON (JavaScript Object Notation) adalah format data interchange yang ringan. Sangat mudah bagi manusia untuk membaca dan menulis. Sangat mudah bagi mesin untuk memparsing. Hal ini didasarkan pada subset dari JavaScript Programming Language, Standar ECMA-262 Edisi 3 - Desember 1999. JSON adalah format teks yang benar-benar independen tetapi menggunakan konvensi yang sangat memudahkan bagi programmer dari C-keluarga bahasa, termasuk C, C + +, C #, Java, JavaScript, Perl, Python, dan banyak lainnya. Properti ini membuat JSON bahasa data interchange yang ideal.

How To


Write File from Php to JSON format :



<?php
$file = array('val1' => 1,'val2' => 2);

// Write to the file
file_put_contents('filejson.json', json_encode($file));
?>

output :
filejson.json with content {"val1":1,"val2":2}

[PHP] Regex Quick Refference


Deskripsi
      hanya untuk sharing aja , mungkin aja perlu dan dipakai pada saat menggunakan fungsi pencarian string preg_match() di php.

How To

Regex quick reference
[abc]     A single character: a, b or c
[^abc]     Any single character but a, b, or c
[a-z]     Any single character in the range a-z
[a-zA-Z]     Any single character in the range a-z or A-Z
^     Start of line
$     End of line
\A     Start of string
\z     End of string
.     Any single character
\s     Any whitespace character
\S     Any non-whitespace character
\d     Any digit
\D     Any non-digit
\w     Any word character (letter, number, underscore)
\W     Any non-word character
\b     Any word boundary character
(...)     Capture everything enclosed
(a|b)     a or b
a?     Zero or one of a
a*     Zero or more of a
a+     One or more of a
a{3}     Exactly 3 of a
a{3,}     3 or more of a
a{3,6}     Between 3 and 6 of a

/teSt/   include word 'teSt' (case sensitive)
/tEst/i  include word 'test' (case insensitive)
/tEst|CrAp/i  include word 'test' or crap(case insensitive)


options: i case insensitive 



example case , detecting mobile browser


<?php
// The "i" after the pattern delimiter indicates a case-insensitive search
if (preg_match(strtolower("/chrome|mozila|Opera/"), strtolower($_SERVER['HTTP_USER_AGENT']))) 
{
    echo "Browser Standart(Chrome or Mozilla or Opera) Found.";


if (preg_match("/MSIE/i", strtolower($_SERVER['HTTP_USER_AGENT']))) {

    echo "Browser IE Found.";



if (preg_match("/opera mini/i", strtolower($_SERVER['HTTP_USER_AGENT']))) {
    echo "Mobile Browser Found.";


?>

[PHP][FTP] Using FTP in php


Deskripsi
           File Transfer Protocol (FTP) adalah protokol jaringan standar yang digunakan untuk mentransfer file dari satu host ke host lain melalui jaringan berbasis TCP. FTP dibangun pada arsitektur client-server dan menggunakan kontrol terpisah dan sambungan data antara klien dan server. untuk menggunakan FTP dibutuhkan Username dan Password untuk otentikasi namun dapat diberikan juga secara anonymous.

How To

1. Step ke-1 set FTP server anda , saya asumsikan FTP rootnya folder FTP .
    contoh / example IP FTP Server : 192.168.1.2
    Struktur FTP :
         FTP (root folder) --> Files (folder) --> text.txt (file ini yang akan kita ambil)

2. Struktur file php di webserver (in your webserver),
     
       WWW / Localhost   --> download.php
                                       --> files (folder) --> 'we will create here

3. write Php code in download php

<?php
// define some variables
$save_to = 'files'; // download only just in webserver
$server_file_ftp = 'Files/text.txt';
root folder webserver : WWW/FTP/Download

// set up basic connection
$conn_id = ftp_connect('192.168.1.2');

// login with username and password, you can create account in FTP server
$login_result = ftp_login($conn_id, 'Anonymous', '');

$save_to =  'files\text.txt';
$server_file_ftp = 'files\text.txt';

// try to download $server_file_ftp and store in $save_to (your local web server)
if (ftp_get($conn_id, $save_to, $server_file_ftp , FTP_BINARY))
{
    echo "Successfully written to $save_to\n";
}
 else
{
    echo "There was a problem\n";
}

// close the connection
ftp_close($conn_id);

?>

4. Open URL in LOCALHOST/files/download.php
5. Done, jika tidak ada masalah maka file anda berada di direktory in webserver :
    WWW --> files/text.txt

[PHP][TCPDF] Create Report PDF from PHP


Deskripsi
        Membuat Report PDF menggunakan TCPDF , diharapkan user dapat memahami konsep dasar membuat Report PDF menggunakan class dari TCPDF.

How To
1. Download Class TCPDF  http://www.tcpdf.org/
2. Buat folder TEST di webserver anda.
3. Extract TCPDF beserta isi classnya ke dalam folder TEST.
4. Struktur folder anda sekarang :

       TEST ---> TCPDF ---> File and library TCPDF Here

5. Sekarang buat file index.php di dalam folder TEST, sehingga strukturnya menjadi seperti ini :

       TEST ---> TCPDF ---> File and library TCPDF Here
                 ---> index.php

6. Copy paste Code dibawah ini


<?php
require_once('tcpdf/tcpdf.php');

// for setting variable you can goto tcpdf/config/tcpdf_config, you can change them
// create new PDF document; (i set PDF_UNIT from Milimeter  to Centimeter)
$pdf = new TCPDF(PDF_PAGE_ORIENTATION, PDF_UNIT, PDF_PAGE_FORMAT, true, 'UTF-8', false);

//set margin page (all direction)
//setMargins(LEFT,TOP,RIGHT)  in CM (centimeter), it's looks like MS Word :D
$pdf->SetMargins(1, 3, 1,true);


//setup Header
$pdf->SetHeaderMargin(1); // margin header 1 CM
$pdf->setPrintHeader(true); // enabled ? true
$pdf->SetHeaderData(false, 0, "Hellow World Header", "mynotework.blogspot.com"); //your text here
$pdf->setHeaderFont(Array(PDF_FONT_NAME_MAIN, '', 15)); // data font header

//Set Footer
$pdf->SetFooterMargin(1); // margin footer 1 CM
$pdf->setPrintFooter(true); // enabled ? true
//$pdf->setFooterData($tc=array(0,64,0), $lc=array(0,64,128));
$pdf->setFooterFont(Array(PDF_FONT_NAME_DATA, '', PDF_FONT_SIZE_DATA));

// set default monospaced font
//$pdf->SetDefaultMonospacedFont(PDF_FONT_MONOSPACED);

//set auto page breaks
$pdf->SetAutoPageBreak(true, 1.3); // it's use when u use table, to increase break page

// Set font
$pdf->SetFont('dejavusans', '', 14, '', true); // set global font

// Add a page, MUST BE DECLARATION at lease 1 statement
$pdf->AddPage();

// Set some content to print
$html = ' Hello World TCPDF';


// Print text using writeHTML()
$pdf->writeHTML($html, true, 0, true, 0);

// Buat output buffer page(I) / create file (F)
$pdf->Output('example_001.pdf', 'I');

//============================================================+
// END OF FILE
//============================================================+
?>

if you will use table ? simple ! , just write you HTML , for example


//some example
$html = ' <table>
                <tr nobr="true" border="1">
                       <td nowrap="true">this if my first cell</td>
                </tr>
             </table>';


// Print text using writeHTML()
$pdf->writeHTML($html, true, 0, true, 0);

*nobr="true" => no breakline
*border="1" => show border cell
*nowrap="true" => cell can increase width automatically when character veryyyy loooong :D

one more , you can customize TCPDF setting on tcpdf/config/tcpdf_config.php ALL OF SETTINGS VARIABLE IN THERE and it's familiar with MS WORD.

still not understand ?
you can download my sample and running in your webserver wamp/xampp (apache) :


Download Sample Tutorial
Instruction :
1. before download take a survey first to help our advertiser.
2. after download, just drop extract the file (.rar) to your webserver (WWW / Htdocs)
3. Access via localhost using browser and you will get the result.
4. every download = you give a cup of cofee to me, thank you very much it make me wants to create a better tutorial.
5. this file, include tcpdf library.

[Database][Oracle] Show View (Hidden)


Deskripsi
      Oracle mempunyai cara untuk membuat record pada view menjadi HIDDEN (tidak bisa dishow), pada artikel ini akan dijelaskan bagaimana membuat agar record tersebut menjadi terlihat, tetapi tidak semua data yang hidden bisa terlihat karena juga ada faktor-faktor lain.

How To

jalankan query di bawah ini,

Recommended Method No.1 (already tested on production server)

1. Using Fnd_client_info
FND_CLIENT_INFO is mainly used to set the organization of the application. ITs something similar to setting the environment in unix box for pareticular Oracle instance. The code below when run, sets the organization to 0 and the datas for the operating unit = 0 will be retrieved from the oracle application views like po_headers,ap_vendors etc.....


Begin
    Fnd_client_info.Set_org_context(0);
End;


Atau / or


2. Using dbms_application_info (Not Recommended, we need view only)
client_info Supplies any additional information about the client application. This information is stored in the V$SESSION view. Information exceeding 64 bytes is truncated.

Note:


CLIENT_INFO is readable and writable by any user. For storing secured application attributes, you can use the application context feature.

Begin

    dbms_application_info.set_client_info('0');
End;


Legend :
* 0 merupakan org_id, organization ID may be vary. 
* this show only temporary , after disconnect you will not able to see the record and you must run that query again

[PHP][Security] Prevention XSS Attack


Description
           Cross-site scripting (XSS) is a type of computer security vulnerability typically found in Web applications. XSS enables attackers to inject client-side script into Web pages viewed by other users. A cross-site scripting vulnerability may be used by attackers to bypass access controls.
there is 3 type of XSS attack : Stored, Reflected, and DOM-Based. 

1. Stored XSS  
    this type the script stored into database, the common attack via URL or Form .
XSSStored1.PNG


 for example display cookie , injected via Form 

XSSStored2.PNG

2. Reflected XSS 
     this type attack where script not stored in database but direct in client html, typically attack via URL and distribute using link, 
here's for example http://example.com/index.php?user=<script>alert(123)</script>

3. DOM-Based XSS 
    this type attack modified DOM element on client html , of course this attack maybe reflected or stored xss. here's for example :
    http://example.com/index.php?user=<script>window.onload = function() {var AllLinks=document.getElementsByTagName("a");AllLinks[0].href = "http://badexample.com/malicious.exe"; }</script> 

but these day typical attack just include source javascript from CDN <script type="text/javascript" src="www.somecdnnetwork.com/maliciousscript.js"></script>

of course with calling that file the attacker can do many things such as dom manipulation , redirect to phising site or  steal cookie.  


How To Prevent XSS

1.  Use Httponly for prevent stealing cookie. 
2.  Always filter every input parameter (including html char , hexadecimal, base64 dll) .  

Syntax :  htmlspecialchars() or strip_tags()
   

[Cakephp] Method yang sering dipakai di Cakephp


Deskripsi
       Berikut adalah fungsi-fungsi yang sering saya pakai di cakephp pada bagian controller dan view.

How to
In Controller :
* Router::url(array('controller'=>'main','action'=>'logout'), true); // change page
* $this->render(false / true); // execute controller, but disable view
* $this->layout = layout_name / false; // use layout
* $this->theme = theme_name / false; // use theme
* $this->redirect(array('controller'=>'mycontroller','action'=>'myaction')); // redirect page
* $this->request->is('ajax') // check if request is ajax
* $this->request->is('post') // check if request is post
* $this->set('new_variable','value'); // create var to view
* $this->data / $this->request->data
* $this->Session->delete/read/write('mysession')
* $this->Auth->deny('*'); //disable all action , current controller
* $this->Auth->allow('login','not_supported'); //action only , current controller
* Debug($variable)
* App:import('Vendor','tcpdf/tcpdf'); // use tcpdf class

simpan record 1 field

$this->MODEL->id=$id;
$this->MODEL->saveField('FIELD','value');




In View :

$this->Html->meta('icon',$this->Html->url('/favicon.ico'));
$this->Html->css('yourcss');
$this->Html->css('jquery-ui-1.9.0.custom');

membuat link :
<?php echo $this->Html->link('Edit',array('controller'=>'xxx','action'=>'zzz','escape'=>false)) ?>

menambahkan image :
<?php echo $this->Html->image('loading.gif') ?>

membuat button link :
<?php echo $this->Form->button('Logout', array('onclick' => "location.href='/myapp/main/index'")) ?>

membuat button link untuk akses file di folder webroot/files/report/xxx  :
<form method="GET" Action="<?php echo $this->webroot.'files/reports/'.$myuser.'.xlsx'?>">
            <input TYPE="submit" VALUE="Download Report">
</form>

membuat form di view
$this->Form->create('MODEL',array('controller'=>'','action'=>''))
$this->Form->input('field',array(attribute))
$this->Form->submit('value')
$this->form->end()

//table ajax pagination
<?php $this->Paginator->options(array(
'update' => "#location_div_table",
'evalScripts' => true,
'before' => $this->Js->get('#busy-indicator')->effect('fadeIn', array('buffer' => false)),
'complete' => $this->Js->get('#busy-indicator')->effect('fadeOut', array('buffer' => false)),
));
?>

// for pagination
 <th colspan="7" class="tPagination">
                        <div id="paging">
                        <?php
                        echo $this->Paginator->prev('&laquo; Sebelumnya', array('escape' => FALSE));
                        echo ' |';
                        echo $this->Paginator->numbers(array('separator' => false));
                        echo '| ';
                        echo $this->Paginator->next('Selanjutnya &raquo; ', array('escape' => FALSE));
                        ?>
                        </div>
   </th>

//close tag
<?php echo $this->Js->writeBuffer(); ?>

*Note : Update 19/03/2014

[VB6] Textbox hanya menerima input angka


Deskripsi
     Textbox hanya menerima input angka , character tidak diperbolehkan

How to :


1. Buat object textbox

2. klik 2x, ganti event ke Keypress

Ikuti contoh code seperti dibawah ini :


Private Sub Text1_KeyPress(KeyAscii As Integer)


   Dim strKey As String
   strKey = "0123456789"
   If KeyAscii > 26 Then
      If InStr(strKey, Chr(KeyAscii)) = 0 Then
         KeyAscii = 0
         Exit Sub
      End If
   End If



End Sub

[E-Bussiness Suite] Mendapatkan File Report dan Memasukan Kembali ke Server




Deskripsi
     Mendapatkan File Report dan Memasukan kembali dari dan ke Oracle E-Bussiness Suite

How To
1. Dapatkan Nama File Report :
- Jalankan Run > Report di oracle , pilih Name Report kemudian catat nama reportnya.
- Buka Concurrent Program (Administrator), FIND kemudian masukan nama report tadi.
- Setelah muncul lihat pada bagian kotak informasi executable, catat nama filenya.
- kemudian buka  Concurrent Program Executable (Administrator) , FIND, masukan nama file tadi.
- Baca keterangan informasi "APPLICATION" untuk menentukan FOLDER di SERVER.
- jika ORACLE PURCHASING => folder codenya PO
    jika ORACLE RECEIVABLE => folder codenya AR
   jika ORACLE PAYABLE => folder codenya AP

2. Buka FTP lewat toad (untuk mendapatkan file report) 
  - Masukan IP xx.xx.xx.xx (Database dan Report) , kemudian masukan username:xxx dan juga 
     passwordnya. setelah itu ganti path ke 
    "/U02/orafin/prodappl/*folder_code*/11.5.0/reports/xxx/US"
    *path may be different

- Dapatkan file reportnya tadi sesuai nama filename reportnya, klik tanda < (download).

3. Edit File Report menggunakan Report Builder 6i / 10i. Setelah selesai di edit jangan lupa 
   di compile di PROGRAM > COMPILE > ALL, kemudian save.

4. Buka FTP toad, buka kembali path directory sama seperti sebelumnya, BACKUP FILE
    ORIGINAL di sisi server production yang ingin di replace dengan cara direname dengan format :
    NAMEFILEORIGINAL_YYYYMMDD (penamaan dari saya :D ) , kemudian klik upload atau >.
    
JIKA MUNCUL TULISAN OVERWRITE PILIH NO, BERARTI FILE PRODUCTION BELOM DI BACKUP !!

5. Report sudah bisa digunakan server PRODUCTION.

6. jangan coba" menjalankan report PO karena ada FLAG DUPLIKASI !!!! dibagian paling bawah report.

[E-Bussiness Suite] Compile Oracle Forms di Linux


Deskripsi

Mungkin ada yang baru belajar cara membuat atau modifikasi oracle form builder di EBS.  Saya mencoba sharing cara compile oracle forms builder di Linux. Langkah-langkahnya adalah :


How To 

1. Login ke user aplikasi

2. Aktifkan enveroment.
    (Exp :  . /u01/orafin/testappl/APPSORA.env)

3. Copy/ftp file form (xxx.fmb) ke folder aplikasi, biasanya terletak di $AU_TOP. ( /u01/orafin/testappl/au/11.5.0/forms/US/ )

4. Compile form tersebut.
    (format : f60gen module=<formname>.fmb userid=apps/<apps_pwd> output_file=/forms/US/<formname>.fmx )

    (Exp :  f60gen module=//u01/orafin/testappl/au/11.5.0/forms/US/PATESTPR.fmb userid=apps/apps output_file=//u01/orafin/testppl/pa/11.5.0/forms/US/PATESTPR.fmx

* Beberapa path mungkin berbeda, tidak semua sama harap dipahami.

Selamat mencoba.

[PHP][XML] Read / Parsing XML


Deskripsi
      Kali ini saya akan membahas bagaimana cara membaca atau memparsing data yang berada di dalam file XML.


How to
    Syntax : simplexml_load_file('File.XML or URL');

Example XML:


<?xml version="1.0" encoding="ISO-8859-1"?>
<note>
  <to>Philippe</to>
  <from>
        <hai>trololol</hai>
  </from>
  <heading>Do not Forget</heading>
</note>


* blue color = Akar / root
* yellow color = Anak / Child

perhatikan yang warna kuning, ada anak punya anak haha, bagaimana cara memanggilnya ?


syntax :

if (file_exists('myxmlfile.xml'))
{
       $xml = simplexml_load_file('myxmlfile.xml');

        print_r($xml);
echo '<br/>';
echo $xml->to;
echo '<br/>';
echo $xml->from->hai;
echo '<br/>';
echo $xml->heading;
}
else
{
    exit('Failed to open myxmlfile.xml.');
}


Output :

SimpleXMLElement Object ( [to] => Philippe [from] => SimpleXMLElement Object ( [hai] => trololol ) [heading] => Do not Forget [body] => SimpleXMLElement Object ( ) )
Philippe
trololol
Do not Forget

[PHP][XML] Write XML




Deskripsi
       Secara aktual XML digunakan untuk menyimpan data (bukan database) dan didistribusikan ke beragam platform (karena sifatnya plaintext). XML tidak melakukan apa-apa , hanya store informasi dalam bentuk File. biasanya XML digunakan untuk keperluan API (Application Programming Interface).

How To :

Contoh ilustrasi :

[DOKUMEN SAYA]

   [VERSI & ENCODING DOKUMEN]
   [AKAR]
         [ANAK][/ANAK]
         [ANAK][/ANAK]
   [/AKAR]

Syntax dari Ilustasi :

           Untuk membuat dokumen maka kita harus buat objeknya dulu, ga ada objek ga ada barang :D

* Membuat Dokumen / Kertas Putih tanpa isi :

   $doc = new DOMDocument();

* Membuat VERSI dan ENCODING ke dalam DOKUMEN :

   $doc->version = '1.0';
   $doc->encoding = 'ISO-8859-1';

* Untuk membuat AKAR atau ANAK ke dalam DOKUMEN harus didaftarkan terlebih dahulu, kita bisa menggunakan createElement('name').


   $VariablePenampungAkar = $doc->createElement('Akar');

   $doc->appendChild($VariablePenampungAkar); // ditempel ke dalam dokumen


* Untuk membuat Anak atau CHILD dan dimasukan ke dalam AKAR dan ditempel ke DOKUMEN maka caranya

   $VariablePenampungAnak1 = $doc->createElement('Nama1','Anak ke-1');
   $VariablePenampungAnak2 = $doc->createElement('Nama2','Anak ke-2');
   $VariablePenampungAkar->appendChild($VariablePenampungAnak1); // ditempel ke dalam Akar
   $VariablePenampungAkar->appendChild($VariablePenampungAnak2); // ditempel ke dalam Akar

* Jika sudah membuat Akar dan Anak maka penutupnya gunakan

   $doc->formatOutput = true;

* terakhir buat file XML

   $doc->save('NewXML');

mudah bukan ? selamat mencoba :D




example XML php syntax


<?php

$doc = new DOMDocument();

   $doc->version = '1.0';

   $doc->encoding = 'ISO-8859-1';

   $VariablePenampungAkar = $doc->createElement('Akar');

   $doc->appendChild($VariablePenampungAkar); // ditempel ke dalam dokumen

   $VariablePenampungAnak1 = $doc->createElement('Nama1','Anak ke-1');

   $VariablePenampungAnak2 = $doc->createElement('Nama2','Anak ke-2');
   $VariablePenampungAkar->appendChild($VariablePenampungAnak1); // ditempel ke dalam Akar
   $VariablePenampungAkar->appendChild($VariablePenampungAnak2); // ditempel ke dalam Akar

   $doc->formatOutput = true;

   $doc->save('NewXML');
?>

Hasil OUTPUT :

<?xml version="1.0" encoding="ISO-8859-1"?>
<Akar>
   <Nama1>Anak ke-1</Nama1>
   <Nama2>Anak ke-2</Nama2>
</Akar>

[Cakephp] Routes

Deskripsi:
        Routing di CakePHP merupakan fitur yang sangat powerfull dan digunakan untuk membuat URL terlihat baik. 

How to :
* untuk sementara saya hanya akan menjelaskan Router::connect (karena baru ini yang saya gunakan).

syntax:
Router::connect(URL,array(OPTION)).

problem example:
* saya ingin mengubah halaman HOME(myweb) cakephp ke halaman login saya.

myfolder (saya menggunakan WAMP) : WWW/Myweb/
URL on browser : localhost/Myweb

ketika saya ketik localhost/Myweb maka akan diredirect ke halaman pages cakephp, bagaimana cara menggantinya ???

untuk mengganti anda cukup buka file pada : Myweb/app/config/routes.php

tambahlan line dibawah ini :
Router::connect('/', array('controller' => 'login', 'action' => 'index'));
* '/' atau SLASH adalah halaman root folder anda.
atau
Router::connect('/Myweb/', array('controller' => 'login', 'action' => 'index'));

bagaimana jika saya ketik localhost/myweb   (Case Sensitive, kecil semua) , maka akan muncul pesan error karena cakephp tidak menemukan file tersebut dan bagaimana mengatasinya ? cukup kita redirect aja dan tambahkan lagi spellingnya :D

tambahkan line dibawah ini:

Router::connect('/myweb/', array('controller' => 'login', 'action' => 'index'));

maka ketika ada URL yang mengacu ke localhost/Myweb atau localhost/myweb akan ke direct page login, ini hanya baru basic Routes , ada yang lebih kompleks lagi untuk merubah routing controller dan juga parameter action.

selamat mencoba :)

[Cakephp] Session

Deskripsi :
        Session merupakan fungsi dari php untuk menyimpan sejumlah informasi dalam sisi server , jika ingin menggunakan sisi client gunakanlah cookie.


How to :

Write Session :

* membuat session login dengan isi true
$this->Session->write('LOGIN',true);



Read Session :


*melihat isi dari session login
$myvalue = $this->Session->read('LOGIN');

*hasil keluaran $myvalue adalah true



Delete Session :

*menghapus session login
$myvalue = $this->Session->delete('LOGIN');

[Cakephp] Basic CRUD

Description :
        Memahami basic dari Create , Read , Update , and Delete.

Skill : *  Basic SQL - DML (Data Manipulation).

              * Basic Form Cakephp


How To :
        Untuk membuat agar web yang dibuat menggunakan framework cakephp bisa input data , edit data , atau  delete data sebetulnya tidak harus memahami penulisan syntax SQL karena memang sudah disediakan. tetapi pemahaman untuk SQL wajib didalami jika suatu saat ada kondisi yang tidak memungkinkan untuk menggunakan library dari framework cakephp ini.

BASIC INPUT 

syntax dasar yang digunakan untuk simpan data adalah

syntax:
$this->MODEL_NAME->save(optional_array_data);

*array data biasanya didapat dari Form , jadi jika anda belum mempelajari tentang form cakephp , harap dipelajari dahulu.

example:
class contohController extends AppController
{
   ...........another code ...........
   ...........another code ...........

   public function tambahdata()

   {
           $this->MODEL_NAME->save($this->data);
   }
}



BASIC EDIT


untuk edit , pada dasarnya syntaxnya hampir sama dengan input, jadi apa sih yang membedakan antara edit dengan input record baru ? 

yang membedakan adalah ketika kita menginput tanpa / memberikan primary key (PK) dan nilai PK tersebut tidak terdapat dalam database maka cakephp akan menyatakan bahwa record tersebut baru dan akan ditambahkan ke dalam database.
sedangan jika Primary Key (PK) yang bersangkutan sudah terdapat dalam database, maka cakephp tidak membentuk record baru, namun akan mengupdate nilai dari field" tersebut.


example:
1.step-1 , make sure on model declare var $primaryKey
class mymodel extends AppModel
{
    var $useDBConfig = 'default'; // bisa di edit sesuai dengan konfigurasi database
    var $name = 'mymodel '; // harus sama dengan nama class dan nama file
    var $primaryKey = 'my_PK'; // primary key table
    var $useTable = 'mymodel '; // nama tabel yang digunakan
 
}

2. step-2, on controller assign primary data
class contohController extends AppController
{
   ...........another code ...........
   ...........another code ...........

   public function edit()

   {
           $this->mymodel ->id = $this->data['model']['field_PK'];
           $this->mymodel ->save($this->data);
           // look at green mark (id refers to $primaryKey on model for passing value) 
           // $this->data['model']['field_PK']; , passing from FORM VIEW , you must now basic FORM !
           // if you save the data with assign data PK , it will updating field ,  not create new record
   }
}





BASIC DELETE


$this->MODEL_NAME->delete();



example:
class contohController extends AppController
{
   ...........another code ...........
   ...........another code ...........

   public function delete()

   {
           $this->MODEL_NAME->delete(ID_PK);
   }
}



BASIC READ

syntax:
$data=$this->MODEL_NAME->find('all' / 'list' ,array(OPTION));

legend : $data merupakan variable sementara untuk menampung hasil query
            mode 'ALL', berfungsi untuk menampilkan seluruh field
            mode 'LIST', berfungsi untuk menampilkan 2 field yang saling terkait (next chapter)
            find() , fungsi ini yang digunakan untuk membaca record.
            Option , opsi dalam melakukan query

Option : - 'Field' , 'Limit' , 'Join' , 'order' , 'conditions'
       

example:
class contohController extends AppController
{
   ...........another code ...........
   ...........another code ...........

   public function readdata()

   {
           $data = $this->MODEL_NAME->find('all', array( 'field' => array
                                                                         ('model.field1,model.field2, ETC'),
                                                                          'limit' => 10,
                                                                          'conditions' => array('model.field1' => 'XX'),
                                                                          'order'=>array('model.field1 => 'ASC') );
   }
}

EDIT (19/04/2014) : - Fix some code and add some information on BASIC EDIT