Pentingnya informasi yang kita dapatkan , bisa mempengaruhi seberapa cepat kita mengatasi permasalahan yang ada. Oleh karena itu website ini bertujuan untuk membantu mereka yang membutuhkan solusi dari masalah yang mereka hadapi.

Breaking

Contoh Program Sederhana Codeigniter

             Disini saya memiliki 2 program sederhana dari hasil tugas akhir saya kemarin yang bertemakan Lowongan Pekerjaan. Saya akan menjelaskan codingan/syntax dari setiap tampilan yang ada. Pertama-tama saya menggunakan CSS punya orang agar pembuatan membuat website kita/project kita jadi lebih mudah. Silahkan anda cari jika tampilan program saya kurang menarik.

             Oh ya untuk pertama jangan lupa membuat databasenya terlebih dahulu ya, disini saya membuat database dengan nama ci_test dengan table articles dan users.


Articles

users

                    Selanjutnya mengatur config, autoload dan juga database agar dapat terhubung dengan database. Untuk pengaturan silakan dilihat kembali contohnya di https://akukepodenganinformasi.blogspot.co.id/p/membuat-login-menggunakan-codeigniter.html



CONTROLLER (USER)

<?php


class User extends MY_Controller {


public function index()

{
$this->load->helper('form');
$this->load->model('articlesmodel','articles');

$this->load->library('pagination');


$config = [

'base_url' => base_url('user/index'),
'per_page' => 5,
'total_rows' => $this->articles->count_all_articles(),
'full_tag_open' => "<ul class='pagination'>",
'full_tag_close' => "</ul>",
'first_tag_open' => '<li>',
'first_tag_close' => '</li>',
'last_tag_open' => '<li>',
'last_tag_close' => '</li>',
'next_tag_open' => '<li>',
'next_tag_close' => '</li>',
'prev_tag_open' => '<li>',
'prev_tag_close' => '</li>',
'num_tag_open' => '<li>',
'num_tag_close' => '</li>',
'cur_tag_open' => "<li class='active'><a>",
'cur_tag_close' => '</a></li>',
];

$this->pagination->initialize($config);


$articles = $this->articles->all_articles_list($config['per_page'], $this->uri->segment(3));


$this->load->view('public/articles_list',compact('articles'));

}

public function search()

{
$this->load->library('form_validation');
$this->form_validation->set_rules('query','Query','required');
// var_dump($this->form_validation->run());
// exit;
if ( ! $this->form_validation->run())
return $this->index();

$query = $this->input->post('query');

return redirect("user/search_results/$query");


}

public function search_results( $query )

{
$this->load->helper('form');
$this->load->model('articlesmodel','articles');

$this->load->library('pagination');


$config = [

'base_url' => base_url("user/search_results/$query"),
'per_page' => 5,
'total_rows' => $this->articles->count_search_results( $query ),
'full_tag_open' => "<ul class='pagination'>",
'full_tag_close' => "</ul>",
'first_tag_open' => '<li>',
'uri_segment' => 4,
'first_tag_close' => '</li>',
'last_tag_open' => '<li>',
'last_tag_close' => '</li>',
'next_tag_open' => '<li>',
'next_tag_close' => '</li>',
'prev_tag_open' => '<li>',
'prev_tag_close' => '</li>',
'num_tag_open' => '<li>',
'num_tag_close' => '</li>',
'cur_tag_open' => "<li class='active'><a>",
'cur_tag_close' => '</a></li>',
];

$this->pagination->initialize($config);


$articles = $this->articles->search( $query, $config['per_page'], $this->uri->segment(4));

$this->load->view('public/search_results',compact('articles'));
}

public function article( $id )

{
$this->load->helper('form');
$this->load->model('articlesmodel','articles');
$article = $this->articles->find( $id );
$this->load->view('public/article_detail', compact('article') );
}

}
              Keterangan:

              Diatas merupakan merupakan syntax dari controller user, karena saya membuat tampilan user dan juga admin. Pertama-tama saya akan membahas tentang User/Pengguna dan kita fokus ke User terlebih dahulu sebagai langkah awal untuk memulai membuat website ini. Langkah pertama kita memanggil method model dari user, helper dan juga library(pagination) sebagai pembuatan halaman yang akan kita buat. Seperti yang ada diatas terdapat config yang bertujuan untuk memasukan dan menghubungkan data dari view user tersebut. Sehingga config ini akan membaca  artikel apa saja yang akan user lihat ditampilan utama/artikel yang diberikan admin kepada user.


               Berikutnya kita memanggil method dari beberapa objek lain yang akan kita jadikan satu sehingga bisa kita jalankan menjadi 1 halaman.  Setelah itu kita membuat class dengan memanggil variabel id dari method article. Id ini bertujuan untuk memanggil id artikel yang telah dikirim/dibuat oleh admin untuk user tersebut. Oh ya untuk base URL merupakan pemanggilan alamat URL dengan mudah untuk memanggilan index.php. Sehingga tidak perlu susah payah lagi dalam menuliskan index.php. dan per-page saya membatasi 5 article saja.


Tampilan utama untuk user

Tampilan dari fitur Search/Pencarian



VIEW (USER)

               Pada view ini saya membuat folder public dengan berisikan beberapa syntax php didalamnya.


1.   Admin Login

<?php include('public_header.php'); ?>


<div class="container">

<?php echo form_open('login/admin_login', ['class'=>'form-horizontal']) ?>
  <fieldset>
    <legend>Admin Login</legend>
    <?php if( $error = $this->session->flashdata('login_failed')): ?>
    <div class="row">
      <div class="col-lg-6">
        <div class="alert alert-dismissible alert-danger">
          <?= $error ?>
        </div>
      </div>
    </div>
  <?php endif; ?>
    <div class="row">
      <div class="col-lg-6">
        <div class="form-group">
      <label for="inputEmail" class="col-lg-2 control-label">User Name</label>
      <div class="col-lg-10">
      <?php echo form_input(['name'=>'username','class'=>'form-control','placeholder'=>'Username','value'=>set_value('username')]); ?>
      </div>
    </div>
      </div>
      <div class="col-lg-6">
        <?php echo form_error('username'); ?>
      </div>
    </div>
    <div class="row">
      <div class="col-lg-6">
        <div class="form-group">
      <label for="inputEmail" class="col-lg-2 control-label">Password</label>
      <div class="col-lg-10">
      <?php echo form_password(['name'=>'password','class'=>'form-control','placeholder'=>'password']) ?>
      </div>
    </div>
      </div>
      <div class="col-lg-6">
        <?php echo form_error('password'); ?>
      </div>
    </div>
    <div class="form-group">
      <div class="col-lg-10 col-lg-offset-2">

        <?php
        echo form_reset(['name'=>'reset','value'=>'Reset','class'=>'btn btn-default']),
        form_submit(['name'=>'submit','value'=>'Login','class'=>'btn btn-primary']);
        ?>
      </div>
    </div>
  </fieldset>
</form>
</div>
<br>
<div class="clearfix"></div>
<center><footer><a href="http://localhost/lowkermalang2/user" target="_blank">Ambigous Indonesia</a> | &copy;by Lowongan Pekerjaan Malang - 2017</footer></center></div>



<?php include('public_footer.php'); ?>

               Keterangan :


               Login ini dibuat untuk admin dalam membuat artikel, diatas terdapat public_header.php yang berfungsi untuk memanggil method dari header.php. hingga pada akhir dari view login ini terdapat public_footer.php yang juga memanggil method dari footer.php.

2.  Detail Article

<?php include_once('public_header.php'); ?>

<div class="container">
<div class="row">
<div class="col-lg-6">
<h1>
<?= $article->title ?>
</h1>
</div>
<div class="col-lg-6">
<span class="pull-right">
<?= date('d M y H:i:s', strtotime($article->created_at) ); ?>
</span>
</div>
</div>


<hr>
<p>
<?= $article->body ?>
</p>
<?php if( ! is_null($article->image_path ) ): ?>
<img src="<?= $article->image_path ?>" alt="">
<?php endif; ?>
</div>
<br>
<div class="clearfix"></div>
<center><footer><a href="http://localhost/lowkermalang2/user" target="_blank">Ambigous Indonesia</a> | &copy;by Lowongan Pekerjaan Malang - 2017</footer></center></div>


<?php include_once('public_footer.php'); ?>

               Keterangan :

               Dibagian <?= $article->title ?> ini merupakan pemanggilan nama judul dari method article. Dimana method ini bertujuan untuk menampilkan nama dan juga waktu dari pembuatan article tersebut. Sehingga  dapat memudahkan saat menggunakan fitur penelusuran/pencarian/search. Berikutnya dibagian  <?= $article->body ?> akan menampilkan gambar dan keterangan dari pemanggilan method gambar tersebut.

3.  List Article

<?php include('public_header.php'); ?>

<div class="container">
<marquee><h1>Lowongan Pekerjaan Seputar Malang Raya</h1></marquee>
<hr>
<table class="table">
<thead>
<tr>
<td>No.</td>
<td>Nama Lowongan</td>
<td>Published On</td>
</tr>
</thead>
<tbody>
<tr>
<? if( count($articles)): ?>
<?php $count = $this->uri->segment(3, 0);?>
<?php foreach( $articles as $article ): ?>
<td><?= ++$count ?></td>
<td><?= anchor("user/article/{$article->id}",$article->title) ?></td>
<td><?= date('d M y H:i:s', strtotime($article->created_at) ); ?></td>
</tr>
<?php endforeach; ?>
<? else: ?>
<tr>
<td colspan="3"> No Records Found.</td>
</tr>
<? endif;?>
</tbody>
</table>
<?= $this->pagination->create_links(); ?>
</div>
<div class="clearfix"></div>
<center><footer><a href="http://localhost/lowkermalang2/user" target="_blank">Ambigous Indonesia</a> | &copy;by Lowongan Pekerjaan Malang - 2017</footer></center></div>


<?php include('public_footer.php'); ?>

               Keterangan :

               Jika anda teliti dari awal kita menemukan syntax dengan nama URI dan juga Segment. Ok saya akan jelaskan apa itu uri dan juga segment. Sebenarnya URI dan Segment ini merupakan satu satuan sehingga disebut menjadi URI Segment yang memudahkan kita untuk mengambil data melalui URL . Cara penyebutan uri segment pada codeigniter sendiri misalnya segment 1, segment 2, segment 3 dan seterusnya. jika teman-teman perhatikan pada url codeigniter pada project codeigniter anda pasti menjumpai index.php lalu di lanjutkan dengan nama class codeigniter anda kan.? contohnya seperti website ini :
https://akukepodenganinformasi.blogspot.co.id/p/contoh-program-sederhana-codeigniter.html
Coba anda perhatikan url di atas :
  1. URI segment 1 = p
  2. URI segment 2 = contoh-program-sederhana-codeigniter.html
  3. Dst.(jika ada)
Untuk lebih jelasnya dalam codeigniter dari URL berikut:
http://www.dumetschool.com/blog/category/merubah-satuan-ukuran-font-di-adobe-photoshop/12
  1. blog itu adalah “controller”
  2. category itu adalah “method”
  3. merubah-satuan-ukuran-font-di-adobe-photoshop adalah “id 1” atau “parameter 1”
  4. 12 itu adalah “id 2” atau “parameter 2”.
4.  Public Footer

<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/2.1.4/jquery.js"></script>
<script src="<?= base_url('assets/js/bootstrap.min.js') ?>"></script>
</body>
</html>

               Keterangan :
   
               Merupakan penggalan dari pemanggilan script css dari website ini.

5.  Public Header

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Lowker Malang</title>
<?= link_tag('assets/css/bootstrap.min.css') ?>
</head>
<body>
<nav class="navbar navbar-default">
  <div class="container-fluid">
    <div class="navbar-header">
      <button type="button" class="navbar-toggle collapsed" data-toggle="collapse" data-target="#bs-example-navbar-collapse-1">
        <span class="sr-only">Toggle navigation</span>
        <span class="icon-bar"></span>
        <span class="icon-bar"></span>
        <span class="icon-bar"></span>
      </button>
    <div id="logo"><a href="http://localhost/lowkermalang2/user"<?php echo base_url(); ?>"><img src="<?php echo base_url(); ?>assets/images/ambigous.jpg" width="100" height="100"></a></div>
    </div>

    <div class="collapse navbar-collapse" id="bs-example-navbar-collapse-1">
    <?= form_open('user/search',['class'=>'navbar-form navbar-left','role'=>'serach']) ?>
      <!-- <form class="navbar-form navbar-left" role="search"> -->
        <div class="form-group">
          <input type="text" name="query" class="form-control" placeholder="Search">
        </div>
        <button type="submit" class="btn btn-default">Submit</button>
      <?= form_close(); ?>
      <?= form_error('query',"<p class='navbar-text'>",'</p>') ?>
      <ul class="nav navbar-nav navbar-right">
        <li>
  <a href="<?php echo site_url('Login') ?>" class="btn btn-link">Login</a>
        </li>
      </ul>
    </div>
  </div>
</nav>

               Keterangan :

               Header ini merupakan penggalan awal/bagian kepala(kalau diibaratkan)/bagian awal dari website ini.

6.  Fitur Pencarian/Search

<?php include('public_header.php'); ?>
<div class="container">
<h1>Search Results</h1>
<hr>
<table class="table">
<thead>
<tr>
<td>Sr. No.</td>
<td>Article Title</td>
<td>Published On</td>
</tr>
</thead>
<tbody>
<tr>
<? if( count($articles)): ?>
<?php $count = $this->uri->segment(3, 0);?>
<?php foreach( $articles as $article ): ?>
<td><?= ++$count ?></td>
<td><?= anchor("user/article/{$article->id}",$article->title) ?></td>
<td><?= date('d M y H:i:s', strtotime($article->created_at) ); ?></td>
</tr>
<?php endforeach; ?>
<? else: ?>
<tr>
<td colspan="3"> No Records Found.</td>
</tr>
<? endif;?>
</tbody>
</table>
<?= $this->pagination->create_links(); ?>
</div>
<br>
<div class="clearfix"></div>
<center><footer><a href="http://localhost/lowkermalang2/user" target="_blank">Ambigous Indonesia</a> | &copy;by Lowongan Pekerjaan Malang - 2017</footer></center></div>


<?php include('public_footer.php'); ?>

               Keterangan :

               Syntax ini untuk pembuatan dari fitur pencarian/search. Dan selanjutnya kita fokus ke pengguna Admin. Seperti pertama kita membuat Controller terlebih dahulu.

CONTROLLER (ADMIN)

<?php

class Admin extends MY_Controller {


public function dashboard()
{
$this->load->library('pagination');

$config = [
'base_url' => base_url('admin/dashboard'),
'per_page' => 5,
'total_rows' => $this->articles->num_rows(),
'full_tag_open' => "<ul class='pagination'>",
'full_tag_close' => "</ul>",
'first_tag_open' => '<li>',
'first_tag_close' => '</li>',
'last_tag_open' => '<li>',
'last_tag_close' => '</li>',
'next_tag_open' => '<li>',
'next_tag_close' => '</li>',
'prev_tag_open' => '<li>',
'prev_tag_close' => '</li>',
'num_tag_open' => '<li>',
'num_tag_close' => '</li>',
'cur_tag_open' => "<li class='active'><a>",
'cur_tag_close' => '</a></li>',
];

$this->pagination->initialize($config);

$articles = $this->articles->articles_list( $config['per_page'], $this->uri->segment(3) );

$this->load->view('admin/dashboard', ['articles'=>$articles]);
}

public function add_article()
{
$this->load->view('admin/add_article');
}

public function store_article()
{
$config = [
'upload_path' => './uploads',
'allowed_types' => 'jpg|gif|png|jpeg',
];
$this->load->library('upload', $config);

$this->load->library('form_validation');
if( $this->form_validation->run('add_article_rules') && $this->upload->do_upload('image') ) {
$post = $this->input->post();
unset($post['submit']);
$data = $this->upload->data();
// echo "<pre>";
// print_r($data); exit;
$image_path = base_url("uploads/" . $data['raw_name'] . $data['file_ext']);
// echo $image_path; exit;
$post['image_path'] = $image_path;
return $this->_falshAndRedirect(
$this->articles->add_article($post),
"Article Added Successully.",
"Article Failed To Add, Please Try Again."
);
} else {
$upload_error = $this->upload->display_errors();
$this->load->view('admin/add_article',compact('upload_error'));
}
}

public function edit_article($article_id)
{
$article = $this->articles->find_article($article_id);
$this->load->view('admin/edit_article',['article'=>$article]);
}

public function update_article($article_id)
{
$this->load->library('form_validation');
if( $this->form_validation->run('add_article_rules') ) {
$post = $this->input->post();
unset($post['submit']);
return $this->_falshAndRedirect(
$this->articles->update_article($article_id,$post),
"Article Updated Successully.",
"Article Failed To Update, Please Try Again."
);
} else {
$this->load->view('admin/edit_article');
}
}

public function delete_article()
{
$article_id = $this->input->post('article_id');

return $this->_falshAndRedirect(
$this->articles->delete_article($article_id),
"Article Deleted Successully.",
"Article Failed To Delete, Please Try Again."
);
}

public function __construct()
{
parent::__construct();
if( ! $this->session->userdata('user_id') )
return redirect('login');
$this->load->model('articlesmodel','articles');
$this->load->helper('form');
}

private function _falshAndRedirect( $successful, $successMessage, $failureMessage )
{
if( $successful ) {
$this->session->set_flashdata('feedback',$successMessage);
$this->session->set_flashdata('feedback_class', 'alert-success');
} else {
$this->session->set_flashdata('feedback', $failureMessage);
$this->session->set_flashdata('feedback_class', 'alert-danger');
}
return redirect('admin/dashboard');
}
}

              Keterangan :

              Seperti yang kita lihat Codingan pada Controller Admin ini tidak jauh bedah dengan User, akan tetapi terdapat perbedaan, karena admin memiliki tugas yaitu membuat, edit dan menghapus. Sehingga memiliki beberapa function untuk megaksesnya. Jika kalian ingin menambahkan fitur lagi, silahkan tambahkan function sebagai fungsi dari method yang akan dibuat.

VIEW (ADMIN)

              Disini view admin sama seperti dengan view dari user dengan nama folder admin. Yuk kita simak codingan dibawah ini.

1.   Add Article

<?php include_once('admin_header.php'); ?>

<div class="container">
<?php echo form_open_multipart('admin/store_article', ['class'=>'form-horizontal']) ?>
<?php echo form_hidden('user_id', $this->session->userdata('user_id')); ?>
  <?= form_hidden('created_at', date('Y-m-d H:i:s')) ?>
  <fieldset>
    <legend>Add Article</legend>
    
    <div class="row">
      <div class="col-lg-6">
        <div class="form-group">
      <label for="inputEmail" class="col-lg-4 control-label">Article Title</label>
      <div class="col-lg-8">
      <?php echo form_input(['name'=>'title','class'=>'form-control','placeholder'=>'Article Title','value'=>set_value('title')]); ?>
      </div>
    </div>
      </div>
      <div class="col-lg-6">
        <?php echo form_error('title'); ?>
      </div>
    </div>
    <div class="row">
      <div class="col-lg-6">
        <div class="form-group">
      <label for="inputEmail" class="col-lg-4 control-label">Article Body</label>
      <div class="col-lg-8">
      <?php echo form_textarea(['name'=>'body','class'=>'form-control','placeholder'=>'Article Body','value'=> set_value('body')]) ?>
      </div>
    </div>
      </div>
      <div class="col-lg-6">
        <?php echo form_error('body'); ?>
      </div>
    </div>
    <div class="row">
      <div class="col-lg-6">
        <div class="form-group">
      <label for="inputEmail" class="col-lg-4 control-label">Select Image</label>
      <div class="col-lg-8">

      <?php echo form_upload(['name'=>'image','class'=>'form-control']); ?>
      </div>
    </div>
      </div>
      <div class="col-lg-6">
        <?php if(isset($upload_error)) echo $upload_error ?>
      </div>
    </div>
    <div class="form-group">
      <div class="col-lg-10 col-lg-offset-2">

        <?php 
        echo form_reset(['name'=>'reset','value'=>'Reset','class'=>'btn btn-default']),
        form_submit(['name'=>'submit','value'=>'Submit','class'=>'btn btn-primary']);
        ?>
      </div>
    </div>
  </fieldset>
</form>
</div>
<div class="clearfix"></div>
<center><footer><a href="http://localhost/lowkermalang2/admin/dashboard" target="_blank">Ambigous Indonesia</a> | &copy;by Lowongan Pekerjaan Malang - 2017</footer></center></div>


<?php include_once('admin_footer.php'); ?> 

                Keterangan :

                Coba kalian perhatikan diatas. Disetiap bagian merupakan inputan untuk admin dalam membuat sebuah artikel. Untuk contoh dari codingan atas bisa anda lihat hasilnya seperti gambar dibawah ini.


                    Jika kalian ingin menambahkan untuk inputan, silahkan copy dari <?php echo form_textarea sampai <div class="col-lg-8"> jika kalian ingin menambahkan inputan berupa text. Jangan lupa untuk memeriksanya secara teliti agar Codingan dapat berjalan dengan lancar. Selanjutnya untuk footer kita samakan karena ini masih di website yang sama, dan untuk header ada sedikit perbedaan karena tampilan untuk user dan admin akan sedikit berbeda.




2.   Admin Footer

<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/2.1.4/jquery.js"></script>
<script src="<?= base_url('assets/js/bootstrap.min.js') ?>"></script>
</body>

</html>

3.   Admin Footer

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Admin Panel</title>
<?= link_tag('assets/css/bootstrap.min.css') ?>
</head>
<body>
<nav class="navbar navbar-default">
  <div class="container-fluid">
    <div class="navbar-header">
      <button type="button" class="navbar-toggle collapsed" data-toggle="collapse" data-target="#bs-example-navbar-collapse-1">
        <span class="sr-only">Toggle navigation</span>
        <span class="icon-bar"></span>
        <span class="icon-bar"></span>
        <span class="icon-bar"></span>
      </button>
        <div id="logo"><a href="http://localhost/lowkermalang2/admin/dashboard"<?php echo base_url(); ?>"><img src="<?php echo base_url(); ?>assets/images/ambigous.jpg" width="100" height="100"></a></div>

    </div>

    <div class="collapse navbar-collapse" id="bs-example-navbar-collapse-1">
      <ul class="nav navbar-nav navbar-right">
        <li>
          <!-- <a href="<?= base_url('login/logout') ?>">Logout</a> -->
          <?= anchor('login/logout','Logout') ?>
        </li>
      </ul>
    </div>
  </div>

</nav>

4.   Admin Dashboard

<?php include_once('admin_header.php'); ?>


<div class="container">
<div class="row">
<div class="col-lg-6 col-lg-offset-6">
<?= anchor('admin/store_article','Add Article',['class'=>'btn btn-lg btn-primary pull-right']) ?>

</div>
</div>
<?php if( $feedback = $this->session->flashdata('feedback')): 
$feedback_class = $this->session->flashdata('feedback_class');
?>
    <div class="row">
      <div class="col-lg-6 col-lg-offset-3">
        <div class="alert alert-dismissible <?= $feedback_class ?>">
          <?= $feedback ?>
        </div>
      </div>
    </div>
  <?php endif; ?>
<table class="table">
<thead>
<th>Sr. No.</th>
<th>Title</th>
<th>Action</th>
</thead>
<tbody>
<?php if( count($articles) ):
$count = $this->uri->segment(3, 0);
foreach($articles as $article ): ?>
<tr>
<td><?= ++$count ?></td>
<td>
<?= $article->title ?>
</td>
<td>
<div class="row">
<div class="col-lg-2">
<?= anchor("admin/edit_article/{$article->id}",'Edit',['class'=>'btn btn-primary']); ?>
</div>
<div class="col-lg-2">
<?=
form_open('admin/delete_article'),
form_hidden('article_id', $article->id),
form_submit(['name'=>'submit','value'=>'Delete','class'=>'btn btn-danger']),
form_close();

?>
</div>
</div>



<!-- <a href="" class="btn btn-danger">Delete</a> -->
</td>
</tr>
<?php endforeach; ?>
<?php else: ?>
<tr>
<td colspan="3">
No Records Found.
</td>
</tr>
<?php endif; ?>

</tbody>
</table>


<?= $this->pagination->create_links(); ?>
</div>
<div class="clearfix"></div>
<center><footer><a href="http://localhost/lowkermalang2/admin/dashboard" target="_blank">Ambigous Indonesia</a> | &copy;by Lowongan Pekerjaan Malang - 2017</footer></center></div>


<?php include_once('admin_footer.php'); ?>

                  Keterangan :

                  Untuk dashboard ini merupakan menu utama/tampilan utama yang ditampilkan untuk admin dalam membuat sebuah article yang akan dia buat.

5.   Edit Article

<?php include_once('admin_header.php'); ?>

<div class="container">
<?php echo form_open("admin/update_article/{$article->id}", ['class'=>'form-horizontal']);
  // echo form_hidden('article_id',$article->id)
   ?>
  <fieldset>
    <legend>Edit Article</legend>
    
    <div class="row">
      <div class="col-lg-6">
        <div class="form-group">
      <label for="inputEmail" class="col-lg-4 control-label">Article Title</label>
      <div class="col-lg-8">
      <?php echo form_input(['name'=>'title','class'=>'form-control','placeholder'=>'Article Title','value'=>set_value('title', $article->title)]); ?>
      </div>
    </div>
      </div>
      <div class="col-lg-6">
        <?php echo form_error('title'); ?>
      </div>
    </div>
    <div class="row">
      <div class="col-lg-6">
        <div class="form-group">
      <label for="inputEmail" class="col-lg-4 control-label">Article Body</label>
      <div class="col-lg-8">
      <?php echo form_textarea(['name'=>'body','class'=>'form-control','placeholder'=>'Article Body','value'=> set_value('body',$article->body)]) ?>
      </div>
    </div>
      </div>
      <div class="col-lg-6">
        <?php echo form_error('body'); ?>
      </div>
    </div>
    <div class="form-group">
      <div class="col-lg-10 col-lg-offset-2">

        <?php 
        echo 
        form_submit(['name'=>'submit','value'=>'Submit','class'=>'btn btn-primary']);
        ?>
      </div>
    </div>
  </fieldset>
</form>
</div>

<div class="clearfix"></div>
<center><footer><a href="http://localhost/lowkermalang2/admin/dashboard" target="_blank">Ambigous Indonesia</a> | &copy;by Lowongan Pekerjaan Malang - 2017</footer></center></div>



<?php include_once('admin_footer.php'); ?>

               Keterangan :

               Untuk edit article ini berfungsi untuk mengedit article yang telah dibuat. Itulah view dari admin. Ok disini kita sudah memiliki tampilan untuk admin dan user, selanjutnya kita membuat menu login dari View user login admin . Untuk tampilan dari view yang telah kita buat seperti pada gambar dibawah ini.



CONTROLLER (LOGIN)

<?php

Class Login extends MY_Controller {

public function index()
{
if( $this->session->userdata('user_id') )
return redirect('admin/dashboard');
$this->load->helper('form');
$this->load->view('public/admin_login');
}


public function admin_login()
{
$this->load->library('form_validation');

// $this->form_validation->set_rules('username','User Name','required|alpha|trim');
// $this->form_validation->set_rules('password','Password','required');

$this->form_validation->set_error_delimiters("<p class='text-danger'>","</p>");
if( $this->form_validation->run('admin_login') ) { //if validation passes
//Success
$username = $this->input->post('username');
$password = $this->input->post('password');

$this->load->model('loginmodel');

$login_id = $this->loginmodel->login_valid($username, $password);
if( $login_id ) {

$this->session->set_userdata('user_id', $login_id );
return redirect('admin/dashboard');

//credentials valid, login user.
} else {
$this->session->set_flashdata('login_failed','Invalid Username/Password.');
return redirect('login');
}
} else {
//Failed.
$this->load->view('public/admin_login');
// echo validation_errors();
}
}

public function logout()
{
$this->session->unset_userdata('user_id');
return redirect('login');
}
}

               Keterangan :

               Untuk controller dari login, disini dibutuhkan validation untuk meng-validasi antara database dan juga website kita. Disini kita sudah membuat semua controller yang ada. Ok karena View dan Controller kita sudah dibuat, sekarang saatnya kita membuat model dari tampilan admin/user dan login..

MODEL (USERADMIN)

<?php

class Articlesmodel extends CI_Model {

public function articles_list( $limit, $offset )
{
$user_id = $this->session->userdata('user_id');
$query = $this->db
->select(['title','id'])
->from('articles')
->where('user_id', $user_id)
->limit( $limit, $offset )
->get();
return $query->result();
}

public function all_articles_list( $limit, $offset )
{
$query = $this->db
->select(['title','id','created_at'])
->from('articles')
->limit( $limit, $offset )
->order_by('created_at','DESC')
->get();
// echo $this->db->last_query(); exit;
return $query->result();
}

public function count_all_articles()
{
$query = $this->db
->select(['title','id'])
->from('articles')
->get();
return $query->num_rows();
}

public function num_rows()
{
$user_id = $this->session->userdata('user_id');
$query = $this->db
->select(['title','id'])
->from('articles')
->where('user_id', $user_id)
->get();
return $query->num_rows();
}

public function add_article($array)
{
return $this->db->insert( 'articles', $array );
}


public function find_article($article_id)
{
$q = $this->db->select(['id','title','body'])
->where('id', $article_id)
->get('articles');
return $q->row();
}

public function update_article($article_id, Array $article)
{
return $this->db
->where('id', $article_id)
->update('articles', $article);
}

public function delete_article($article_id)
{
return $this->db->delete('articles',['id'=>$article_id]);
}

public function search( $query, $limit, $offset )
{
$q = $this->db->from('articles')
->like( 'title', $query )
->limit( $limit, $offset )
->get();
return $q->result();
}

public function count_search_results( $query )
{
$q = $this->db->from('articles')
->like('title', $query )
->get();
return $q->num_rows();
}

public function find( $id )
{
$q = $this->db->from('articles')
->where( ['id' => $id] )
->get();
if ( $q->num_rows() )
return $q->row();
return false;
}


}

                  Keterangan :

                  Seperti yang kalian lihat, model ini sebagai penghubung antar database dan juga website dari function yang telah dilihat, darisinilah database akan berjalan dan memanggil/memasukkan data yang ada di database.

MODEL (LOGIN)


<?php


class Loginmodel extends CI_Model {


public function login_valid( $username, $password )
{
$q = $this->db->where(['uname'=>$username,'pword'=>$password])
->get('users');

if ( $q->num_rows() ) {
return $q->row()->id;
// return TRUE;
} else {
return FALSE;
}
}

}

               Keterangan :

               Seperti halnya model pada useradmin, Model Login berfungsi seperti Model useradmin. Yah itulah program yang telah kita buat. Untuk hasil project silahkan anda download dibawah ini.

                Jangan lupa untuk memberikan masukan agar saya dapat memperbaiki yang salah karena disini kita sama-sama belajar biar kita sama-sama bisa memperbaiki program kita sama-sama. Silahkan komen dibawah ini atau kirim melalui email saya. Semangat ☺❤

No comments:

Post a Comment