Archive | Tutorial RSS feed for this section

Java Class : File text

11 Apr

Contoh berikut adalah program java untuk menulis ke dalam file.

Kita membuat class ReadFile. Di dalamnya kita definisikan static method saveFile untuk menyimpan data array ke file text.

import java.util.Scanner;
import java.io.*;

public class ReadFile
{
  static void saveFile()
  {
    FileOutputStream out; 
    PrintStream ps; // declare a print stream object
 
    //array yang akan di tulis ke file
    String[] a = new String[10];
    for(int i=0;i<10;i++)
    {
      a[i] = "data ke-" + Integer.toString(i);
    }
 
    try {
          // Create a new file output stream
          out = new FileOutputStream("myfile.txt");

          // Connect print stream to the output stream
          ps = new PrintStream(out);
          for(int i=0;i<10;i++)
          {
            ps.println (a[i]);
          }
 
          System.out.println ("Write successfully");
          ps.close();
     }
     catch (Exception e){
     System.err.println ("Error in writing to file");
   }
 }
}

pada listing di atas, kita menggunakan library Scanner dan io, karena itu kita import 2 library tersebut. Pada bagian awal, kita deklarasikan array a sebanyak 10 elemen.

Kita menggunakan try catch untuk menangani jika ada kesalahan ketika menulis file text. Awalnya, kita mencoba membuat file text dengan FileOutputStream. Selanjutnya, kita menulis ke file text tersebut per baris. Setelah selesai, file text di tutup.

Selanjutnya, class kita tambahi method untuk membaca dari file text, dengan listing berikut

static void readFile()
 {
   try {
        Scanner scan = new Scanner(new File("myfile.txt"));
        System.out.println("hasil read.. ");
        while(scan.hasNextLine()){
          String line = scan.nextLine();
          System.out.println(line);
        }

       System.out.println ("Read successfully");
      }
   catch (Exception e){
        System.err.println ("Error in reading from file");
   }
 }

Pada listing diatas, kita menggunakan Scanner untuk membuka file. Selanjutnya, kita membaca isi file perbaris dengan menggunakan perintah scan.nextline(). Hasil pembacaan file ditampung di variabel line.

contoh hasil running dengan menggunakan blueJ tampak pada gambar berikut

 

Advertisements

Java Class : Example

11 Apr

Contoh kasus pemrograman, sebuah perguruan tinggi memiliki beberapa prodi. Simulasikan kasus ini dalam class dan object.

Ada 2 Class, yaitu Perguruan Tinggi dan Prodi.

Kita bisa membuat class perguruan tinggi, dengan listing berikut

public class PerguruanTinggi
 {
    private String namaPT;
    String a;

   void set_nama(String nama)
    {
       namaPT = nama;
    }

   String get_namaPT()
    {
       return namaPT;
    }
 }

Bisa kita lihat, ada variabel privat namaPT, kemudian ada method untuk set_nama dan method untuk get_nama.

Selanjutnya kita membuat class prodi, dengan listing berikut

public class Prodi
{
  private String namaProdi = "";
  private int jmlMaba = 0;
 
  void set_nama(String nama)
  {
    namaProdi = nama;
  }
 
  String get_nama()
  {
    return namaProdi;
  }
 
  void tambah_maba(int jml)
  {
     jmlMaba = jmlMaba + jml;
  }
 
  int jml_maba()
  {
    return jmlMaba;
  }
}

 

Pada class prodi diatas, ada variabel private namaProdi dan jmlMaba. Ada juga method untuk set_nama, get_nama, tambah_maba dan jml_maba.

Selanjutkan, dalam PerguruanTinggi, ada beberapa prodi. Kita bisa menggunakan array, atau variabel biasa. Dalam contoh ini, kita menyiapkan tiga instance variabel untuk prodi. Jadi, di class PerguruanTinggi kita tambahkan deklarasi prodinya yang mengacu dari class Prodi. Listing lengkap class PerguruanTinggi berubah menjadi berikut

public class PerguruanTinggi
{
  private String namaPT;
  String a;
 
  //asumsi ada 3 prodi
  Prodi p1 = new Prodi();
  Prodi p2 = new Prodi();
  Prodi p3 = new Prodi();
 
  void set_nama(String nama)
  {
    namaPT = nama;
  }
 
  String get_namaPT()
  {
    return namaPT;
  }
}

Di listing diatas, ada tambahan instance variabel p1, p2, p3.

Selanjutnya kita membuat class baru untuk melakukan pengujian. Class baru ini kita beri nama class Test. Dalam class baru, kita buatkan 1 method static. Berikut listing dari class Test

public class Test
{
  static void main()
  {
    PerguruanTinggi pt = new PerguruanTinggi();
 
    pt.set_nama("UTM");
    pt.p1.set_nama("Informatika");
    System.out.println("Prodi "+ pt.p1.get_nama() + ". JmlMaba:" + pt.p1.jml_maba());
    pt.p1.tambah_maba(12);
    System.out.println("Prodi "+ pt.p1.get_nama() + ". JmlMaba:" + pt.p1.jml_maba());
 
    pt.p2.set_nama("Hukum");
    System.out.println("Prodi "+ pt.p2.get_nama() + ". JmlMaba:" + pt.p2.jml_maba());
 
    pt.p3.set_nama("Akuntansi");
    System.out.println("Prodi "+ pt.p3.get_nama() + ". JmlMaba:" + pt.p3.jml_maba());
  }
}

Didalam static method diatas, kita deklarasi instance variabel pt yang mengacu dari class PerguruanTinggi. Kemudian kita bisa akses variabel p1, p2, p3, sesuai kebutuhan, dan bisa memanggi method dari class prodi melalui 3 variabel tersebut.

Diagram keterkaitan antar class tampak pada gambar berikut

contoh hasil running tampak pada gambar berikut

semoga bisa menambah pemahaman terhadap konsep class dan object di java.

 

mySQL Trigger

5 Apr

Berikut contoh penerapan trigger di database mysql. Dalam contoh ini, ada 2 tabel, tabel barang dan tabel barang_keluar. Tabel barang terdiri dari kolom kode_barang, nama_barang, stock. Tabel barang_keluar terdiri dari kolom id1, kode_barang, jml.

Relationship antar 2 tabel tampak pada gambar berikut

Dalam kasus ini, kita ingin membuat trigger agar memberikan batasan

  1. sebelum barang_keluar insert, cek dulu, jika stock kurang, maka batalkan insert
  2. setelah barang_keluar insert, lakukan pengurangan stock.

barang_keluar_after_insert

Kita berikan trigger dengan listing

BEGIN
update barang
set barang.stock = barang.stock – new.jml
where barang.kode_barang = new.kode_barang;
END

dari trigger di atas, setelah proses insert data selesai, kita melakukan update tabel barang, kita update stocknya menjadi stock – jml barang keluar.

Tampilan implementasi dengan menggunakan heidiSQL tampak pada gambar berikut

barang_keluar_before_insert

untuk pengecekan stock sebelum insert data, listing berikut

BEGIN
DECLARE dummy, jmlstock INT;
SELECT barang.stock INTO jmlstock FROM barang
WHERE barang.kode_barang = NEW.kode_barang;

if new.jml > jmlstock then
SIGNAL SQLSTATE ‘01000’ SET MESSAGE_TEXT = ‘Jumlah stock kurang’, MYSQL_ERRNO = 1000;
signal sqlstate ‘45000’;
end if;
END

Pada bagian awal, kita declare variabel jmlstock untuk menyimpan data jumlah stock. Data jumlah stock kita dapatkan melalui query select barang.stock sesuai dengan kode barang (New.kode_barang) yang akan diinsert. Kemudian dicek, jika jml stock lebih kecil dari jml barang yang akan keluar, kita munculkan sqlstate error untuk membatalkan insert data.

Hasil implementasi di heidiSQL tampak pada gambar berikut

Form Input / Output PHP

11 May

Dalam tulisa berikut akan di bahas contoh dasar untuk koneksi ke database mySQL menggunakan php, menampilkan isi tabel, dan menambah isi tabel. Form untuk hapus dan edit data bisa di modifikasi dari contoh form berikut dengan menyesuaikan script program php.

Dalam contoh berikut, menggunakan webServer apache dan database mysql. Semua file contoh di letakkan di web root, atau di letakkan di folder htdocs

Struktur Tabel

Struktur tabel yang di pakai dalam contoh tampak pada gambar di bawah.

Database yang digunakan adalah database mySQL, menggunakan catalog tennis, dan nama tabel siswa, dengan kolom : nis, nama, alamat

Koneksi ke Database

Setiap program php di simpan dalam file yang ber ekstensi php. Dalam file php tersebut, skrip program php di tandai di antara tanda <?php dan ?>

Untuk koneksi ke database, menggunakan perintah mysql_connect, dan untuk memilih katalog database yang akan diakses menggunakan perintah mysql_select_db. Contoh skrip sederhana untuk membuka koneksi ke database dan membuka katalog database tampak pada program di berikut. File ini di simpan dengan nama file form1.php

 

Menampilkan Data

Untuk menampilkan data, pertama kali kita melakukan koneksi ke database. Tahap ini dilakukan dengan memanggil file form1.php, yaitu dengan cara memberikan perintah include_once. Kemudian kita melakukan query ke tabel yang akan di tampilkan, query di jalankan dengan perintah mysql_query. Hasil jumlah baris query bisa di dapatkan dari perintah mysql_num_rows.

Hasil record query bisa di simpan dalam sebuah array dengan index nama kolom yang kita gunakan. Untuk menyimpan hasil query per record ke sebuah array menggunakan mysql_fetch_array.

Contoh program tampak pada gambar dibawah, dengan nama file form2.php

Pada bagian akhir form2.php ada link untuk memanggil form3.php yang akan digunakan sebagai form input. Form2 ini adalah form utama, jadi yang dipanggil pertama kali adalah form2.php.

Untuk memanggil form ini, dari browser, di bagian address di ketikkan localhost\form2.php

 

Form Input

Form input dibuat dengan menggunakan tag HTML untuk form. Pada contoh berikut, form action menggunakan metode POST, dan form yang akan memproses / form action adalah form3_prosesTambah.php

Form untuk memproses Form Input

Form ini akan dipanggil setelah tombol submit di klik di form3.php.

Pada form ini, akan di tangkap isian dari form3, yaitu isian untuk nis, nama, alamat. Kemudian dilakukan insert ke database menggunakan perintah mysql_query. Contoh skrip program tampak pada gambar berikut:

Pada bagian akhir, setelah di lakukan insert, file php memanggil form2.php, sehingga kembali ke halaman awal.

Hasil Running

 

Instalasi CodeIgniter + MVC

15 Mar

Code Igniter (CI) adalah salah satu dari webframework yang bisa digunakan dalam mengembangkan sebuah aplikasi web. CI menerapkan konsep MVC, dan cukup mudah dipelajari, sehingga banyak developer yang memanfaatkan framework ini. Dengan mencoba fitur dan library yang ada, saya yakin seorang programmer php / web developer akan sudah menguasai tool ini dalam kurang dari 24 jam belajar.

Langkah

  1. Download http://codeigniter.com/downloads/
  2. Copykan ke Folder aplikasi

Security

  1. Ubah Folder khusus CI. Folder khususnya adalah:
    1. System, misal di ubah menjadi r_system
    2. Application, misalnya di ubah menjadi r_application
  2. Buka file index.php
  3. Cari variabel:
    1. $system_folder , ubah isinya menjadi r_system
    2. $application_folder, ubah isinya menjadi r_application
  4. Metode lain, folder system dan application di letakkan di atas folder root / web root, sehingga tidak bisa di akses melalui http / browser.

Database Configuration

  • The config file is located at application/config/database.php.
$db[‘default’][‘hostname’] = “localhost”;
$db[‘default’][‘username’] = “root”;
$db[‘default’][‘password’] = “”;
$db[‘default’][‘database’] = “database_name”;
$db[‘default’][‘dbdriver’] = “mysql”;
$db[‘default’][‘dbprefix’] = “”;
$db[‘default’][‘pconnect’] = TRUE;
$db[‘default’][‘db_debug’] = FALSE;
$db[‘default’][‘cache_on’] = FALSE;
$db[‘default’][‘cachedir’] = “”;
$db[‘default’][‘char_set’] = “utf8”;
$db[‘default’][‘dbcollat’] = “utf8_general_ci”;
$db[‘default’][‘swap_pre’] = “”;
$db[‘default’][‘autoinit’] = TRUE;
$db[‘default’][‘stricton’] = FALSE;

MVC

CodeIgniter is based on the Model-View-Controller development pattern. MVC is a software approach that separates application logic from presentation. In practice, it permits your web pages to contain minimal scripting since the presentation is separate from the PHP scripting.

  • The Model represents your data structures. Typically your model classes will contain functions that help you retrieve, insert, and update information in your database.
    • Models are the place where you retrieve, insert, and update information in your database or other data stores. They represent your data.
  • The View is the information that is being presented to a user. A View will normally be a web page, but in CodeIgniter, a view can also be a page fragment like a header or footer. It can also be an RSS page, or any other type of “page”.
  • The Controller serves as an intermediary between the Model, the View, and any other resources needed to process the HTTP request and generate a web page.

CodeIgniter has a fairly loose approach to MVC since Models are not required. If you don’t need the added separation, or find that maintaining models requires more complexity than you want, you can ignore them and build your application minimally using Controllers and Views. CodeIgniter also enables you to incorporate your own existing scripts, or even develop core libraries for the system, enabling you to work in a way that makes the most sense to you.

Application Flowchart

The following graphic illustrates how data flows throughout the system:


  1. The index.php serves as the front controller, initializing the base resources needed to run CodeIgniter.
  2. The Router examines the HTTP request to determine what should be done with it.
  3. If a cache file exists, it is sent directly to the browser, bypassing the normal system execution.
  4. Security. Before the application controller is loaded, the HTTP request and any user submitted data is filtered for security.
  5. The Controller loads the model, core libraries, helpers, and any other resources needed to process the specific request.
  6. The finalized View is rendered then sent to the web browser to be seen. If caching is enabled, the view is cached first so that on subsequent requests it can be served.

CodeIgniter URLs

The segments in the URL, in following with the Model-View-Controller approach, usually represent:

example.com/class/function/ID

  1. The first segment represents the controller class that should be invoked.
  2. The second segment represents the class function, or method, that should be called.
  3. The third, and any additional segments, represent the ID and any variables that will be passed to the controller.

Controller – Contoh halaman static dengan Controller

File ini di letakkan di folder controller. Nama file hars sama dengan nama class yang akan dibuat.

File ini dipanggil dengan cara : index.php/[nama controller]/[nama methode]/[argumen]

  1. Buat di application/controllers/pages.php
  2. Isi nya
<?php

class pages extends CI_Controller {

public function view($page = ‘home’)

{

Echo “hi there”;

}

}

  1. Buka : http://192.168.56.102/ci/index.php/pages/view

Contoh lain:

<?php

class pages extends CI_Controller

{

public function view($page = ‘home’)

{

echo “memanggil halaman $page”;

}

}

?>

Dipanggil dengan : http://192.168.56.102/ci/index.php/pages/view/admin

  • Methode default yang dipanggil adalah : index, jadi jika methode tidak disebutkan, yang akan di jalankan adalah’index’
  • The controller is what will become the center of every request to your web application.
  • In very technical CodeIgniter discussions, it may be referred to as the super object

View

  • Disimpan di folder application/views
  • Contoh, kita akan membuat template halaman, yang terdiri dari header, dan footer
  • application/views/templates/header.php, isi
<html>

<head>

<title><?php echo $title ?> – CodeIgniter 2 Tutorial</title>

</head>

<body>

<h1>CodeIgniter 2 Tutorial</h1>

  • application/views/templates/footer.php
<strong>&copy; 2011</strong>

</body>

</html>

  • Controller Logic
public function view($page = ‘home’)

{


    if ( ! file_exists(‘application/views/pages/’.$page.’.php’))

    {

        // Whoops, we don’t have a page for that!

        show_404();

    }


    $data[‘title’] = ucfirst($page); // Capitalize the first letter


    $this->load->view(‘templates/header’, $data);

    $this->load->view(‘pages/’.$page, $data);

    $this->load->view(‘templates/footer’, $data);

}

  • Di application/views/pagess/contoh.php
<?php

echo “ini halaman contoh <br>”;

?>

  • The controller is now functioning! Point your browser to [your-site-url]index.php/pages/view to see your page. When you visit index.php/pages/view/about you’ll see the about page, again including the header and footer.

Dynamic Content – Model

  • Instead of writing database operations right in the controller, queries should be placed in a model, so they can easily be reused later.
  • Models are the place where you retrieve, insert, and update information in your database or other data stores. They represent your data.
  • Tabel contoh :
CREATE TABLE news ( 
    id int(11) NOT NULL AUTO_INCREMENT, 
    title varchar(128) NOT NULL, 
    slug varchar(128) NOT NULL, 
    text text NOT NULL, 
    PRIMARY KEY (id), 
    KEY slug (slug) 
);
  • Buat file : application/models/news_model.php
<?php

class news_model extends CI_Model {

public function __construct()

{

$this->load->database();

}

public function get_news($slug = FALSE)

{

if ($slug === FALSE)

{

$query = $this->db->get(‘news’);

return $query->result_array();

}
$query = $this->db->get_where(‘news’, array(‘slug’ => $slug));

return $query->row_array();

}

}

?>

Menampilkan News

  • Buat file di application/controllers/news.php
<?php

class news extends CI_Controller {

public function __construct()

{

parent::__construct();

$this->load->model(‘news_model’);

}

    public function index() 
{ 
    $data['news'] = $this->news_model->get_news(); 
    $data['title'] = 'News archive'; 
    $this->load->view('templates/header', $data); 
    $this->load->view('news/index', $data); 
    $this->load->view('templates/footer'); 
} 
    public function view($slug) 
    { 
        $data['news'] = $this->news_model->get_news($slug); 
    } 

}

?>

  • You now need to create a view to render the news items. Create application/views/news/index.php
<?php foreach ($news as $news_item): ?>

<h2><?php echo $news_item[‘title’] ?></h2>

<div id=”main”>

<?php echo $news_item[‘text’] ?>

</div>

<p><a href=”news/<?php echo $news_item[‘slug’] ?>”>View article</a></p>

<?php endforeach ?>

  • add some code to the controller and create a new view
public function view($slug) 
{ 
    $data['news_item'] = $this->news_model->get_news($slug); 
    if (empty($data['news_item'])) 
    { 
        show_404(); 
    } 
    $data['title'] = $data['news_item']['title']; 
    $this->load->view('templates/header', $data); 
    $this->load->view('news/view', $data); 
    $this->load->view('templates/footer'); 
} 
  • The only things left to do is create the corresponding view at application/views/news/view.php
<?php 
echo '<h2>'.$news_item['title'].'</h2>'; 
echo $news_item['text']; 

Create Form

  • To input data into the database you need to create a form where you can input the information to be stored. This means you’ll be needing a form with two fields, one for the title and one for the text. You’ll derive the slug from our title in the model.
  • Create the new view at application/views/news/create.php
<h2>Create a news item</h2>

<?php echo validation_errors(); ?>

<?php echo form_open(‘news/create’) ?>

<label for=”title”>Title</label>

<input type=”input” name=”title” /><br />

<label for=”text”>Text</label>

<textarea name=”text”></textarea><br />

<input type=”submit” name=”submit” value=”Create news item” />

</form>

  • form_open() function, is provided by the form helper and renders the form element and adds extra functionality, like adding a hidden CSFR prevention field.
  • validation_errors() function, is used to report errors related to form validation.
  • news controller
public function create() 
{ 
    $this->load->helper('form'); 
    $this->load->library('form_validation'); 
     
    $data['title'] = 'Create a news item'; 
     
    $this->form_validation->set_rules('title', 'Title', 'required'); 
    $this->form_validation->set_rules('text', 'text', 'required'); 
     
    if ($this->form_validation->run() === FALSE) 
    { 
        $this->load->view('templates/header', $data);     
        $this->load->view('news/create'); 
        $this->load->view('templates/footer'); 
         
    } 
    else 
    { 
        $this->news_model->set_news(); 
        $this->load->view('news/success'); 
    } 
} 
  • you can see a condition that checks whether the form validation ran successfully. If it did not, the form is displayed, if it was submitted and passed all the rules, the model is called. After this, a view is loaded to display a success message.
  • Create a view at application/view/news/success.php
  • Open up the model created earlier and add the following
public function set_news() 
{ 
    $this->load->helper('url'); 
     
    $slug = url_title($this->input->post('title'), 'dash', TRUE); 
     
    $data = array( 
        'title' => $this->input->post('title'), 
        'slug' => $slug, 
        'text' => $this->input->post('text') 
    ); 
     
    return $this->db->insert('news', $data); 
} 
  • The third line contains a new function, url_title(). This function – provided by the URL helper – strips down the string you pass it, replacing all spaces by dashes (-) and makes sure everything is in lowercase characters. This leaves you with a nice slug, perfect for creating URIs.

Controller dengan tidak memakai konsep MVC

public function lihat()

{

$this->load->database();

$query = $this->db->query(‘select * from news’);
if ($query->num_rows() > 0)

{

foreach ($query->result() as $row)

{

echo $row->title.” *** “.$row->slug.” *** HH *** “.$row->text.”<br>”;

}

}

}

PHP Dasar

Koneksi ke Tabel

<?php

$cnn = mysql_connect(“localhost”,”root”,”dvo”) or die(“Could not connect to db”);

if ($cnn) mysql_select_db(“arsip01”);

?>

$sql = “select id_bagian, nm_bagian from bagian order by id_bagian”;

$hasil = mysql_query($sql) or die(“SQL error- $sql”);

if ($hasil==false) exit;

$no1 = 1;

while ($row=mysql_fetch_row($hasil))

{

Echo $row[0].”-“. $row[1];

}

Melakukan input data ke tabel

$sql = “query”

$hasil = mysql_query($sql) or die(“”);