Sabtu, 02 Oktober 2010

PHP & MySQL: Tutorial Dasar

Pada tutorial kali ini, kita akan mencoba melakukan operasi - operasi dasar pada PHP MySQL.
1. Membuat koneksi
$hostmysql = “localhost”;
$username = “mysqlusername”;
$password = “mysqlpassword”;
$database = “namadatabase”;

$conn = mysql_connect(”$hostmysql”,”$username”,”$password”);
if (!$conn) die (”Koneksi gagal”);
mysql_select_db($database,$conn) or die (”Database tidak ditemukan”); >

Penjelasan Script:
a. mysql_connect
digunakan untuk membuat koneksi dari PHP ke server MySQL. Data mengenai hostname, mysql username, dan password yang digunakan telah diwakilkan oleh variabel $hostmysql, $username, $password. Penulisannya akan sama dengan:
mysql_connect(”localhost”,”username”,”password”);
b. mysql_select_db
untuk memilih database yang akan digunakan.
c. if (!$conn) die (”Koneksi gagal”);
jika koneksi gagal dibuat (!$conn), maka akan muncul pesan kesalahan

Setiap operasi PHP yang berhubungan dengan MySQL, akan membutuhkan sintaks diatas. agar lebih mudah, lebih baik disimpan terlebih dahulu dengan nama konfig.php. Jika sintaks tersebut dibutuhkan lagi, maka kita melakukan include terhadap file konfig.php tersebut.

2. Membuat tabel pada MySQL
include (”konfig.php”);
mysql_query(”CREATE TABLE user (
namadpnVARCHAR(20),
namablkg VARCHAR(20),
negara VARCHAR(20))”); ?>

Penjelasan script:
1. include (”konfig.php”);
perintah include digunakan untuk mengikut sertakan sebuah file (pada contoh diatas adalah file konfig.php).
2. mysql_query
format umum dari perintah ini adalah mysql_query(string dari query).
mysql_query akan sering dijumpai pada artikel kali ini.

3. Memasukkan data pada tabel
include (”konfig.php”);
$insert = “INSERT INTO users (namadpn,namablkg,negara)
VALUES (’Saya’,'Sendiri’,'Indonesia’)”;
mysql_query($insert) or die (”tidak dapat memasukkan data ke tabel”);?>

4 . Menampilkan data dari tabel
include (”konfig.php”);
$query = “SELECT * FROM user”;
$result = mysql_query($query);
$numrows = mysql_num_rows($result);
while($row = mysql_fetch_array($result)){
echo “Jumlah data: $numrows
”;
echo “Nama Depan: $row[namadpn]
”;
echo “Nama Belakang: $row[namablkg]
”;
echo “Negara: $row[negara]“;
} ?>

Penjelasan script:
1. mysql_num_rows
digunakan untuk menghitung jumlah baris yang didapat dari hasil eksekusi query (mysql_query).
2. while ( ) {
}
digunakan untuk melakukan perulangan selama data yang yang diinginkan masih ada. (dalam contoh diatas: akan menampilkan semua isi dari table).
3. mysql_fetch_array
menampilkan data dari tabel dalam bentuk array

Untuk penggunaan lainnya (hapus, update, dsb) yang berubah hanya string query-nya saja.

PHP

PHP: Hypertext Preprocessor adalah yang digunakan, luas tujuan umum bahasa script yang pada awalnya dirancang untuk pengembangan web untuk menghasilkan halaman web dinamis . For this purpose, PHP code is embedded into the HTML source document and interpreted by a web server with a PHP processor module, which generates the web page document. Untuk tujuan ini, kode PHP tertanam ke dalam HTML dokumen sumber dan ditafsirkan oleh web server dengan modul PHP prosesor, yang menghasilkan halaman web dokumen. As a general-purpose programming language, PHP code is processed by an interpreter application in command-line mode performing desired operating system operations and producing program output on its standard output channel. Sebagai tujuan bahasa pemrograman umum, kode PHP diproses oleh aplikasi penerjemah di baris perintah modus melakukan operasi sistem operasi yang diinginkan dan menghasilkan output program di channel output standar. It may also function as a graphical application. Hal ini juga dapat berfungsi sebagai aplikasi grafis. PHP is available as a processor for most modern web servers and as a standalone interpreter on most operating systems and computing platforms . PHP tersedia sebagai prosesor untuk sebagian besar web server modern dan sebagai penerjemah mandiri pada kebanyakan sistem operasi dan platform komputasi .

PHP was originally created by Rasmus Lerdorf in 1995 [ 1 ] [ 2 ] and has been in continuous development ever since. PHP pada awalnya diciptakan oleh Rasmus Lerdorf pada tahun 1995 [1] [2] dan telah dalam pembangunan berkelanjutan sejak itu. The main implementation of PHP is now produced by the PHP Group and serves as the de facto standard for PHP as there is no formal specification . [ 3 ] PHP is free software released under the PHP License . Implementasi utama dari PHP sekarang diproduksi oleh Grup PHP dan berfungsi sebagai standar de facto untuk PHP karena tidak ada spesifikasi formal . [3] PHP adalah perangkat lunak bebas yang dirilis di bawah Lisensi PHP .

Penggunaan

PHP is a general-purpose scripting language that is especially suited to server-side web development where PHP generally runs on a web server . PHP adalah bahasa scripting tujuan-umum yang sangat cocok untuk server-side web development PHP di mana umumnya berjalan pada web server . Any PHP code in a requested file is executed by the PHP runtime, usually to create dynamic web page content. Setiap kode PHP dalam file yang diminta dieksekusi oleh runtime PHP, biasanya untuk membuat halaman web dinamis konten. It can also be used for command-line scripting and client-side GUI applications. Hal ini juga dapat digunakan untuk command-line script dan client-side GUI aplikasi. PHP can be deployed on most web servers , many operating systems and platforms , and can be used with many relational database management systems . PHP dapat digunakan pada kebanyakan web server , banyak sistem operasi dan platform , dan dapat digunakan dengan banyak sistem manajemen database relasional . It is available free of charge, and the PHP Group provides the complete source code for users to build, customize and extend for their own use. [ 31 ] Ini tersedia gratis, dan Grup PHP menyediakan kode sumber lengkap bagi pengguna untuk membangun, menyesuaikan dan memperpanjang untuk mereka gunakan sendiri. [31]

PHP primarily acts as a filter , [ 32 ] taking input from a file or stream containing text and/or PHP instructions and outputs another stream of data; most commonly the output will be HTML. PHP terutama bertindak sebagai filter , [32] mengambil input dari sebuah file atau aliran teks yang berisi dan / atau PHP instruksi dan output lain aliran data; paling sering output akan HTML. Since PHP 4, the PHP parser compiles input to produce bytecode for processing by the Zend Engine , giving improved performance over its interpreter predecessor. [ 33 ] Sejak PHP 4, PHP parser compiles input untuk menghasilkan bytecode untuk diproses oleh Zend Engine , memberikan kinerja yang meningkat lebih dari perusahaan penerjemah pendahulunya. [33]

Originally designed to create dynamic web pages, PHP now focuses mainly on server-side scripting , [ 34 ] and it is similar to other server-side scripting languages that provide dynamic content from a web server to a client , such as Microsoft 's Active Server Pages , Sun Microsystems ' JavaServer Pages , [ 35 ] and mod_perl . Awalnya dirancang untuk membuat halaman web dinamis, PHP sekarang berfokus terutama pada server-side scripting , [34] dan ini mirip dengan lainnya server side-scripting bahasa yang menyediakan konten dinamis dari server web ke klien , seperti Microsoft 's Aktif Server Pages , Sun Microsystems ' JavaServer Pages , [35] dan mod_perl . PHP has also attracted the development of many frameworks that provide building blocks and a design structure to promote rapid application development (RAD). PHP juga telah menarik banyak pengembangan kerangka yang menyediakan blok bangunan dan struktur desain untuk mempromosikan pengembangan aplikasi cepat (RAD). Some of these include CakePHP , Symfony , CodeIgniter , and Zend Framework , offering features similar to other web application frameworks . Beberapa di antaranya adalah CakePHP , Symfony , CodeIgniter , dan Zend Framework , menawarkan fitur serupa dengan lain kerangka kerja aplikasi web .

The LAMP architecture has become popular in the web industry as a way of deploying web applications. The LAMP arsitektur telah menjadi populer di industri web sebagai cara untuk menyebarkan aplikasi web. PHP is commonly used as the P in this bundle alongside Linux , Apache and MySQL , although the P may also refer to Python or Perl or some combination of the three. WAMP packages ( Windows / Apache/ MySQL / PHP) and MAMP packages ( Macintosh / Apache / MySQL / PHP) are also available. PHP umumnya digunakan sebagai P dalam bundel bersama Linux , Apache dan MySQL , meskipun P juga dapat merujuk pada Python atau Perl atau beberapa kombinasi dari ketiganya. WAMP paket ( Windows / Apache / MySQL / PHP) dan MAMP paket ( Macintosh / Apache / MySQL / PHP) juga tersedia.

As of April 2007, over 20 million Internet domains had web services hosted on servers with PHP installed and mod_php was recorded as the most popular Apache HTTP Server module. [ 36 ] Significant websites are written in PHP including the user-facing portion of Facebook , [ 37 ] Wikipedia ( MediaWiki ), [ 38 ] Digg , [ 39 ] Joomla , eZ Publish , WordPress , [ 40 ] Drupal [ 41 ] and Moodle . [ 42 ] Pada April 2007, lebih dari 20 juta domain Internet telah layanan web host pada server dengan PHP terinstal dan mod_php tercatat sebagai yang paling populer Server HTTP Apache modul. [36] Penting situs web yang ditulis dalam PHP termasuk menghadap bagian pengguna dapat , [37] Wikipedia ( MediaWiki ), [38] Digg , [39] Joomla , EZ Publish , Wordpress , [40] Drupal [41] dan Moodle . [42]

Keamanan

The National Vulnerability Database maintains a list of vulnerabilities found in computer software. The Kerentanan Nasional Database menyimpan daftar kerentanan ditemukan di perangkat lunak komputer. The overall proportion of PHP-related vulnerabilities on the database amounted to: 20% in 2004, 28% in 2005, 43% in 2006, 36% in 2007, 35% in 2008, and 30% in 2009. [ 43 ] Most of these PHP-related vulnerabilities can be exploited remotely: they allow attackers to steal or destroy data from data sources linked to the webserver (such as an SQL database ), send spam or contribute to DoS attacks using malware , which itself can be installed on the vulnerable servers. Proporsi keseluruhan yang berhubungan dengan kerentanan PHP pada database sebesar: 20% pada tahun 2004, 28% di tahun 2005, 43% di tahun 2006, 36% pada tahun 2007, 35% pada tahun 2008, dan 30% pada tahun 2009. [43] Sebagian besar ini terkait dengan kerentanan PHP dapat dieksploitasi dari jarak jauh: mereka memungkinkan penyerang untuk mencuri atau menghancurkan data dari sumber data yang terkait dengan webserver (seperti SQL database ), mengirim spam atau berkontribusi pada serangan DoS menggunakan malware , yang dengan sendirinya dapat diinstal pada rentan server.

These vulnerabilities are caused mostly by not following best practice programming rules: technical security flaws of the language itself or of its core libraries are not frequent (23 in 2008, about 1% of the total). [ 44 ] [ 45 ] Recognizing that programmers cannot be trusted, some languages include taint checking to detect automatically the lack of input validation which induces many issues. Kerentanan ini disebabkan sebagian besar dengan tidak mengikuti aturan pemrograman praktek terbaik: kelemahan keamanan teknis dari bahasa itu sendiri atau dari perpustakaan inti tidak sering (23 tahun 2008, sekitar 1% dari total). [44] [45] Menyadari bahwa programmer tidak bisa dipercaya, beberapa bahasa termasuk noda pemeriksaan untuk mendeteksi secara otomatis kurangnya validasi input yang menginduksi banyak masalah. Such a feature is being developed for PHP, [ 46 ] but its inclusion in a release has been rejected several times in the past. [ 47 ] [ 48 ] Fitur tersebut sedang dikembangkan untuk PHP, [46] tetapi dimasukkan dalam rilis telah ditolak beberapa kali di masa lalu. [47] [48]

Hosting PHP applications on a server requires a careful and constant attention to deal with these security risks. [ 49 ] There are advanced protection patches such as Suhosin and Hardening -Patch, especially designed for web hosting environments. [ 50 ] PHP hosting aplikasi pada server dan konstan memerlukan perhatian untuk menghadapi risiko ini keamanan. [49] Ada perlindungan canggih patch seperti Suhosin dan Hardening -Patch, terutama dirancang untuk lingkungan web hosting.

Script PHP untuk Arsip Artikel Berdasarkan Bulan dan Tahun

Artikel ini merupakan request dari salah satu member rosihanari.net yang bernama Fajar Israwan. Mas Fajar ini menanyakan bagaimana ide cara membuat script PHP untuk menampilkan arsip artikel berdasarkan bulan dan tahun. Sebagai contoh gambarannya, seperti halnya yang muncul di WordPress. Pada blog saya ini juga ada, yaitu pada bagian Archives yang terletak di sidebar sebelah kanan.

Apabila kita menggunakan WordPress atau Blogger, tentu untuk membuat arsip dalam bentuk bulan dan tahun tentunya tidak menjadi masalah karena hanya menggunakan widget, selesai… Namun bagaimana bila kita ingin membuatnya di CMS buatan kita sendiri?

Konsep kerja dari list arsip berdasarkan bulan dan tahun adalah, bila salah satu bulan dan tahun ini diklik, maka akan menampilkan list artikel yang diposting pada bulan dan tahun tersebut. Paham ya maksudnya.. :-) Nah… sekarang kita akan coba mencari ide untuk membuatnya.

OK… di sini kita asumsikan Anda sudah bisa membuat interface atau form untuk input artikelnya. Sekarang kita hanya fokuskan ke arsip artikelnya saja.

Misalkan diberikan tabel untuk menyimpan data artikel adalah sbb:

CREATE TABLE article (
id int(11) auto_increment,
title varchar(100),
content text,
author varchar(100),
category int(11),
postdate date,
PRIMARY KEY (id)
)

dengan keterangan: id adalah field untuk menyimpan data id artikel (kita gunakan autoincrement), title menyatakan judul artikel, content adalah isi artikel, author adalah penulis artikel, category digunakan menyimpan id kategori artikel, dan postdate menyimpan tanggal berapa artikel diposting.

Sebagai contoh, misalkan dalam tabel article tersebut telah tersimpan data artikel sbb:

INSERT INTO `article` VALUES ('1', 'Title A', 'Ini adalah konten dari title A', 'Mr. X', '1', '2009-01-13');
INSERT INTO `article` VALUES ('2', 'Title B', 'Ini adalah konten dari title B', 'Mr. Y', '1', '2009-01-15');
INSERT INTO `article` VALUES ('3', 'Title C', 'Ini adalah konten dari title C', 'Mr. X', '2', '2009-02-04');
INSERT INTO `article` VALUES ('4', 'Title D', 'Ini adalah konten dari title D', 'Mr. Y', '2', '2009-02-10');

Selanjutnya bagaimana ide untuk membuat script arsip berdasarkan bulan dan tahun? Idenya adalah yang pertama kita membuat list bulan dan tahunnya terlebih dahulu. Dari data artikel di atas, terlihat bahwa dari keempat artikel tersebut terdapat 2 buah list bulan dan tahun, yaitu pada bulan Januari 2009 dan Pebruari 2009. Nah… harapan kita, nantinya dalam script akan muncul list sbb:

January 2009
February 2009

Kalau kita klik ‘January 2009′ maka akan muncul list artikel yang diposting pada bulan dan tahun tersebut, dalam hal ini artikel ber ID 1 dan 2. Demikian pula kalau yang diklik adalah ‘February 2009′.

OK… untuk membuat list bulan dan tahun di atas, sebenarnya kita hanya main di SQL Query saja dengan memanfaatkan function date_format(). Data apa yang diolah menggunakan function tersebut? Ya.. data yang diolah adalah pada field POSTDATE. Berikut ini adalah query SQL untuk menampilkan bulan dan tahun.

SELECT DISTINCT date_format(postdate, '%M %Y') FROM article

Bila query di atas Anda jalankan di MySQL, maka akan muncul list seperti di atas. Di sini ‘%M %Y’ merupakan format untuk tanggal yang akan ditampilkan, dengan %M menyatakan nama bulan dalam bentuk kata January s.d December dan %Y menyatakan format tahun dalam 4 digit.

Sekarang kita implementasikan query di atas ke dalam script PHP. Berikut ini scriptnya:

arsip.php


mysql_connect("dbhost", "dbuser", "dbpass");
mysql_select_db("dbname");

$query = "SELECT DISTINCT date_format(postdate, '%M %Y') as bulantahun FROM article";
$hasil = mysql_query($query);
echo "
    ";
    while ($data = mysql_fetch_array($hasil))
    {
    echo "
  • ".$data['bulantahun']."
  • ";
    }
    echo "
";

?>

OK… apabila script arsip.php di atas dijalankan, maka akan muncul list bulan dan tahun namun belum ada linknya. Padahal menurut skenario kita, list bulan dan tahun ini dapat diklik. Apabila diklik maka akan muncul daftar artikel yang diposting pada bulan dan tahun tersebut. Oleh karena itu kita harus membuat linknya pada script arsip.php di atas. Nah… misalkan link tersebut kita arahkan ke viewarsip.php. Sehingga script arsip.php harus diubah menjadi sbb:

arsip.php


mysql_connect("dbhost", "dbuser", "dbpass");
mysql_select_db("dbname");

$query = "SELECT DISTINCT date_format(postdate, '%M %Y') as bulantahun FROM article";
$hasil = mysql_query($query);
echo "";

?>

Apakah script di atas sudah selesai? Belum ternyata. Sekarang yang menjadi pertanyaan adalah, bagaimana mengkaitkan antara list bulan dan tahun dengan linknya. Kaitan ini digunakan untuk menentukan artikel apa yang akan muncul dalam viewarsip.php bila diklik salah satu bulan dan tahun. Sehingga dalam link hendaknya diberikan suatu parameter yang menyatakan bulan dan tahunnya. Sekarang kita coba tambahkan parameter dalam linknya.

arsip.php


mysql_connect("dbhost", "dbuser", "dbpass");
mysql_select_db("dbname");

$query = "SELECT DISTINCT date_format(postdate, '%M %Y') as bulantahun FROM article";
$hasil = mysql_query($query);
echo "";

?>

OK.. bila script arsip.php yang telah diperbaiki di atas dijalankan di browser maka sudah muncul link yang terkait dengan masing-masing list bulan dan tahun. Proses berikutnya kita buat script viewarsip.php. Script ini akan menampilkan daftar artikel yang diposting pada bulan dan tahun yang diklik pada arsip.php.

Bagaimana ide membuat viewarsip.php ini? Ya… kita gunakan saja query SQL untuk menampilkan data artikel yang bulan dan tahun postingnya bersesuaian. Nah… parameter yang diberikan pada link nantinya kita gunakan pada querynya untuk memfilter artikel yang sesuai bulan dan tahunnya.

viewarsip.php


$blnth = $_GET['blnth']; // membaca bulan dan tahun dari parameter link

mysql_connect("dbhost", "dbuser", "dbpass");
mysql_select_db("dbname");

// query SQL untuk menampilkan artikel berdasarkan bulan dan tahun
// yang diambil dari parameter link

$query = "SELECT * FROM article WHERE date_format(postdate, '%M %Y') = '$blnth'";
$hasil = mysql_query($query);
while ($data = mysql_fetch_array($hasil))
{
echo "

".$data['title']."

";
echo "

Penulis : ".$data['author']."

";
echo "

Diposting pada tanggal : ".$data['postdate']."

";
echo "

".$data['content']."

";
}
?>

Nah… sudah jadi deh.

Pada script viewarsip.php di atas, seluruh isi artikel termasuk kontennya akan ditampilkan semua. Mungkin alangkah lebih baik jika artikel ditampilkan tidak seluruhnya, namun hanya sebagian saja, misalnya title, author, postdatenya dan mungkin sedikit intro dari artikelnya. Trus di bawahnya terdapat link misalkan ‘READ MORE‘, atau ‘BACA SELENGKAPNYA‘. Nah… apabila link tersebut diklik akan muncul full articlenya. Untuk yang ini, silakan Anda coba sendiri ya…. Masa’ semuanya harus saya :-) Sebagai petunjuk saja untuk membuat seperti ini, nantinya Anda gunakan ID artikel sebagai parameter link pada READ MORE nya. Mengapa menggunakan ID artikel? Ya… karena ID artikel ini pembeda yang unik dari setiap artikel. ID artikel tersebut yang nantinya diproses di query nya untuk menampilkan detail artikel yang akan dibaca. Konsepnya hampir sama dengan yang saya berikan di atas.

OK… met mencoba ya…

Open Source