Membuat CRUD dengan PHP dan MySql [PART 1] Create

Hello Para Pemilik masa depan...

Haha... Anda yang terus mau belajar saya sebut sebagai pemilik masa depan :)

Kali ini kita akan belajar konsep dasar / fundamental dari pemrograman yaitu CRUD

Sudah pada familiarkan ya dengan konsep CRUD ini

C = Create
R = Read
U = Update
D = Delete

Karena basicly di pemrograman manapun, aplikasi atau web sekeren apapun biasanya tidak terlepas dari yang namanya CRUD ini

Ditutorial kali ini kita akan membuat nya yaitu menggunakan PHP sebagai bahasa pemrograman server side nya dan Mysql sebagai databasenya

Lets Do It

Yang pastinya pertama kita harus membuat database dan table nya dahulu, buka localhost/phpmyadmin dan buat database
Setelah membuat database, kita akan membuat sebuah table seperti ini

Buat folder kelas_selasa_malam
Buat folder config di dalam folder kelas_selasa_malam
buat file koneksi.php didalam folder config

koneksi.php

<?php
                define("db_host", "localhost");
                define("db_user", "root");
                define("db_pass", "");
                define("db_name", "db_sia");  
                $konek = mysqli_connect(db_host, db_user, db_pass, db_name);
                if ($konek){
                                echo "Selamat Anda Koneksi ke Database = " . db_name;
                }else{
                                die("Error!");
                }
?>

*** db_host, db_user, db_pass, db_name SESUAIKAN dengan pengaturan Mysql Masing-masing ya...


Kemudian akses file koneksi.php dengan url seperti ini
localhost/kelas_selasa_malam/config/koneksi.php


Kemudian buat sebuah file lagi dengan nama add_kampus.php didalam folder kelas_selasa_malam

add_kampus.php

<form method="POST" action="proses/add_kampus.php">
                <table>
                                <tr>
                                                <td>Nama Kampus</td>
                                                <td>
                                                                <input type="text" name="kampus" placeholder="Nama Kampus"/>                                                   
                                                </td>
                                </tr>
                                <tr>
                                                <td>Alamat Kampus</td>
                                                <td>
                                                                <textarea name="alamat" placeholder="Alamat Kampus"></textarea>                                                               
                                                </td>
                                </tr>
                                <tr>
                                                <td>&nbsp;</td>
                                                <td>
                                                                <button type="submit">Submit</button>
                                                                <button type="reset">Reset</button>
                                                </td>
                                </tr>

                </table>
</form>

akses url localhost/kelas_selasa_malam/add_kampus.php

Buat Folder dengan nama Proses
dan buat didalamnya file add_kampus.php yang isinya seperti ini

add_kampus.php

<?php
                require_once '../config/koneksi.php';
               
                $kampus = $_POST['kampus'];
                $alamat = $_POST['alamat'];
                               
                $query = "INSERT INTO kampus(nama,alamat)VALUES('$kampus','$alamat');";

                $result = mysqli_query($konek,$query);
               
                if($result){
                                echo "Data Berhasil di tambahkan";
                                Header("Location: ../add_kampus.php");
                }else{
                                echo "Data Gagal Ditambah";
                }
?>

Nah sekarang kita sudah bisa menambahkan data dengan form yang sudah kita buat
Berikut contoh table nya jika kita sudah mengisi data melalui form yang sudah kita buat

Oke sekian tutorial kali ini, semoga bermanfaat

Godbless

Onesinus Tamba Selasa, 17 April 2018
#ckicompetition2018 Cara Membuat Form One2many Cakephp Dengan jQuery Multifield Untuk Memasukan Data Ke Postgresql

Hallo Guys...

Setelah kita berjalan-jalan melintasi dunia Coding yang sangat luas, tiba saat nya kita mampir di salah satu Framework PHP yang Lezat Yaitu CakePHP, Ya... betul sekali Cake adalah kue, maka CakePHP adalah PHP sambil makan kue (?)

Kita sudahi saja pembuka yang unfaedah ini, mari langsung kita to the tutorial Bagaimana Cara Membuat Form One2many yang mana akan ada inputan sebagai Header(One) dan juga Inputan sebagai Detail(Many)

Sebelum anda mengetahui lebih dalam, ada baiknya anda mengetahui mengapa saya membuat Tutorial Ini..

Pertama, Dikarenakan Adanya salah satu Lomba dari Event Stikom CKI Jakarta yaitu lomba Blog :) #ckicompetition2018

Yang Kedua, Dikarenakan Belum ditemukannya tutorial ini baik di blog maupun di youtube baik referensi bahasa inggris maupun bahasa indonesia ya... Bisa silahkan dicari tau dan di infokan bila menemukan :p

Let's Do This...

Form yang akan kita buat sederhana, yaitu seperti gambar ini


Untuk Database Kita Menggunakan Postgresql, jadi buat saja dahulu database di postgresql, nama database bebas, kalau saya nama database nya "my_project"

dan pengaturan app.php menjadi seperti ini

    'Datasources' => [
        'default' => [
            'className' => 'Cake\Database\Connection',
            'driver' => 'Cake\Database\Driver\Postgres',
            'persistent' => false,
            'host' => 'localhost',
            'port'  => '5432',
            /*
             * CakePHP will use the default DB port based on the driver selected
             * MySQL on MAMP uses port 8889, MAMP users will want to uncomment
             * the following line and set the port accordingly
             */
            //'port' => 'non_standard_port_number',
            'username' => 'openpg',
            'password' => '12345678',
            'database' => 'my_project',
            /*
             * You do not need to set this flag to use full utf-8 encoding (internal default since CakePHP 3.6).
             */
            //'encoding' => 'utf8mb4',
            'timezone' => 'UTC',
            'flags' => [],
            'cacheMetadata' => true,
            'log' => false,

            /**
             * Set identifier quoting to true if you are using reserved words or
             * special characters in your table or column names. Enabling this
             * setting will result in queries built using the Query Builder having
             * identifiers quoted when creating SQL. It should be noted that this
             * decreases performance because each query needs to be traversed and
             * manipulated before being executed.
             */
            'quoteIdentifiers' => false,

            /**
             * During development, if using MySQL < 5.6, uncommenting the
             * following line could boost the speed at which schema metadata is
             * fetched from the database. It can also be set directly with the
             * mysql configuration directive 'innodb_stats_on_metadata = 0'
             * which is the recommended value in production environments
             */
            //'init' => ['SET GLOBAL innodb_stats_on_metadata = 0'],

            'url' => env('DATABASE_URL', null),
        ],




Mari Kita mulai bermain di Cakephp nya

[LANGKAH 1] : Pastikan Cakephp telah terinstall di komputer masing-masing

Dalam Tutorial Ini saya menggunakan Cakephp yang versi terakhir ya, yaitu versi 3, tepatnya 3.6.0 RC2

[LANGKAH 2] :
Siapkan Library-Library yang dibutuhkan

Download jQuery di link ini Download jQuery
Download jQuery multifield di link ini Download jQuery multifield
Download Bootstrap minimal di link ini Download Bootstrap Minimal

[LANGKAH 3]:
Letakan Library-Library yang sudah di download [LANGKAH 2] ke webroot



[LANGKAH 4]:
Load Library-Library yang telah di letakan ke webroot [LANGKAH 2] di default.ctp


[LANGKAH 5]:
Buat sebuah form cakephp dengan file .ctp dengan code seperti ini



<?php
/**
 * @var \App\View\AppView $this
 * @var \App\Model\Entity\TKpim $tKpim
 */
?>

<?= $this->Html->css('bootstrap.min.css') ?>

<div class="tKpim form large-12 medium-12 columns content">
    <?= $this->Form->create($tKpim) ?>
    <fieldset>
        <legend><?= __('Add Kpim') ?></legend>
        <?php
            echo $this->Form->control('name');
        ?>
    </fieldset>
    <fieldset>
        <legend><?= __('Add Kpim Detail') ?></legend>
        <div id="KpimDetail">
            <div class="row">
                <div class="col-md-12" style="padding-top: 5px; padding-bottom: 5px;">
                    <button type="button" id="btnAdd-1" class="btn btn-primary">Add More</button>
                </div>
            </div>
            <div class="row group">
                <div class="col-md-3">
                    <label>Detail Name</label>
                    <input class="form-control" type="text" name="TKpimDetail['DetName'][]">
                </div>
                <div class="col-md-3">
                    <label>Coeg Name</label>
                    <input class="form-control" type="text" name="TKpimDetail['DetCoeg'][] ">
                </div>
                <div class="col-md-3">
                    <label>Coag Name</label>                 
                    <input class="form-control" type="text" name="TKpimDetail['DetCoag'][]">
                </div>
                <div class="col-md-3">
                    <label>Remove</label><br/>
                    <button type="button" class="btn btn-danger btnRemove">X</button>
                </div>
            </div>
        </div>
    </fieldset>
    <?= $this->Form->button(__('Submit')) ?>
    <?= $this->Form->end() ?>
</div>
<script>
    $('#KpimDetail').multifield({
        section: '.group',
        btnAdd:'#btnAdd-1',
        btnRemove:'.btnRemove',
    });
</script>



[LANGKAH 6]:
Buat Fungsi Untuk mengolah dan memasukan data Form Ke Database dengan codingan Controller.php seperti ini

<?php
namespace App\Controller;

use App\Controller\AppController;

class TKpimController extends AppController
{

    /**
     * Add method
     *
     * @return \Cake\Http\Response|null Redirects on successful add, renders view otherwise.
     */
    public function add()
    {
        $tKpim = $this->TKpim->newEntity();
        if ($this->request->is('post')) {
            $tKpim = $this->TKpim->patchEntity($tKpim, $this->request->getData());

            if ($saveHeader = $this->TKpim->save($tKpim)) {
                if (!empty($this->request->getData()['TKpimDetail'])){
                    $kpimDetail = $this->request->getData()['TKpimDetail'];
                    foreach($kpimDetail as $key => $value){
                        $dataDetail = [
                            'name' => $value['name'],
                            'id_kpim'   => $saveHeader->id

                        ];
                        $tKpimDetail = $this->TKpim->TKpimDetail->newEntity();
                        $this->TKpim->TKpimDetail->patchEntity($tKpimDetail, $dataDetail);
                        $this->TKpim->TKpimDetail->save($tKpimDetail);                                                       
                    }                                     
                }

                $this->Flash->success(__('The t kpim has been saved.'));

                return $this->redirect(['action' => 'index']);
            }
            $this->Flash->error(__('The t kpim could not be saved. Please, try again.'));
        }
        $Users = $this->TKpim->Users->find('list', ['limit' => 200]);
        $Users = $this->TKpim->Users->find('list', ['limit' => 200]);
        $this->set(compact('tKpim', 'Users', 'Users'));
    }
}



[LANGKAH 7]:
Buat Table di database (dalam hal ini database nya adalah postgresql) dengan query seperti ini

CREATE TABLE public.t_kpim
(
  id integer NOT NULL DEFAULT nextval('t_kpim_id_seq'::regclass),
  name character varying(30),
  CONSTRAINT t_kpim_pk_id PRIMARY KEY (id)
)
WITH (
  OIDS=FALSE
);

CREATE TABLE public.t_kpim_detail
(
  id integer NOT NULL DEFAULT nextval('t_kpim_detail_id_seq'::regclass),
  id_kpim integer,
  name character varying(50),
  CONSTRAINT t_kpim_detail_pk_id PRIMARY KEY (id)
)
WITH (
  OIDS=FALSE
);


Maka Saat Kita Submit data kita database akan terisi menjadi seperti ini datanya

table header
table detail

Nah Seperti itulah cara membuat sebuah form dengan konsep One2many di cakephp, dengan menggunakan jQuery sebagai Client Side nya, Postgresql Sebagai Database nya, dan Cakephp sebagai Server side nya

Anda dapat mengembangkannya, atau mengambil konsep nya untuk anda terapkan ke PHP Native maupun PHP Framework yang lainnya

Sekian Tutorial Kali Ini

Semoga Bermanfaat...

~Salam Coding, Jari Pusing, Otak Keriting~
~Salam Pusing, Otak Coding, Jari Keriting~
~Salam Keriting, Jari Coding, Otak Pusing~

GodBless ~

Onesinus Tamba Senin, 16 April 2018