Laman

Kamis, 03 Januari 2013

Cara Copy File Melalui PHP dan HTML

Tutorial saya kali ini akan menjelaskan bagaimana cara melakukan penyalinan (copy) file melalui kode PHP dan HTML. Kebanyakan suatu file disalin menggunakan perintah yang telah disediakan dari sistem operasinya misalnya dengan menekan tombol CTRL+C kemudian CTRL+V atau klik kanan pilih Copy kemudian pilih Paste.Namun bagaimana caranya menyalin suatu file melalui aplikasi web PHP?

Fungsi bawaan PHP: copy()
Sebenarnya hanya dengan sebuah fungsi internal bawaan dari PHP yakni copy() sudah cukup untuk melakukan penyalinan file. Cukup sertakan nama file sumber dan tujuan sebagai argumen saat memanggil fungsi copy() tersebut. Berikut contohnya:
copy("/home/husnanlabs/contoh/file1.php", "/home/husnanlabs/contoh/file2.php");

Anda perlu menyertakan path file (seperti kode di atas) jika file yang ingin disalin atau file salinannya tidak berada pada satu folder dengan file php untuk keperluan penyalinan file ini.

Kode di atas tidaklah interaktif. Anda harus merubah argumennya tiap kali file disalin. Untuk itu diperlukanlah sebuah form HTML untuk memudahkan penyalinan file melalui web browser.

Copy file melalui PHP dan HTML
Copy file melalui PHP dan HTML


Pengaturan Hak Akses (permission) Folder Tujuan
Sebelumnya jika Anda menggunakan sistem operasi Linux, pastikan bahwa path file tujuan dapat diakses dalam hal ini dapat dipakai sebagai tempat penyalinan file (writtable). Sebagai contoh mudahnya, Anda bisa mengatur hak akses (permission) folder tujuan dengan kode akses 777 atau rwx (read-write-execute). Contohnya dengan mengatur permission folder tujuan tersebut dengan perintah:
chmod 777 /home/husnanlabs/contoh

Bisa juga melalui fungsi PHP: chmod()

Membuat Tampilan Web Menggunakan HTML
Kode HTML di sini dipakai untuk menunjang sisi interaktifitas pengguna. Dengan memanfaatkan elemen <input> yakni dengan type file dan text, Anda dapat memilih file melalui kotak dialog untuk memilih suatu file kemudian dengan menuliskan path file-folder tujuannya pada kotak yang telah disediakan sebagai nama file salinannya. Berikut contoh lengkap kode HTML-nya:
<!DOCTYPE html>
<html>
  <head>
    <meta charset="utf-8" />
    <title>husnanlabs.blogspot.com</title>
  </head>
  <body>
    <form method="post" action="" enctype="multipart/form-data">
      <table>
        <tr>
          <td><label for="fileSumber">Path file sumber</label></td>
          <td><input type="file" name="fileSumber" /></td>
        </tr>
        <tr>
          <td><label for="txtFolder">Path file tujuan</label></td>
          <td>
            <input type="text" name="txtFolder" />
            <input type="submit" name="btSalin" value="Salin" />
          </td>
        </tr>
      </table> 
    </form>
  </body>
</html>

Prinsip kerja dari kode HTML di atas sangatlah mirip dengan proses upload file ke server, namun dalam contoh ini kita jadikan bentuk tersebut sebagai proses penyalinan file. Jadi saat tombol btSalin diklik, file yang dipilih melalui kotak dialog "File Upload" akan dikirim ke server dalam bentuk kode binary yang telah ditentukan melalui atribut enctype="multipart/form-data" pada elemen form. Untuk proses penyalinan filenya kita perlu kode PHP.

Copy File Melalui PHP dan HTML
Sekarang Anda memerlukan kode PHP untuk memproses file yang telah dipilih melalui kode HTML di atas. Berikut potongan kode PHP-nya:
<?php
$pathFileSumber = $_FILES["fileSumber"]["tmp_name"];
$pathFileTujuan = $_POST["txtFolder"];

if (isset($_POST["btSalin"])) {
  if (copy($pathFileSumber, $pathFileTujuan)) {
    echo "File telah berhasil disalin.";
  }
  else echo "Terjadi kegagalan penyalinan file. ";
}
?>

Untuk mengambil file temporary yang telah diupload, Anda dapat menggunakan variabel $_FILES["fileSumber"]["tmp_name"]. Variabel tersebut berisi link ke file yang Anda pilih tadi dalam bentuk file temporary yang akan dihapus secara otomatis jika file tersebut sudah tidak diperlukan lagi.

Untuk memeriksa apakah tombol btSalin telah diklik, Anda dapat menggunakan fungsi isset(). Jika tombol tersebut telah diklik maka fungsi tersebut mengembalikan nilai true. Selanjutnya fungsi copy() akan menerima dua path file-folder yang berasal dari variabel $pathFileSumber dan $pathFileTujuan. Kedua file tersebut digunakan sebagai argumen bagi fungsi copy().

Berikut kode selengkapnya (PHP dan HTML):
<?php
$pathFileSumber = $_FILES["fileSumber"]["tmp_name"];
$pathFileTujuan = $_POST["txtFolder"];

if (isset($_POST["btSalin"])) {
  if (copy($pathFileSumber, $pathFileTujuan)) {
    echo "File telah berhasil disalin.";
  }
  else echo "Terjadi kegagalan penyalinan file. ";
}
?>

<!DOCTYPE html>
<html>
  <head>
    <meta charset="utf-8" />
    <title>husnanlabs.blogspot.com</title>
  </head>
  <body>
    <form method="post" action="" enctype="multipart/form-data">
      <table>
        <tr>
          <td><label for="fileSumber">Path file sumber</label></td>
          <td><input type="file" name="fileSumber" /></td>
        </tr>
        <tr>
          <td><label for="txtFolder">Path file tujuan</label></td>
          <td>
            <input type="text" name="txtFolder" />
            <input type="submit" name="btSalin" value="Salin" />
          </td>
        </tr>
      </table> 
    </form>
  </body>
</html>

Semoga bermanfaat.

© 2013 husnanlabs.blogspot.com

Jumat, 14 Desember 2012

Compiler, Tools, IDE Program C++ di Sistem Operasi Linux

Compiler, Tools, IDE untuk membuat program C++ di sistem operasi Linux ada beberapa diantaranya yang cukup terkenal dan memiliki fitur yang bagus dan berkualitas. GCC (GNU Compiler Collection) adalah salah satu compiler yang sangat terkenal dan banyak dipakai programmer C++ baik di sistem operasi Linux(GCC) atau Windows (MinGW).

Compiler g++

GNU GCC Compiler
GNU GCC Compiler


Program C++ memerlukan compiler tersendiri di dalam GNU GCC Compiler yakni g++. Untuk itu di dalam sistem operasi Ubuntu Linux, Anda dapat menginstal compiler g++ dengan cara yang sangat mudah, yakni melalui terminal, ketikkan perintah berikut:
sudo apt-get install g++

Selain itu Anda juga dapat menginstal compiler g++ dengan cara mengetikan perintah:
sudo apt-get install build-essential

Perbedaannya adalah, pada perintah kedua (build-essential), beberapa development packages (paket) ikut diinstal. Paket-paket tersebut digunakan untuk membuat Debian Packages. Tapi tidak ada salahnya Anda menginstal dengan cara ini.

Code::Blocks IDE
Code::Blocks IDE merupakan free IDE (Integrated Development Environment) yang sangat baik untuk membuat program C++. Code::Blocks membutuhkan C++ Compiler, salah satunya adalah GNU GCC Compiler. Untuk itu Anda memerlukan GNU GCC Compiler terlebih dahulu sebelum menginstalnya.

Template untuk pembuatan project pada Code::Blocks IDE ini sangat lengkap. Diantaranya template untuk membuat program C++ berbasis ARM, GLUT, OGRE, SDL, GTK+, OpenGL, Qt4, WxWidgets dan aplikasi Console. Code::Blocks IDE sangat direkomendasikan untuk pembuatan program C++ secara umum.

Code::Blocks IDE
Code::Blocks IDE (About)


Code::Blocks IDE juga cocok untuk pembuatan aplikasi atau program C++ berbasis WxWidgets GUI toolkit. Tersedia GUI Builder untuk pembuatan aplikasi atau program C++ berbasis WxWidgets. Artinya Anda dapat membuat program C++ dengan fasilitas drag n drop komponen GUI (WxWidgets).

Untuk menginstalnya di sistem Linux, Anda dapat menggunakan perintah berikut:
sudo apt-get install codeblocks

Code::Blocks IDE untuk sistem operasi Windows dapat Anda download di sini.

Qt Creator IDE
Qt Creator IDE merupakan IDE favorit untuk pembuatan aplikasi C++ berbasis Qt Framework. Qt merupakan C++ Framework yang memudahkan Anda membuat aplikasi atau program C++ khususnya yang berbasis GUI yang dapat berjalan secara multiplatform. Library Qt sangat kaya. Melalui Qt libraries, Anda dapat membuat program C++ dari jenis aplikasi console sampai berbasis mobile. Qt juga merupakan pilar utama desktop environment KDE. Qt memiliki lisensi free (GPL dan LGPL) maupun Commercial.

Sangat dianjurkan Anda menggunakan Qt Creator untuk membuat aplikasi atau program C++ berbasis Qt Framework. Anda dapat membuat program Qt berbasis GUI dengan cara drag n drop komponen GUI (Qt).

Tentu saja program C++ sederhana dapat dibuat dengan mudah melalui Qt Creator ini. Namun Qt Creator memang ditujukan untuk membuat aplikasi atau program C++ yang berbasis Qt Framework.

Qt Creator IDE (About)
Qt Creator IDE (About)


Qt Creator membutuhkan compiler (sama halnya Code::Blocks), yakni salah satunya GNU GCC Compiler. Pada sistem Linux (khususnya Ubuntu dan turunan Debian lainnya), Anda dapat menginstalnya secara mudah melalui terminal dengan perintah:
sudo apt-get install qtcreator

Jika Anda belum menginstal GNU GCC compiler dan juga Qt libraries(Qt SDK), maka secara otomatis akan diinstalkan juga melalui perintah di atas.

Untuk sistem operasi Windows, Anda dapat download Qt libraries(Qt SDK) dan Qt Creator di sini.

Semoga Anda dapat membuat aplikasi atau program C++ di sistem operasi Linux maupun sistem operasi lainnya dengan menggunakan compiler, tools, dan IDE yang free namun berkualitas tinggi.

© 2012 husnanlabs.blogspot.com

Senin, 10 Desember 2012

Membuat Autocomplete Value-Label jQuery, PHP, MySQL

Tutorial saya ini merupakan kelanjutan dari artikel saya yang sebelumnya yang berjudul Membuat Autocomplete Menggunakan jQuery, PHP, MySQL. Perbedaan artikel ini dengan yang sebelumnya adalah penggunaan fitur Autocomplete menggunakan pasangan value-label yang dapat menampilkan dua nilai (atau lebih) dan menggunakan file PHP yang terpisah untuk mendapatkan datanya dari database MySQL.

Jadi misalnya suatu kota memiliki jumlah populasi tertentu. Value diset untuk menampung jumlah populasi sedangkan label diset untuk menampung nama kota dan populasinya. Hasil akhirnya adalah saat suatu nama kota dan populasinya yang diambil secara dinamis dari database dipilih, elemen textbox hanya akan menerima nilai valuenya saja yakni jumlah populasinya saja. Gambar berikut menjelaskan apa yang telah saya terangkan:

Autocomplete value-label dengan jQuery, PHP, MySQL
Autocomplete value-label dengan jQuery, PHP, MySQL


Menjalankan jQuery UI Autocomplete Melalui Event KeyUp
Event keyup diaktifkan saat tombol keyboard dilepas setelah ditekan. Event keyup ini berguna untuk mengeksekusi autocomplete dalam mengambil data melalui file PHP. Di dalam file PHP ini berisi kode untuk mengambil data dari database dengan kata kunci tertentu. Berikut potongan kode JavaScript (jQuery) untuk keperluan ini:
<script>
  $(document).ready(function() {
    $("#txtNamaKota").keyup(function() {
      $("#txtNamaKota").autocomplete({
        source: "get-data-kota.php?namaKota="+$("#txtNamaKota").val()
      });
    });
  });
</script>

Parameter namaKota digunakan untuk keperluan seleksi nama kota yang nantinya dipakai untuk keperluan query SELECT menggunakan statemen LIKE.

Mengambil Sekumpulan Data Melalui File PHP
Atribut atau property source pada kode JavaScript di atas mengacu pada sebuah file PHP. Ini berarti file PHP tersebut digunakan sebagai sumber data untuk fitur autocomplete-nya. Oleh karena itu file get-data-kota.php perlu dibuat untuk mengambil sekumpulan data dari database.

Pada contoh kode berikut, saya menggunakan metode query menggunakan PDO (PHP Data Object). Database berasal dari contoh database World yang disediakan oleh website MySQL. Untuk lebih jelasnya lihat kode berikut:
<?php
  require_once "koneksi.php";
  $sql = "SELECT Name, Population FROM City WHERE Name LIKE ?";
  $arrData = array();
  
  try {
    $query = $koneksi->prepare($sql);
    $query->execute(array($_REQUEST["namaKota"].'%'));
    while($data = $query->fetch()) {
      $arrData[] = array("value" => $data["Population"], 
                         "label" => $data["Name"]." (".$data["Population"].")");
    }
  }
  catch (PDOException $e) {
    echo $e->getMessage();
  }
  
  echo json_encode($arrData);
?>

Pada SQL-nya saya menuliskan perintah query sederhana yakni mengambil nama kota (Name) dan populasinya (Population). Pada bagian akhir SQL-nya terdapat tanda tanya (?). Tanda tanya tersebut merupakan penanda prepared statement yang dipakai untuk menghindari SQL Injection. Data masukan, dalam hal ini $_REQUEST["namaKota"] tidak langsung dimasukan ke dalam perintah query-nya tapi secara tidak langsung melalui argumen dari method PDO->execute() dalam bentuk variabel array.

Selanjutnya perlu dibuatkan variabel array $arrData. Variabel array ini menyimpan kumpulan associative array (value-label). Nama associative array inilah yang nanti dipakai oleh jQuery UI Autocomplete untuk mendapatkan data label dan value seperti yang terlihat pada gambar di atas. Demikian semoga bermanfaat.

© 2012 husnanlabs.blogspot.com

Sabtu, 08 Desember 2012

Membuat Autocomplete Menggunakan jQuery, PHP, MySQL

Tutorial saya kali ini adalah membuat fitur Autocomplete menggunakan jQuery, PHP, dan MySQL. Fitur Autocomplete adalah suatu fitur dari jQuery UI yang akan memberikan saran pencarian suatu data dalam elemen textbox HTML.

Jadi misalnya Anda mencari suatu string kata misalnya mencari nama kota di seluruh dunia dan Anda memasukan kata "Band" maka dari kata itu, fitur Autocomplete akan menampilkan nama-nama kota di seluruh dunia yang diawali kata tersebut. Untuk lebih jelasnya lihat gambar berikut:

autocomplete jquery php mysql
Gambar Fitur Autocomplete nama kota di dunia menggunakan jQuery, PHP, MySQL


jQuery, jQuery UI, dan jQuery UI CSS
Fitur Autocomplete ini berasal dari JavaScript Framework khusus untuk interaksi dan efek tampilan yakni jQuery UI. Agar bisa berjalan, jQuery UI membutuhkan jQuery. Untuk itu Anda perlu mendownload file jQuery UI dan jQuery.

Karena file jQuery UI membutuhkan fungsi atau interface yang ada di dalam file jQuery, maka saat menuliskan penyertaan filenya di dalam kode program, file jQuery dituliskan terlebih dahulu baru kemudian file jQuery UI-nya. Urutan penulisan kode program sangat berpengaruh di sini.

Contoh potongan skripnya dengan urutan yang benar:
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="jquery-ui.js"></script>

Tanpa file CSS, fitur Autocomplete ini terlihat aneh dan kurang nyaman dipandang. Untuk itu file CSS untuk jQuery UI diperlukan. File CSS untuk jQUery UI sudah disediakan oleh pengembangnya dan ada beberapa themes yang bisa Anda pakai. Untuk keperluan contoh ini, saya menggunakan file CSS: jquery-ui.css. Tambahkan file CSS tersebut ke dalam file web Autocomplete Anda.

Membuat jQuery UI Autocomplete
Untuk menggunakan fitur Autocomplete pada elemen textbox, cukup sertakan kode berikut:
<!DOCTYPE html>
<html>
  <head>
    <title>husnanlabs.blogspot.com</title>
    <meta charset="utf-8" />
    <link rel="stylesheet" type="text/css" href="style.css" />
    <script type="text/javascript" src="jquery.js"></script>
    <script type="text/javascript" src="jquery-ui.js"></script>
  </head>
  <body>
    <div class="ui-widget">
    Kota: <input type="text" id="txtNamaKota" name="txtNamaKota" />
    </div>
    <script>
      var arrNamaKota = ["Jakarta", "Bandung", "Semarang", "Yogyakarta", "Surabaya"];
      $(document).ready(function() { 
        $("#txtNamaKota").autocomplete({
          source: arrNamaKota
        });
      });
    </script>
  </body>  
</html>

Sekarang simpan file tersebut dalam sebuah file HTML kemudian jalankan melalui browser. Jika tidak ada masalah sekarang lanjut mengintegrasikannya dengan PHP dan MySQL.

jQuery UI Autocomplete Menggunakan PHP dan MySQL
Sesuai dengan judul artikel saya ini, kita akan membuat sebuah contoh penggunaan fitur Autocomplete di dalam halaman web PHP dan database server MySQL.

Sebelum melangkah lebih lanjut, pastikan kode PHP Anda telah berhasil dihubungkan dengan database MySQL. Untuk keperluan contoh ini, saya memakai database yang disediakan oleh website MySQL yakni database World.

Modifikasi kode diatas dengan menambahkan script atau kode untuk menghubungkan ke database server MySQL. Pada contoh ini saya telah mendefinisikan scriptnya dalam file tersendiri yakni file koneksi.php, sehingga saya menuliskan scriptnya seperti ini:
<?php
  require_once "koneksi.php";
?>

Selanjutnya tulislah script atau kode PHP berikut ke dalam file autocomplete yang Anda buat tadi. Dalam contoh ini saya menuliskannya di atas sendiri setelah script untuk proses koneksi ke database.
<?php
  $sql = "SELECT Name FROM City";
  $arrNamaKota = array();
        
  try {
    $query = $koneksi->prepare($sql);
    $query->execute();
    while($data = $query->fetch()) {
      $arrNamaKota[] = $data["Name"];
    }
  }
  catch (PDOException $e) {
    echo $e->getMessage();
  }
?>

Karena proses yang terjadi melibatkan pengambilan sejumlah data dari database MySQL, maka diperlukan perintah SQL: SELECT. Kemudian diperlukan juga sebuah variabel array PHP yang fungsinya untuk menampung semua data hasil query SELECT. Dalam contoh ini variabel $arrNamaKota akan menampung semua kota yang didapat dari query SELECT.

Dalam contoh ini saya menggunakan PDO (PHP Data Object) untuk mengambil data dari database server MySQL. Anda dapat menggunakan perintah prosedural seperti fungsi mysql_query() namun penggunaan fungsi-fungsi prosedural tersebut tidak diajurkan lagi karena statusnya deprecated yang artinya sudah tidak dikembangkan lagi dan suatu saat fungsi-fungsi tersebut akan ditiadakan.

Setelah data diambil dan dimasukkan ke dalam variabel array, data tersebut nantinya akan dimasukan ke dalam variabel array JavaScript melalui fungsi PHP json_encode(). Untuk itu ganti definisi isian variabel JavaScript arrNamaKota untuk merujuk data yang diambil dari kode PHP melalui fungsi json_encode() ini. Untuk lebih jelasnya lihat proses pergantiannya melalui potongan kode berikut:
var arrNamaKota = ["Jakarta", "Bandung", "Semarang", "Yogyakarta", "Surabaya"];

Kode di atas diubah menjadi:
var arrNamaKota = <?php echo json_encode($arrNamaKota); ?>;

Untuk memperjelas semuanya, berikut kode lengkap dari penggunaan jQuery UI Autocomplete yang diintegrasikan dengan PHP dan MySQL:
<?php
  require_once "koneksi.php";

  $sql = "SELECT Name FROM City";
  $arrNamaKota = array();
        
  try {
    $query = $koneksi->prepare($sql);
    $query->execute();
    while($data = $query->fetch()) {
      $arrNamaKota[] = $data["Name"];
    }
  }
  catch (PDOException $e) {
    echo $e->getMessage();
  }
?>

<!DOCTYPE html>
<html>
  <head>
    <title>husnanlabs.blogspot.com</title>
    <meta charset="utf-8" />
    <link rel="stylesheet" type="text/css" href="style.css" />
    <script type="text/javascript" src="jquery.js"></script>
    <script type="text/javascript" src="jquery-ui.js"></script>
  </head>
  <body>
    <div class="ui-widget">
    Kota: <input type="text" id="txtNamaKota" name="txtNamaKota" />
    </div>
    <script>
      var arrNamaKota = <?php echo json_encode($arrNamaKota); ?>;
      $(document).ready(function() { 
        $("#txtNamaKota").autocomplete({
          source: arrNamaKota
        });
      });
    </script>
  </body>  
</html>  

Demikian artikel saya yang berjudul "Membuat Autocomplete Menggunakan jQuery, PHP, MySQL" ini. Semoga bermanfaat :D

© 2012 husnanlabs.blogspot.com

Selasa, 16 Oktober 2012

Membuat Duplikat Atau Backup Tabel PHP-MySQL

Tabel MySQL dapat dibuat dari tabel lain yang memiliki kesamaan dalam hal struktur dan isi tabelnya. Duplikat tabel dapat dipakai untuk keperluan mem-backup tabel. Selain itu dapat digunakan sebagai arsip tabel per bulan.

Membuat Duplikat Tabel Menggunakan Query Sederhana MySQL
Misalnya tabel tb_nilai ingin diduplikat, dibackup, atau diarsipkan tiap bulannya. Tabel tb_nilai ini memiliki struktur tabel seperti yang terlihat pada gambar berikut:


Struktur tabel nilai


Maka untuk menduplikasikan tabel tersebut tidak perlu membuat query SQL seperti:
CREATE TABLE tb_nilai_backup (
  nomor_induk INT NOT NULL,
  kode_pelajaran VARCHAR(6) NOT NULL,
  nilai INT,
  PRIMARY KEY(nomor_induk, kode_pelajaran)
);
Namun cukup query sederhana seperti berikut:
CREATE TABLE tb_nilai_backup LIKE tb_nilai;


Persamaan struktur tabel duplikat dan tabel asli


Kemudian untuk mengisikan semua datanya ke dalam tabel duplikat tersebut, cukup lakukan dengan menuliskan query berikut:
INSERT INTO tb_nilai_backup SELECT * FROM tb_nilai;
Cukup mudah bukan? Sekarang saatnya menggabungkan dengan kode PHP.

Membuat Duplikat atau Backup Tabel Menggunakan Query Sederhana PHP-MySQL
Untuk keperluan pengarsipan atau backup tabel tiap bulan, Anda dapat menggunakan query SQL di atas kemudian penamaan tabelnya dapat menggunakan penanda akhiran (suffix) angka bulannya menggunakan fungsi date() milik PHP.

Misal tabel tb_nilai ingin diarsipkan atau dibackup dengan format nama tabel tb_nilai_2012_10 yang artinya backup tabel tb_nilai untuk bulan Oktober 2012. Untuk keperluan backup, duplikat, atau pengarsipan ini, tuliskan kode PHP sederhana berikut:
<?php
  mysql_query("CREATE TABLE tb_nilai_backup_".date("Y_m")." LIKE tb_nilai");
  mysql_query("INSERT INTO tb_nilai_backup_".date("Y_m")." SELECT * FROM tb_nilai");
?>
Dalam sekejap tabel duplikatnya akan dibuat dengan penamaan yang diakhiri kode tahun-bulan, misalnya seperti tb_nilai_backup_2012_10.

Semoga bermanfaat.

© 2012 husnanlabs.blogspot.com