variabel siap pakai pada php

87
Variabel Siap Pakai pada PHP Selain variabel yang kita tentukan sendiri, PHP menyediakan variabel yang berisi data-data yang bisa kita pakai. Variabel tersebut berisi data-data terkait server dan data yang tersimpan di browser user yang dikirimkan saat request. Untuk mengakses data tersebut, caranya tinggal memanggilnya dengan perintah: $_SERVER ['VARIABLE' ]; Dan inilah variabel-variabelnya beserta fungsinya masing-masing: ‘PHP_SELF’ Nama file yang digunakan oleh script, relative kepada domain root. Contohnya, $_SERVER['PHP_SELF'] dalam script dengan alamat http://example.com/test.php/foo.bar akan menghasilkan /test.php/foo.bar. ‘SERVER_ADDR’ IP Address server dimana script tersebut dijalankan. ‘SERVER_NAME’ Nama server tempat dijalankan script PHP. ‘SERVER_PROTOCOL’ Informasi Protokol yang dipergunakan untuk request, contoh: ‘HTTP/1.0'; ‘REQUEST_METHOD’ Metode rquest yang dipergunakan untuk mengakses; contoh: ‘GET’, ‘HEAD’, ‘POST’, ‘PUT’. ‘REQUEST_TIME’ Waktu dimulainya request. Ada sejak PHP 5.1.0. It is float with microseconds since PHP 5.4.0. ‘QUERY_STRING’ Query string, jika ada ‘DOCUMENT_ROOT’ The document root directory under which the current script is executing, as defined in the server’s configuration file. ‘HTTP_ACCEPT’ Contents of the Accept: header from the current request, if there is one. ‘HTTP_ACCEPT_CHARSET’ Contents of the Accept-Charset: header from the current request, if there is one. Example: ‘iso-8859-1,*,utf-8'. ‘HTTP_ACCEPT_ENCODING’ Contents of the Accept-Encoding: header from the current request, if there is one. Example: ‘gzip’. ‘HTTP_ACCEPT_LANGUAGE’ Contents of the Accept-Language: header from the current request, if there is one. Example: ‘en’.

Upload: terasi

Post on 08-Aug-2015

285 views

Category:

Documents


3 download

TRANSCRIPT

Page 1: Variabel Siap Pakai Pada PHP

Variabel Siap Pakai pada PHPSelain variabel yang kita tentukan sendiri, PHP menyediakan variabel yang berisi data-data yang bisa kita pakai. Variabel tersebut berisi data-data terkait server dan data yang tersimpan di browser user yang dikirimkan saat request.Untuk mengakses data tersebut, caranya tinggal memanggilnya dengan perintah:$_SERVER['VARIABLE'];  Dan inilah variabel-variabelnya beserta fungsinya masing-masing:

‘PHP_SELF’Nama file yang digunakan oleh script, relative kepada domain root. Contohnya, $_SERVER['PHP_SELF'] dalam script dengan alamat http://example.com/test.php/foo.bar akan menghasilkan /test.php/foo.bar.

‘SERVER_ADDR’IP Address server dimana script tersebut dijalankan.

‘SERVER_NAME’Nama server tempat dijalankan script PHP.

‘SERVER_PROTOCOL’Informasi Protokol yang dipergunakan untuk request, contoh: ‘HTTP/1.0';

‘REQUEST_METHOD’Metode rquest yang dipergunakan untuk mengakses; contoh:  ‘GET’, ‘HEAD’, ‘POST’, ‘PUT’.

‘REQUEST_TIME’Waktu dimulainya request. Ada sejak  PHP 5.1.0. It is float with microseconds since PHP 5.4.0.

‘QUERY_STRING’Query string, jika ada

‘DOCUMENT_ROOT’The document root directory under which the current script is executing, as defined in the server’s configuration file.

‘HTTP_ACCEPT’Contents of the Accept: header from the current request, if there is one.

‘HTTP_ACCEPT_CHARSET’Contents of the Accept-Charset: header from the current request, if there is one. Example: ‘iso-8859-1,*,utf-8'.

‘HTTP_ACCEPT_ENCODING’Contents of the Accept-Encoding: header from the current request, if there is one. Example: ‘gzip’.

‘HTTP_ACCEPT_LANGUAGE’Contents of the Accept-Language: header from the current request, if there is one. Example: ‘en’.

‘HTTP_CONNECTION’Contents of the Connection: header from the current request, if there is one. Example: ‘Keep-Alive’.

‘HTTP_HOST’Contents of the Host: header from the current request, if there is one.

‘HTTP_REFERER’

Page 2: Variabel Siap Pakai Pada PHP

The address of the page (if any) which referred the user agent to the current page. This is set by the user agent. Not all user agents will set this, and some provide the ability to modify HTTP_REFERER as a feature. In short, it cannot really be trusted.

‘HTTP_USER_AGENT’Contents of the User-Agent: header from the current request, if there is one. This is a string denoting the user agent being which is accessing the page. A typical example is: Mozilla/4.5 [en] (X11; U; Linux 2.2.9 i586). Among other things, you can use this value with get_browser() to tailor your page’s output to the capabilities of the user agent.

‘HTTPS’Set to a non-empty value if the script was queried through the HTTPS protocol.Note: Note that when using ISAPI with IIS, the value will be off if the request was not made through the HTTPS protocol.

‘REMOTE_ADDR’The IP address from which the user is viewing the current page.

‘REMOTE_HOST’The Host name from which the user is viewing the current page. The reverse dns lookup is based off the REMOTE_ADDR of the user.Note: Your web server must be configured to create this variable. For example in Apache you’ll need HostnameLookups On inside httpd.conf for it to exist. See also gethostbyaddr().

‘REMOTE_PORT’The port being used on the user’s machine to communicate with the web server.

‘SCRIPT_FILENAME’The absolute pathname of the currently executing script.Note:If a script is executed with the CLI, as a relative path, such as file.php or ../file.php, $_SERVER['SCRIPT_FILENAME'] will contain the relative path specified by the user.

‘SERVER_ADMIN’The value given to the SERVER_ADMIN (for Apache) directive in the web server configuration file. If the script is running on a virtual host, this will be the value defined for that virtual host.

‘SERVER_PORT’The port on the server machine being used by the web server for communication. For default setups, this will be ’80'; using SSL, for instance, will change this to whatever your defined secure HTTP port is.

‘SERVER_SIGNATURE’String containing the server version and virtual host name which are added to server-generated pages, if enabled.

‘PATH_TRANSLATED’Filesystem- (not document root-) based path to the current script, after the server has done any virtual-to-real mapping.Note: As of PHP 4.3.2, PATH_TRANSLATED is no longer set implicitly under the Apache 2 SAPI in contrast to the situation in Apache 1, where it’s set to the same value as the SCRIPT_FILENAME server variable when it’s not populated by Apache. This change was made to comply with the CGI specification that PATH_TRANSLATED should only exist if PATH_INFO is defined. Apache 2 users may use AcceptPathInfo = On inside httpd.conf to define PATH_INFO.

‘SCRIPT_NAME’Contains the current script’s path. This is useful for pages which need to point to themselves. The __FILE__ constant contains the full path and filename of the current (i.e. included) file.‘REQUEST_URI’The URI which was given in order to access this page; for instance, ‘/index.html’.

‘PHP_AUTH_DIGEST’

Page 3: Variabel Siap Pakai Pada PHP

When doing Digest HTTP authentication this variable is set to the ‘Authorization’ header sent by the client (which you should then use to make the appropriate validation).

‘PHP_AUTH_USER’When doing HTTP authentication this variable is set to the username provided by the user.

‘PHP_AUTH_PW’When doing HTTP authentication this variable is set to the password provided by the user

.‘AUTH_TYPE’When doing HTTP authenticated this variable is set to the authentication type.

‘PATH_INFO’Contains any client-provided pathname information trailing the actual script filename but preceding the query string, if available. For instance, if the current script was accessed via the URL http://www.example.com/php/path_info.php/some/stuff?foo=bar, then $_SERVER['PATH_INFO'] would contain /some/stuff.

‘ORIG_PATH_INFO’Original version of ‘PATH_INFO’ before processed by PHP.

Anda bisa mencobanya satu per satu untuk mengetahui seperti apa cara kerjanya. Maaf, belum sempat nerjemahin satu per satu.

Sumber : http://simasdap.blogspot.com/2012/06/variabel-siap-pakai-pada-php.html#ixzz2JGCqA6Zt

Manipulasi Alur Perintah PHPSebagaimana bahasa pemrograman lainnya, PHP memiliki alur perintah dari atas ke bawah. Artinya, PHP akan menjalankan perintah dari baris pertama dan terus turun hingga baris terakhir. Sehingga ada kalanya perintah di bagian atas tidak jadi dilaksanakan gara-gara perintah di bawahnya. Contohnya seperti ini:<!--?php $nama = "Bejo Paijo"; $alamat = "Jemurwonosari - Surabaya"; $nama = "Lutvi Avandi"; echo $nama; ?-->  Berdasarkan perintah diatas, variable $nama pertama diisi dengan nama Bejo Paijo. Namun ternyata di baris ke-5 variable $nama diisi dengan nama Lutvi Avandi. Maka ketika variable itu ditampilkan dengan perintah echo, jadinya yang muncul adalah Lutvi Avandi karena PHP menjalankan perintah yang terakhir.

Kita bisa memanipulasi alur perintah ini dengan menggunakan beberapa perintah. Diantaranya adalah:

IF…ELSE…Manipulasi pertama adalah menggunakan perintah IF…ELSE… Dengan perintah ini, kita bisa membuat alur PHP melompati beberapa baris yang tidak diperlukan. Contohnya seperti ini:<!--?php<br /--> $nama = "Lutvi Avandi";<br> if ($nama == "Lutvi Avandi") {<br>      echo "Lutvi Keren";<br> } else {<br>      echo "Kamu jelek";<br> }<br> 

Page 4: Variabel Siap Pakai Pada PHP

?><br> <!--?pre-->  Saat kode itu dijalankan, maka pertama variable $nama diisi dengan Lutvi Avandi. Lalu di baris berikutnya variabel ini dikenali dengan perintah IF. Jika isi variabelnya adalah Lutvi Avandi, maka tampilkan tulisan menggunakan echo Lutvi Keren. Setelah itu alur akan melompat menuju kurung kurawal dibawah echo Kamu Jelek. Sehingga perintah menampilkan Kamu Jelek diabaikan alias dilompati 

Nah, jika kita mengubah variabel $nama, misalnya seperti ini: <pre name="code" class="php"><!--?php<br /--> $nama = "Bejo Paijo";<br> if ($nama == "Lutvi Avandi") {<br>      echo "Lutvi Keren";<br> } else {<br>      echo "Kamu jelek";<br> }<br> ?><br> <!--?pre--><p></p> <p>Maka yang muncul adalah tulisan Kamu Jelek. Script akan melewatkan perintah echo Lutvi Keren karena saat dideteksi menggunakan if, isi variabelnya bukan Lutvi Avandi.</p> <p>Selain dua opsi IF, kita bisa memberikan lebih dari 2 opsi. Misalnya seperti ini:</p> <pre name="code" class="php"><!--?php<br /--> $nama = "Lutvi Avandi";<br> if ($nama == "Lutvi Avandi") {<br>      echo "Lutvi Keren";<br> } elseif ($nama == "Bejo Paijo") {<br>      echo "Bejo Macho";<br> } else {<br>      echo "Kamu jelek";<br> }<br> ?><br> <!--?pre-->  Dari kode diatas, kita bisa mengenali bahwa, pertama variable $nama diisi nilai. Lalu dengan IF kita cek nilainya. Kalau isinya "Lutvi Avandi", maka tampilkan tulisan Lutvi Keren. Kalau bukan, cek lagi apakah isinya "Bejo Paijo"? Kalau ya, tampilkan tulisan Bejo Macho. Kalau bukan juga, maka tampilkan tulisan "Kamu Jelek".

Kode elseif bisa anda ulang-ulang sebanyak apapun. Seperti ini misalnya: <pre name="code" class="php"><!--?php<br /--> $nomor = 5;<br> if ($nomor == 1) {<br>     echo 'Satu';<br> } elseif ($nomor == 2) {<br>     echo 'Dua';<br> } elseif ($nomor == 3) {<br>     echo 'Tiga';<br> } elseif ($nomor == 4) {<br>     echo 'Empat';<br> } elseif ($nomor == 5) {<br>     echo 'Lima';<br> } else {<br>     echo 'Maaf, saya cuma bisa ngitung sampai lima doang';<br> }<br> ?><br> <!--?pre-->

Sumber : http://simasdap.blogspot.com/2012/06/manipulasi-alur-perintah-php.html#ixzz2JGDOp83N

Page 5: Variabel Siap Pakai Pada PHP

Fungsi Rekursif dan Penerapannya di PHPFungsi merupakan bagian yang tidak terpisahkan dari konsep bahasa pemrograman. Dengan adanya fungsi, akan meningkatkan readibility (kemudahan untuk dibaca), modularity (pemecahan program menjadi modul-modul) dan reusability (dapat digunakan kembali) program kita. Lalu apa itu fungsi rekursif? Singkatnya, fungsi rekursif adalah suatu fungsi yang memanggil dirinya sendiri. Jadi di dalam suatu fungsi rekursif terdapat pemanggilan terhadap dirinya sendiri.

Penasaran? Dalam tutorial kali ini, saya akan menyajikan beberapa contoh sederhana penerapan fungsi rekursif di bahasa pemrograman PHP. Pada akhir tutorial, akan dicontohkan penggunaan fungsi rekursif dalam menampilkan menu bertingkat yang diambil dari database MySQL.

Fungsi rekursif biasanya digunakan untuk menyelesaikan permasalahan yang memiliki keteraturan pola dalam prosesnya, contohnya dalam menyelesaikan soal menampilkan deret bilangan. Salah satu kelebihan penggunaan fungsi rekursif adalah secara penulisan code program akan lebih singkat dan efektif. Namun kekurangannya tidak terlalu efektif secara performa dan waktu eksekusi program karena fungsi rekursif membutuhkan resources memory yang lebih besar. Dan jika tidak hati-hati dalam mendefinisikan proses di dalam fungsi rekursif, seringkali menghasilkan proses yang tidak pernah berhenti (infinitive process).

Menghitung Faktorial dengan RekursifSalah satu contoh yang paling mudah untuk menjelaskan fungsi rekursif adalah faktorial. Kita tahu bahwa dalam matematika, faktorial dari bilangan asli n adalah hasil perkalian antara bilangan bulat positif yang kurang dari atau sama dengan n. Faktorial ditulis sebagai n! dan disebut n faktorial. Sebagai contoh 5! = 5 x 4 x 3 x 2 x 1 = 120.

Page 6: Variabel Siap Pakai Pada PHP

Jika dilihat dari keteraturan pola dalam menghitung nilai faktorial suatu bilangan, maka dapat diselesaikan dengan menggunakan fungsi biasa maupun fungsi rekursif. Perhatikan dan bandingkan kedua program berikut ini dimana program pertama tanpa rekursif dan program kedua dengan rekursif.

faktorial-1.php      

1.

2. <?php

Page 7: Variabel Siap Pakai Pada PHP

3.

4.

5.

6.

7.

8. function faktorial($n=1) {

9.

10.

11. $hasil = 1;

12.

13.

14. for($i=$n; $i >= 1; $i--) {

15.

16.

17. $hasil = $hasil * $i;

18.

19.

20. }

21.

22.

23. return $hasil;

24.

25.

26. }

27.

28.

29.

30.

31.

Page 8: Variabel Siap Pakai Pada PHP

32. echo "10! = ".faktorial(10);

33.

34.

35.

36.

37.

38. ?>

39.

Pada program di atas, proses menghitung nilai faktorial dilakukan dengan menggunakan perulangan. Sedangkan pada program di bawah ini, proses perhitungan dengan menggunakan fungsi rekursif. Di dalam fungsi terdapat pemanggilan fungsi diri sendiri dengan parameter ($n-1) yang dikalikan dengan $n.

faktorial-2.php      

1.

2. <?php

3.

4.

5.

6.

7.

8. function faktorial($n=1) {

9.

10.

11. if ($n==1) {

12.

13.

Page 9: Variabel Siap Pakai Pada PHP

14. return 1;

15.

16.

17. } else {

18.

19.

20. return $n * faktorial ($n-1);

21.

22.

23. }

24.

25.

26. }

27.

28.

29.

30.

31.

32. echo "10! = ".faktorial(10);

33.

34.

35.

36.

37.

38. ?>

39.

Page 10: Variabel Siap Pakai Pada PHP

Pada kedua contoh di atas mungkin tidak terlalu menonjol mengenai manfaat fungsi rekursif. Pada contoh yang lebih kompleks, misalnya melakukan penelusuran suatu graph atau tree, fungsi rekursif akan lebih tepat digunakan dibanding fungsi biasa.

Menampilkan Menu Bertingkat (Tree Menu) dengan Fungsi RekursifMenu atau navigasi merupakan bagian penting dan tidak dapat terpisahkan dari suatu halaman web. Menu yang kompleks biasanya diorganisasikan menjadi beberapa tingkat sedemikian hingga jika digambarkan akan terbentuk seperti diagram pohon. Menu tersebut sering disebut tree-menu. Untuk membuatnya pun sudah banyak dibahas di berbagai website, termasuk di website ini (baca kembali tutorial “Membuat Menu Bertingkat dengan JQuery jQSimpleMenu” dan “Membuat Menu Bertingkat (Tree Menu) dengan Dreamweaver“).

Pada bagian ini, saya tidak akan mengulang kembali bagaimana menggunakan library jQuery atau sejenisnya untuk membuat menu bertingkat, namun lebih pada bagaimana menyimpan menu bertingkat ke dalam database MySQL dan menampilkannya dalam bentuk unordered-list di HTML, tentunya dengan memanfaatkan fungsi rekursif.

Langsung saja, kita ikuti langkah-langkahnya:

Langkah #1. Buat database dan tabel untuk menyimpan informasi menu.

Saya asumsikan Anda sudah bisa membuat database di MySQL, baik dengan tools bantuan seperti PHPMyAdmin, MySQL Front, SQL Yog dll maupun dengan cara manual menggunakan mysql-console. Jika belum, coba pelajari buku gratis MySQL 5 yang dapat didownload di website ini. Setelah database dibuat, sekarang kita buat tabelnya, kurang lebih strukturnya sebagai berikut:

Kolom Tipe Data

Keterangan

kd_menu

int(5) Kode Menu

nm_menu

varchar(50)

Nama menu yang akan ditampilkan

link varchar(50)

Link ke halaman menu

kd_pare int(5) Kode menu yang menjadi induknya. Menu yang paling atas diatur

Page 11: Variabel Siap Pakai Pada PHP

Kolom Tipe Data

Keterangan

nt induk-nya 0.

Jika tabel sudah dibuat, isikan dengan beberapa contoh data. Bagi yang ga mau repot, saya sudah menyediakan perintah SQL untuk membuat tabel dan mengisi contoh datanya. Tinggal dijalankan di mysql client Anda.

Langkah #2. Buat fungsi rekursif dan jalankan.

Pada Program di bawah ini, akan dilakukan pengambilan data secara rekursif dari tabel menu yang sudah dibuat sebelumnya. Selanjutnya data akan ditampilkan dalam bentuk unordered-list (ul) di HTML.

Code block      

1.

2. <?php

3.

4.

5. #koneksi mysql

6.

7.

8. mysql_connect ("localhost","root","");

9.

10.

11. mysql_select_db ("demo");

12.

13.

14. #end koneksi

15.

Page 12: Variabel Siap Pakai Pada PHP

16.

17.

18.

19.

20. function html_menu(&$strmenu="", $parent=0) {

21.

22.

23. $query = "SELECT kd_menu, kd_parent, nm_menu, link

24.

25.

26. FROM menu WHERE kd_parent='$parent'

27.

28.

29. ORDER BY kd_menu";

30.

31.

32. //die ($query);

33.

34.

35. $sql = mysql_query($query);

36.

37.

38.

39.

40.

41. if (mysql_num_rows($sql) > 0) {

42.

43.

44. $strmenu .= '<ul>';

Page 13: Variabel Siap Pakai Pada PHP

45.

46.

47. }

48.

49.

50.

51.

52.

53. // tampilkan anaknya

54.

55.

56. while ($row = mysql_fetch_assoc($sql)) {

57.

58.

59.

60.

61.

62. $strmenu .= "<li>";

63.

64.

65. $strmenu .= sprintf("<a href='%s' title='%s'>%s</a>", $row['link'], $row['nm_menu'],

$row['nm_menu']);

66.

67.

68.

69.

70.

71. //panggil diri sendiri

72.

Page 14: Variabel Siap Pakai Pada PHP

73.

74. html_menu($strmenu, $row['kd_menu']);

75.

76.

77. $strmenu .= "</li>";

78.

79.

80. }

81.

82.

83.

84.

85.

86. if (mysql_num_rows($sql) > 0)

87.

88.

89. $strmenu .= '</ul>';

90.

91.

92.

93.

94.

95. }

96.

97.

98.

99.

100.

101. $strmenu = "";

102.

Page 15: Variabel Siap Pakai Pada PHP

103.

104. html_menu($strmenu, 0);

105.

106.

107. echo $strmenu;

108.

109.

110. ?>

111.

Berikut ini kurang lebih tampilan akhir jika program di atas dijalankan.

Page 16: Variabel Siap Pakai Pada PHP

Tampilan Menu dalam bentuk Unordered-List

Demikian tutorial singkat ini, semoga ada manfaatnya untuk kita semua.

Referensi http://id.wikipedia.org/wiki/Faktorial

http://id.wikipedia.org/wiki/Rekursi

http://www.khabib.staff.ugm.ac.id/index.php? option=com_content&task=view&id=82&Itemid=33

Sumber - Achmatim.Net

Page 17: Variabel Siap Pakai Pada PHP

Sumber : http://simasdap.blogspot.com/2012/06/fungsi-rekursif-dan-penerapannya-di-php.html#ixzz2JGDjH3FB

Membuat Auto Wrap Content pada Tabel dengan FPDF dan PHPSemalem saya dapet pertanyaan dari salah satu pengunjung website ini terkait dengan tutorial membuat laporan PDF dengan FPDF yang pernah saya posting. Dia sudah mencobanya namun saat isi data pada suatu kolom melebihi lebar dari kolom tersebut, maka tulisannya akan kepotong alias ga keliatan. Saya juga sering mendapatkan pertanyaan serupa baik dari beberapa mahasiswa, pengunjung website  achmatim.net , kawan-kawan di facebook maupun follower di twitter. Sehingga saya mencoba untuk membuat contoh program PHP sederhana mengenai membuat auto wrap content pada tabel ini.

Bagi Anda yang belum pernah menggunakan library FPDF sebaiknya mencoba tutorial dasarnya terlebih dahulu sebelum mencoba tutorial ini. Dan untuk menyederhanakan tutorial, data yang ditampilkan diambil dari sebuah array. Anda dapat memodifikasinya dengan mudah jika ingin dikoneksikan dengan sebuah database.Contoh Program PHP pada tutorial ini menggunakan library FPDF versi 1.7 yang dapat Anda download di situs resminya.

Source Code Program

Berikut ini contoh program beserta penjelasan singkatnya:

fpdf-table-auto-wrapping.php      

1.

2. <?php

3.

4.

5.

6.

7.

8. /**

9.

10.

11.  * @author Achmad Solichin

12.

13.

Page 18: Variabel Siap Pakai Pada PHP

14.  * @website http://achmatim.net

15.

16.

17.  * @email [email protected]

18.

19.

20.  */

21.

22.

23. require_once("fpdf17/fpdf.php");

24.

25.

26.

27.

28.

29. class FPDF_AutoWrapTable extends FPDF {

30.

31.

32. private $data = array();

33.

34.

35. private $options = array(

36.

37.

38. 'filename' => '',

39.

40.

41. 'destinationfile' => '',

42.

Page 19: Variabel Siap Pakai Pada PHP

43.

44. 'paper_size'=>'F4',

45.

46.

47. 'orientation'=>'P'

48.

49.

50. );

51.

52.

53.

54.

55.

56. function __construct($data = array(), $options = array()) {

57.

58.

59. parent::__construct();

60.

61.

62. $this->data = $data;

63.

64.

65. $this->options = $options;

66.

67.

68. }

69.

70.

Page 20: Variabel Siap Pakai Pada PHP

71.

72.

73.

74. public function rptDetailData () {

75.

76.

77. //

78.

79.

80. $border = 0;

81.

82.

83. $this->AddPage();

84.

85.

86. $this->SetAutoPageBreak(true,60);

87.

88.

89. $this->AliasNbPages();

90.

91.

92. $left = 25;

93.

94.

95.

96.

97.

98. //header

99.

Page 21: Variabel Siap Pakai Pada PHP

100.

101. $this->SetFont("", "B", 15);

102.

103.

104. $this->MultiCell(0, 12, 'PT. ACHMATIM DOT NET');

105.

106.

107. $this->Cell(0, 1, " ", "B");

108.

109.

110. $this->Ln(10);

111.

112.

113. $this->SetFont("", "B", 12);

114.

115.

116. $this->SetX($left); $this->Cell(0, 10, 'LAPORAN DATA KARYAWAN', 0, 1,'C');

117.

118.

119. $this->Ln(10);

120.

121.

122.

123.

124.

125. $h = 13;

126.

127.

128. $left = 40;

Page 22: Variabel Siap Pakai Pada PHP

129.

130.

131. $top = 80;

132.

133.

134. #tableheader

135.

136.

137. $this->SetFillColor(200,200,200);

138.

139.

140. $left = $this->GetX();

141.

142.

143. $this->Cell(20,$h,'NO',1,0,'L',true);

144.

145.

146. $this->SetX($left += 20); $this->Cell(75, $h, 'NIP', 1, 0, 'C',true);

147.

148.

149. $this->SetX($left += 75); $this->Cell(100, $h, 'NAMA', 1, 0, 'C',true);

150.

151.

152. $this->SetX($left += 100); $this->Cell(150, $h, 'ALAMAT', 1, 0, 'C',true);

153.

154.

155. $this->SetX($left += 150); $this->Cell(100, $h, 'EMAIL', 1, 0, 'C',true);

156.

Page 23: Variabel Siap Pakai Pada PHP

157.

158. $this->SetX($left += 100); $this->Cell(100, $h, 'WEBSITE', 1, 1, 'C',true);

159.

160.

161. //$this->Ln(20);

162.

163.

164.

165.

166.

167. $this->SetFont('Arial','',9);

168.

169.

170. $this->SetWidths(array(20,75,100,150,100,100));

171.

172.

173. $this->SetAligns(array('C','L','L','L','L','L'));

174.

175.

176. $no = 1; $this->SetFillColor(255);

177.

178.

179. foreach ($this->data as $baris) {

180.

181.

182. $this->Row(

183.

184.

185. array ($no++,

Page 24: Variabel Siap Pakai Pada PHP

186.

187.

188. $baris['nip'],

189.

190.

191. $baris['nama'],

192.

193.

194. $baris['alamat'],

195.

196.

197. $baris['email'],

198.

199.

200. $baris['website']

201.

202.

203. ));

204.

205.

206. }

207.

208.

209.

210.

211.

212. }

213.

Page 25: Variabel Siap Pakai Pada PHP

214.

215.

216.

217.

218. public function printPDF () {

219.

220.

221.

222.

223.

224. if ($this->options['paper_size'] == "F4") {

225.

226.

227. $a = 8.3 * 72; //1 inch = 72 pt

228.

229.

230. $b = 13.0 * 72;

231.

232.

233. $this->FPDF($this->options['orientation'], "pt", array($a,$b));

234.

235.

236. } else {

237.

238.

239. $this->FPDF($this->options['orientation'], "pt", $this->options['paper_size']);

240.

241.

242. }

Page 26: Variabel Siap Pakai Pada PHP

243.

244.

245.

246.

247.

248. $this->SetAutoPageBreak(false);

249.

250.

251. $this->AliasNbPages();

252.

253.

254. $this->SetFont("helvetica", "B", 10);

255.

256.

257. //$this->AddPage();

258.

259.

260.

261.

262.

263. $this->rptDetailData();

264.

265.

266.

267.

268.

269. $this->Output($this->options['filename'],$this->options['destinationfile']);

270.

271.

Page 27: Variabel Siap Pakai Pada PHP

272. }

273.

274.

275.

276.

277.

278. private $widths;

279.

280.

281. private $aligns;

282.

283.

284.

285.

286.

287. function SetWidths($w)

288.

289.

290. {

291.

292.

293. //Set the array of column widths

294.

295.

296. $this->widths=$w;

297.

298.

299. }

300.

Page 28: Variabel Siap Pakai Pada PHP

301.

302.

303.

304.

305. function SetAligns($a)

306.

307.

308. {

309.

310.

311. //Set the array of column alignments

312.

313.

314. $this->aligns=$a;

315.

316.

317. }

318.

319.

320.

321.

322.

323. function Row($data)

324.

325.

326. {

327.

328.

329. //Calculate the height of the row

Page 29: Variabel Siap Pakai Pada PHP

330.

331.

332. $nb=0;

333.

334.

335. for($i=0;$i<count($data);$i++)

336.

337.

338. $nb=max($nb,$this->NbLines($this->widths[$i],$data[$i]));

339.

340.

341. $h=10*$nb;

342.

343.

344. //Issue a page break first if needed

345.

346.

347. $this->CheckPageBreak($h);

348.

349.

350. //Draw the cells of the row

351.

352.

353. for($i=0;$i<count($data);$i++)

354.

355.

356. {

357.

Page 30: Variabel Siap Pakai Pada PHP

358.

359. $w=$this->widths[$i];

360.

361.

362. $a=isset($this->aligns[$i]) ? $this->aligns[$i] : 'L';

363.

364.

365. //Save the current position

366.

367.

368. $x=$this->GetX();

369.

370.

371. $y=$this->GetY();

372.

373.

374. //Draw the border

375.

376.

377. $this->Rect($x,$y,$w,$h);

378.

379.

380. //Print the text

381.

382.

383. $this->MultiCell($w,10,$data[$i],0,$a);

384.

385.

Page 31: Variabel Siap Pakai Pada PHP

386. //Put the position to the right of the cell

387.

388.

389. $this->SetXY($x+$w,$y);

390.

391.

392. }

393.

394.

395. //Go to the next line

396.

397.

398. $this->Ln($h);

399.

400.

401. }

402.

403.

404.

405.

406.

407. function CheckPageBreak($h)

408.

409.

410. {

411.

412.

413. //If the height h would cause an overflow, add a new page immediately

414.

Page 32: Variabel Siap Pakai Pada PHP

415.

416. if($this->GetY()+$h>$this->PageBreakTrigger)

417.

418.

419. $this->AddPage($this->CurOrientation);

420.

421.

422. }

423.

424.

425.

426.

427.

428. function NbLines($w,$txt)

429.

430.

431. {

432.

433.

434. //Computes the number of lines a MultiCell of width w will take

435.

436.

437. $cw=&$this->CurrentFont['cw'];

438.

439.

440. if($w==0)

441.

442.

Page 33: Variabel Siap Pakai Pada PHP

443. $w=$this->w-$this->rMargin-$this->x;

444.

445.

446. $wmax=($w-2*$this->cMargin)*1000/$this->FontSize;

447.

448.

449. $s=str_replace("\r",'',$txt);

450.

451.

452. $nb=strlen($s);

453.

454.

455. if($nb>0 and $s[$nb-1]=="\n")

456.

457.

458. $nb--;

459.

460.

461. $sep=-1;

462.

463.

464. $i=0;

465.

466.

467. $j=0;

468.

469.

470. $l=0;

471.

Page 34: Variabel Siap Pakai Pada PHP

472.

473. $nl=1;

474.

475.

476. while($i<$nb)

477.

478.

479. {

480.

481.

482. $c=$s[$i];

483.

484.

485. if($c=="\n")

486.

487.

488. {

489.

490.

491. $i++;

492.

493.

494. $sep=-1;

495.

496.

497. $j=$i;

498.

499.

Page 35: Variabel Siap Pakai Pada PHP

500. $l=0;

501.

502.

503. $nl++;

504.

505.

506. continue;

507.

508.

509. }

510.

511.

512. if($c==' ')

513.

514.

515. $sep=$i;

516.

517.

518. $l+=$cw[$c];

519.

520.

521. if($l>$wmax)

522.

523.

524. {

525.

526.

527. if($sep==-1)

528.

Page 36: Variabel Siap Pakai Pada PHP

529.

530. {

531.

532.

533. if($i==$j)

534.

535.

536. $i++;

537.

538.

539. }

540.

541.

542. else

543.

544.

545. $i=$sep+1;

546.

547.

548. $sep=-1;

549.

550.

551. $j=$i;

552.

553.

554. $l=0;

555.

556.

Page 37: Variabel Siap Pakai Pada PHP

557. $nl++;

558.

559.

560. }

561.

562.

563. else

564.

565.

566. $i++;

567.

568.

569. }

570.

571.

572. return $nl;

573.

574.

575. }

576.

577.

578. } //end of class

579.

580.

581.

582.

583.

584. //contoh penggunaan

585.

Page 38: Variabel Siap Pakai Pada PHP

586.

587. $data = array(

588.

589.

590. array (

591.

592.

593. 'nip' => '0111500382',

594.

595.

596. 'nama' => 'ACHMAD SOLICHIN',

597.

598.

599. 'alamat' => 'Jalan Ciledug Raya No 99, Petukangan Utara, Jakarta Selatan 12260, DKI

Jakarta',

600.

601.

602. 'email' => '[email protected]',

603.

604.

605. 'website' => 'http://achmatim.net'

606.

607.

608. ),

609.

610.

611. array (

612.

Page 39: Variabel Siap Pakai Pada PHP

613.

614. 'nip' => '0411500101',

615.

616.

617. 'nama' => 'CHOTIMATUL MUSYAROFAH',

618.

619.

620. 'alamat' => 'Komplek Japos RT 002/015 Kelurahan Peninggilan, Kec. Ciledug,

Tangerang',

621.

622.

623. 'email' => '[email protected]',

624.

625.

626. 'website' => 'http://contohprogram.info'

627.

628.

629. ),

630.

631.

632. array (

633.

634.

635. 'nip' => '1111500200',

636.

637.

638. 'nama' => 'MUHAMMAD LINTANG',

639.

Page 40: Variabel Siap Pakai Pada PHP

640.

641. 'alamat' => 'Jl. Raya Caplin, Kec. Ciledug, Tangerang, Banten',

642.

643.

644. 'email' => '[email protected]',

645.

646.

647. 'website' => 'http://ebook.achmatim.net'

648.

649.

650. )

651.

652.

653. );

654.

655.

656.

657.

658.

659. //pilihan

660.

661.

662. $options = array(

663.

664.

665. 'filename' => '', //nama file penyimpanan, kosongkan jika output ke browser

666.

667.

668. 'destinationfile' => '', //I=inline browser (default), F=local file, D=download

Page 41: Variabel Siap Pakai Pada PHP

669.

670.

671. 'paper_size'=>'F4', //paper size: F4, A3, A4, A5, Letter, Legal

672.

673.

674. 'orientation'=>'P' //orientation: P=portrait, L=landscape

675.

676.

677. );

678.

679.

680.

681.

682.

683. $tabel = new FPDF_AutoWrapTable($data, $options);

684.

685.

686. $tabel->printPDF();

687.

688.

689. ?>

690.

Penjelasan singkat program:

Baris 8. Menyertakan library FPDF. Pada tutorial ini, menggunakan library FPDF versi 1.7

dan diletakkan di folder /fpdf17

Baris 10-197. Mendefinisikan class FPDF_AutoWrapTable yang merupakan turunan dari

class FPDF.

Page 42: Variabel Siap Pakai Pada PHP

Baris 11-17. Mendeklarasikan variabel $data berisi data yang akan ditampilkan dan

$options berisi beberapa opsi tampilan PDF seperti ukuran kertas dan orientasi kertas.

Baris 19-23. Konstruktor dari class yang menangkap 2 parameter yaitu $data dan $options

Baris 34-40. Mengatur header / judul laporan, termasuk ukuran font (baris 35 dan 38)

Baris 43-54. Mengatur judul tabel (kolom-kolom tabel) termasuk teks judul, lebar kolom dan

perataan kolom.

Baris 57-70. Menampilkan data tabel dengan memanggil fungsi Row(). Pada baris 58 diatur

lebar untuk setiap kolom dan pada baris 59 diatur perataan untuk setiap kolom.

Baris 75-93. Fungsi untuk menggenerate output PDF.

Baris 200-222. Setting data yang akan ditampilkan. Jika ingin dikoneksikan dengan

database, ganti baris ini dengan perintah untuk mengambil data.

Baris 232-233. Pembentukan object class FPDF_AutoWrapTable dan pemanggilan fungsi

untuk meng-generate file PDF.Hasil dari program tersebut kurang lebih sebagai berikut:

Page 43: Variabel Siap Pakai Pada PHP

Download dan Demo Program

Klik disini untuk mendownload  contoh program diatas beserta library FPDF versi 1.7

Klik disini  untuk melihat demo program di atas.

Menampilkan Data MySQL ke PDF

Pada contoh program di atas, saya menggunakan data berupa array yang diisikan di dalam program. Anda bisa saja menggantinya dengan data yang berasal dari database seperti MySQL. Dan berhubung cukup banyak pengunjung yang bertanya mengenai bagaimana jika ingin menampilkan data dari database ke PDF, saya buatkan contoh programnya di bawah ini. Jangan lupa, siapkan terlebih dahulu database dan tabel yang diperlukan (lihat penjelasan di code program).

Code block      

1.

2. <?php

3.

4.

5.

6.

7.

8. /**

9.

10.

11.  * @author Achmad Solichin

12.

13.

14.  * @website http://achmatim.net

15.

16.

17.  * @email [email protected]

18.

Page 44: Variabel Siap Pakai Pada PHP

19.

20.  */

21.

22.

23. require_once("fpdf17/fpdf.php");

24.

25.

26.

27.

28.

29. class FPDF_AutoWrapTable extends FPDF {

30.

31.

32. private $data = array();

33.

34.

35. private $options = array(

36.

37.

38. 'filename' => '',

39.

40.

41. 'destinationfile' => '',

42.

43.

44. 'paper_size'=>'F4',

45.

46.

Page 45: Variabel Siap Pakai Pada PHP

47. 'orientation'=>'P'

48.

49.

50. );

51.

52.

53.

54.

55.

56. function __construct($data = array(), $options = array()) {

57.

58.

59. parent::__construct();

60.

61.

62. $this->data = $data;

63.

64.

65. $this->options = $options;

66.

67.

68. }

69.

70.

71.

72.

73.

74. public function rptDetailData () {

75.

Page 46: Variabel Siap Pakai Pada PHP

76.

77. //

78.

79.

80. $border = 0;

81.

82.

83. $this->AddPage();

84.

85.

86. $this->SetAutoPageBreak(true,60);

87.

88.

89. $this->AliasNbPages();

90.

91.

92. $left = 25;

93.

94.

95.

96.

97.

98. //header

99.

100.

101. $this->SetFont("", "B", 15);

102.

103.

104. $this->MultiCell(0, 12, 'PT. ACHMATIM DOT NET');

Page 47: Variabel Siap Pakai Pada PHP

105.

106.

107. $this->Cell(0, 1, " ", "B");

108.

109.

110. $this->Ln(10);

111.

112.

113. $this->SetFont("", "B", 12);

114.

115.

116. $this->SetX($left); $this->Cell(0, 10, 'LAPORAN DATA KARYAWAN', 0, 1,'C');

117.

118.

119. $this->Ln(10);

120.

121.

122.

123.

124.

125. $h = 13;

126.

127.

128. $left = 40;

129.

130.

131. $top = 80;

132.

Page 48: Variabel Siap Pakai Pada PHP

133.

134. #tableheader

135.

136.

137. $this->SetFillColor(200,200,200);

138.

139.

140. $left = $this->GetX();

141.

142.

143. $this->Cell(20,$h,'NO',1,0,'L',true);

144.

145.

146. $this->SetX($left += 20); $this->Cell(75, $h, 'NIP', 1, 0, 'C',true);

147.

148.

149. $this->SetX($left += 75); $this->Cell(100, $h, 'NAMA', 1, 0, 'C',true);

150.

151.

152. $this->SetX($left += 100); $this->Cell(150, $h, 'ALAMAT', 1, 0, 'C',true);

153.

154.

155. $this->SetX($left += 150); $this->Cell(100, $h, 'EMAIL', 1, 0, 'C',true);

156.

157.

158. $this->SetX($left += 100); $this->Cell(100, $h, 'WEBSITE', 1, 1, 'C',true);

159.

160.

Page 49: Variabel Siap Pakai Pada PHP

161. //$this->Ln(20);

162.

163.

164.

165.

166.

167. $this->SetFont('Arial','',9);

168.

169.

170. $this->SetWidths(array(20,75,100,150,100,100));

171.

172.

173. $this->SetAligns(array('C','L','L','L','L','L'));

174.

175.

176. $no = 1; $this->SetFillColor(255);

177.

178.

179. foreach ($this->data as $baris) {

180.

181.

182. $this->Row(

183.

184.

185. array ($no++,

186.

187.

188. $baris['nip'],

189.

Page 50: Variabel Siap Pakai Pada PHP

190.

191. $baris['nama'],

192.

193.

194. $baris['alamat'],

195.

196.

197. $baris['email'],

198.

199.

200. $baris['website']

201.

202.

203. ));

204.

205.

206. }

207.

208.

209.

210.

211.

212. }

213.

214.

215.

216.

217.

Page 51: Variabel Siap Pakai Pada PHP

218. public function printPDF () {

219.

220.

221.

222.

223.

224. if ($this->options['paper_size'] == "F4") {

225.

226.

227. $a = 8.3 * 72; //1 inch = 72 pt

228.

229.

230. $b = 13.0 * 72;

231.

232.

233. $this->FPDF($this->options['orientation'], "pt", array($a,$b));

234.

235.

236. } else {

237.

238.

239. $this->FPDF($this->options['orientation'], "pt", $this->options['paper_size']);

240.

241.

242. }

243.

244.

245.

246.

Page 52: Variabel Siap Pakai Pada PHP

247.

248. $this->SetAutoPageBreak(false);

249.

250.

251. $this->AliasNbPages();

252.

253.

254. $this->SetFont("helvetica", "B", 10);

255.

256.

257. //$this->AddPage();

258.

259.

260.

261.

262.

263. $this->rptDetailData();

264.

265.

266.

267.

268.

269. $this->Output($this->options['filename'],$this->options['destinationfile']);

270.

271.

272. }

273.

274.

275.

276.

Page 53: Variabel Siap Pakai Pada PHP

277.

278. private $widths;

279.

280.

281. private $aligns;

282.

283.

284.

285.

286.

287. function SetWidths($w)

288.

289.

290. {

291.

292.

293. //Set the array of column widths

294.

295.

296. $this->widths=$w;

297.

298.

299. }

300.

301.

302.

303.

304.

Page 54: Variabel Siap Pakai Pada PHP

305. function SetAligns($a)

306.

307.

308. {

309.

310.

311. //Set the array of column alignments

312.

313.

314. $this->aligns=$a;

315.

316.

317. }

318.

319.

320.

321.

322.

323. function Row($data)

324.

325.

326. {

327.

328.

329. //Calculate the height of the row

330.

331.

332. $nb=0;

333.

Page 55: Variabel Siap Pakai Pada PHP

334.

335. for($i=0;$i<count($data);$i++)

336.

337.

338. $nb=max($nb,$this->NbLines($this->widths[$i],$data[$i]));

339.

340.

341. $h=10*$nb;

342.

343.

344. //Issue a page break first if needed

345.

346.

347. $this->CheckPageBreak($h);

348.

349.

350. //Draw the cells of the row

351.

352.

353. for($i=0;$i<count($data);$i++)

354.

355.

356. {

357.

358.

359. $w=$this->widths[$i];

360.

361.

Page 56: Variabel Siap Pakai Pada PHP

362. $a=isset($this->aligns[$i]) ? $this->aligns[$i] : 'L';

363.

364.

365. //Save the current position

366.

367.

368. $x=$this->GetX();

369.

370.

371. $y=$this->GetY();

372.

373.

374. //Draw the border

375.

376.

377. $this->Rect($x,$y,$w,$h);

378.

379.

380. //Print the text

381.

382.

383. $this->MultiCell($w,10,$data[$i],0,$a);

384.

385.

386. //Put the position to the right of the cell

387.

388.

389. $this->SetXY($x+$w,$y);

390.

Page 57: Variabel Siap Pakai Pada PHP

391.

392. }

393.

394.

395. //Go to the next line

396.

397.

398. $this->Ln($h);

399.

400.

401. }

402.

403.

404.

405.

406.

407. function CheckPageBreak($h)

408.

409.

410. {

411.

412.

413. //If the height h would cause an overflow, add a new page immediately

414.

415.

416. if($this->GetY()+$h>$this->PageBreakTrigger)

417.

418.

Page 58: Variabel Siap Pakai Pada PHP

419. $this->AddPage($this->CurOrientation);

420.

421.

422. }

423.

424.

425.

426.

427.

428. function NbLines($w,$txt)

429.

430.

431. {

432.

433.

434. //Computes the number of lines a MultiCell of width w will take

435.

436.

437. $cw=&$this->CurrentFont['cw'];

438.

439.

440. if($w==0)

441.

442.

443. $w=$this->w-$this->rMargin-$this->x;

444.

445.

446. $wmax=($w-2*$this->cMargin)*1000/$this->FontSize;

447.

Page 59: Variabel Siap Pakai Pada PHP

448.

449. $s=str_replace("\r",'',$txt);

450.

451.

452. $nb=strlen($s);

453.

454.

455. if($nb>0 and $s[$nb-1]=="\n")

456.

457.

458. $nb--;

459.

460.

461. $sep=-1;

462.

463.

464. $i=0;

465.

466.

467. $j=0;

468.

469.

470. $l=0;

471.

472.

473. $nl=1;

474.

475.

Page 60: Variabel Siap Pakai Pada PHP

476. while($i<$nb)

477.

478.

479. {

480.

481.

482. $c=$s[$i];

483.

484.

485. if($c=="\n")

486.

487.

488. {

489.

490.

491. $i++;

492.

493.

494. $sep=-1;

495.

496.

497. $j=$i;

498.

499.

500. $l=0;

501.

502.

503. $nl++;

504.

Page 61: Variabel Siap Pakai Pada PHP

505.

506. continue;

507.

508.

509. }

510.

511.

512. if($c==' ')

513.

514.

515. $sep=$i;

516.

517.

518. $l+=$cw[$c];

519.

520.

521. if($l>$wmax)

522.

523.

524. {

525.

526.

527. if($sep==-1)

528.

529.

530. {

531.

532.

Page 62: Variabel Siap Pakai Pada PHP

533. if($i==$j)

534.

535.

536. $i++;

537.

538.

539. }

540.

541.

542. else

543.

544.

545. $i=$sep+1;

546.

547.

548. $sep=-1;

549.

550.

551. $j=$i;

552.

553.

554. $l=0;

555.

556.

557. $nl++;

558.

559.

560. }

561.

Page 63: Variabel Siap Pakai Pada PHP

562.

563. else

564.

565.

566. $i++;

567.

568.

569. }

570.

571.

572. return $nl;

573.

574.

575. }

576.

577.

578. } //end of class

579.

580.

581.

582.

583.

584. /* contoh penggunaan dengan data diambil dari database mysql

585.

586.

587.  *

588.

589.

Page 64: Variabel Siap Pakai Pada PHP

590.  * 1. buatlah database di mysql

591.

592.

593.  * 2. buatlah tabel 'pegawai' dengan field: nip, nama, alamat, email dan website

594.

595.

596.  * 3. isikan beberapa contoh data ke tabel pegawai tersebut.

597.

598.

599.  *

600.

601.

602.  * */

603.

604.

605.

606.

607.

608. #koneksi ke database (disederhanakan)

609.

610.

611. mysql_connect ("localhost", "root", "");

612.

613.

614. mysql_select_db ("demo");

615.

616.

617.

618.

Page 65: Variabel Siap Pakai Pada PHP

619.

620. #ambil data dari DB dan masukkan ke array

621.

622.

623. $data = array();

624.

625.

626. $query = "SELECT nip, nama, alamat, email, website FROM pegawai ORDER BY nama";

627.

628.

629. $sql = mysql_query ($query);

630.

631.

632. while ($row = mysql_fetch_assoc($sql)) {

633.

634.

635. array_push ($data, $row);

636.

637.

638. }

639.

640.

641.

642.

643.

644. //pilihan

645.

646.

647. $options = array(

Page 66: Variabel Siap Pakai Pada PHP

648.

649.

650. 'filename' => '', //nama file penyimpanan, kosongkan jika output ke browser

651.

652.

653. 'destinationfile' => '', //I=inline browser (default), F=local file, D=download

654.

655.

656. 'paper_size'=>'F4', //paper size: F4, A3, A4, A5, Letter, Legal

657.

658.

659. 'orientation'=>'P' //orientation: P=portrait, L=landscape

660.

661.

662. );

663.

664.

665.

666.

667.

668. $tabel = new FPDF_AutoWrapTable($data, $options);

669.

670.

671. $tabel->printPDF();

672.

673.

674. ?>

675.

Page 67: Variabel Siap Pakai Pada PHP

Referensi Tutorial

Step by Step PHP Membuat Laporan PDF dengan FPDF

Dokumentasi FPDF

Table with Multicells

Sumber : http://simasdap.blogspot.com/2012/06/membuat-auto-wrap-content-pada-tabel.html#ixzz2JGE1Qqy0

Membuat Sistem Login Multi User Dengan Penggunaan Sessions Dalam PHP

Pada kesempatan kali ini saya akan mencoba kembali menulis tutorial mengenai PHP, dan kali ini yang akan kita bahas adalah bagaimana caranya membuat sistem login multi user dalam penggunaan SESSIONS yang tersimpan.

Mungkin masih ada yang bertanya, Apa itu Sessions...?Pengertian menurut saya mengenai Sessions adalah informasi Website yang tersimpan di Server yang terkait dengan Browser yang kita gunakan, dan sessions ini banyak di gunakan dalam proses Login dan Logout pada Applikasi Website.

Lalu informasi seperti apakah yang tersimpan itu...? Tergantung dari si pembuat applikasi tersebut, informasi seperti apakah yang ingin di simpan nya, dan biasanya ini di gunakan untuk menyimpan informasi username, kata sandi dan informasi-informasi lain yang di perlukanya untuk mengakses website tersebut.

Langsung menuju praktek nya...!Dalam contoh ini saya akan membuat sebuah applikasi website yang memiliki 3 golongan user dengan hak akses yang berbeda untuk login ke website tersebut, dan satu di antaranya memiliki akses sebagai Admin website.

Mari kita buat sebuah database nya terlebih dahulu, misalkan bernama login_user

Page 68: Variabel Siap Pakai Pada PHP

 

Setelah database baru bernama login_user di buat, kemudian buatlah  sebuah table pada database tersebut, misalkan bernama tab_user dan nama-nama kolom nya adalah user_id, username, password,user_nama, dan user_akses.

Silahkan gunakan phpMyAdmin untuk membuat nya, dan jangan lupa untuk kolom user_id gunakan sebagai INDEXS database dengan jenis PRIMARY, dan jenis kolom nya dibuat INT dengan penerapanAUTO_INCREMENT supaya nomor urut nya otomatis pada saat menambahkan user baru.

Untuk membedakan hak akses user...!Pada kolom user_akses dibuat dengan type ENUM  dengan isian nilainya misalkan"gratis","premium","admin" hal ini dimaksudkan untuk membedakan hak akses user tersebut saat login ke website, dan nantinya akan kita simpan pada sessions. 

Jika masih bingung dengan pembuatan table database di atas, silahkan copy kan struktur table database di bawah ini, kemudian paste pada database bernama login_user yang telah anda buat pada phpMyAdmin.

Untuk phpMyAdmin dengan InnoDB:---- Struktur dari tabel `tab_user`--

CREATE TABLE IF NOT EXISTS `tab_user` (  `user_id` int(11) NOT NULL AUTO_INCREMENT,  `username` varchar(50) NOT NULL,  `password` varchar(50) NOT NULL,  `user_nama` varchar(50) NOT NULL,  `user_akses` enum('gratis','premium','admin') NOT NULL DEFAULT 'gratis',  UNIQUE KEY `user_id` (`user_id`)) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=1 ;

Page 69: Variabel Siap Pakai Pada PHP

Untuk phpMyAdmin Dengan MyISAM:---- Table structure for table `tab_user`--CREATE TABLE `tab_user` (  `user_id` int(11) NOT NULL auto_increment,  `username` varchar(50) collate latin1_general_ci NOT NULL,  `password` varchar(50) collate latin1_general_ci NOT NULL,  `user_nama` varchar(50) collate latin1_general_ci NOT NULL,  `user_akses` enum('gratis','premium','admin') collate latin1_general_ci NOT NULL default 'gratis',  PRIMARY KEY  (`user_id`)) ENGINE=MyISAM  DEFAULT CHARSET=latin1 COLLATE=latin1_general_ci AUTO_INCREMENT=1;

 

Kemudian setelah selesai membuat struktur database dan kolom-kolom nya, insert kan beberapa contoh user pada database tersebut, misalkan seperti contoh di bawah ini:

user_id

username

password

user_nama

user_akses

1 andi 1234Andi Doang

gratis

2 toto 1234Toto Kuncoro

premium

3 calim 1234 Calim admin

Page 70: Variabel Siap Pakai Pada PHP

Weh

4 widia 1234Widia Yatin

gratis

Jika masih bingung untuk membuat contoh user nya, silahkan masukan 4 data user di bawah ini kepada struktur tabel tab_user yang telah di buat:

---- Dumping data untuk tabel `tab_user`--

INSERT INTO `tab_user` (`user_id`, `username`, `password`, `user_nama`, `user_akses`) VALUES(1, 'andi', '1234', 'Andi Doang', 'gratis'),(2, 'toto', '1234', 'Toto Kuncoro', 'premium'),(3, 'calim', '1234', 'Calim Weh', 'admin'),(4, 'widia', '1234', 'Widia Yatin', 'gratis');

Sekarang kita saat nya membuat script php untuk table 'tab_user' yang telah di buat pada database tersebut, dimulai dari pertama user login menggunakan form login, dan proses penyimpanan sessions apabila user tersebut memiliki akses dan sudah ada pada database tersebut.

Untuk pembuatan applikasi nya, pertama-tama buatlah sebuah script PHP sebagai koneksi ke MYSQLterlebih dahulu, yang nantinya akan kita include kan ke script php untuk pemrosesan login user, kurang lebih seperti ini :

koneksi.php

<?php$server = "localhost";$username = "root";$password = "passwordya";$database = "login_user";

// Koneksi dan memilih database di servermysql_connect($server,$username,$password) or die("Koneksi gagal");mysql_select_db($database) or die("Database tidak bisa dibuka");?>

Kemudian buat lah sebuah formulir untuk login user nya, misalkan pada form.php

<form name='login' action='proses.php' method='post'><table><tr><td>Username</td><td>:</td><td><input type='text' name='username' value='username' /></td></tr>

Page 71: Variabel Siap Pakai Pada PHP

<tr><td>Password</td><td>:</td><td><input type='password' name='password' value='password' /></td></tr></table><input type='submit' name='submit' value="Login!" /></form>   

Script form PHP di atas di include kan pada file index.php.Apabila seorang user akan login dengan mengisi form pada form.php di atas, maka akan di proses oleh script proses.php seperti ini :

proses.php

 <?php    include "koneksi.php";    $username = $_POST['username'];    $password = $_POST['password'];

    $login = mysql_query("SELECT * FROM tab_user WHERE username='$username' AND password='$password'");    $hasil = mysql_num_rows($login);    $r = mysql_fetch_array($login);

    if ($hasil > 0)    {      session_start();      session_register("user_id");      session_register("username");      session_register("password");      session_register("user_akses");      $_SESSION[user_id]     = $r[user_id];      $_SESSION[username]     = $r[username];      $_SESSION[password]     = $r[password];      $_SESSION[user_akses]    = $r[user_akses];      header('location:index.php');    }    else{ echo "LOGIN GAGAL! <br> <a href='index.php'><< Kembali</a>"; }    ?>

Proses di atas, jika user terdapat pada database, maka akan menyimpan 4 sessions yaitu user_id,username, password, dan user_akses. kemudian mengarah kanya kepada script index.php dan jika user tidak ada pada database, maka akan menghasil kan string LOGIN GAGAL!

Coba anda perhatikan SESSIONS yang di register pada script di atas, bahwa kolom user_nama tidak di register kan pada sessions, padahal kolom user_nama di buat pada database di atas...! Sengaja saya buat demikian, karena untuk pembuatan applikasi website tentunya memerlukan detail user yang lebih lengkap, seperti alamat user, email user, nomor hp dan sebagai nya, dan jika kita register kan semua pada sessions, maka proses exsekusi script akan menjadi tambah berat untuk loading data nya.

Untuk menghindari kekurangan di atas, maka di gunakan query_mysql untuk memproses pengambilan data-data yang lain pada database, seperti user_nama, dan data-data user lainya apabila ada dan di perlukan untuk applikasi tersebut, lihat pada script index.php.

Page 72: Variabel Siap Pakai Pada PHP

index.php

<?phpsession_start();include "koneksi.php";error_reporting(0);

if (empty($_SESSION['username']) AND empty($_SESSION['password'])){include"form.php";}else{?><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><title>Login Multi User!</title></head><body>

<?php$sql = mysql_query("SELECT * FROM tab_user WHERE user_id = '$_SESSION[user_id]'");while ($data = mysql_fetch_array($sql)){ $user_nama = $data['user_nama'];}?><h2>Selamat Datang <?php echo "$user_nama"; ?>!</h2><?phpif ($_SESSION[user_akses] == "gratis") { echo "Kamu login sebagai user Gratis! <a href='logout.php' title='Keluar!'>Keluar</a>"; }if ($_SESSION[user_akses] == "premium"){echo "Kamu login sebagai user Premium! <a href='logout.php' title='Keluar!'>Keluar</a>";}if ($_SESSION[user_akses] == "admin"){echo "Kamu login sebagai user Admin! <a href='logout.php' title='Keluar!'>Keluar</a>";}if ($_SESSION[user_akses] == ""){echo "Kamu tidak memiliki akses kesini!";}?>

</body></html><?php } ?>

Untuk menghapus SESSIONS yang tersimpan gunakan fungsi perintah  session_destroy() Lihat pada script logout.php di bawah ini:

logout.php

<?php  session_start();  session_destroy();  echo "<script>document.write('Kamu sudah keluar dari halaman member!'); window.location = 'index.php'</script>";?>

Sumber : http://simasdap.blogspot.com/2012/09/membuat-sistem-login-multi-user-dengan.html#ixzz2JGE945PK

Page 73: Variabel Siap Pakai Pada PHP

eberapa Error di PHP, Penyebabnya, dan Solusinya

Seiring dengan bertambahnya usia, semakin bertambah banyak pula pertanyaan yang disampaikan oleh para pengunjung. Dalam artikel kali ini, saya mencoba merangkum beberapa pertanyaan yang sering ditanyakan oleh pengunjung seputar error yang mereka jumpai dan bagaimana cara mengatasinya.

Bunyi Error:

1.Warning: mysql_fetch_array(): supplied argument is not2.a valid MySQL result resource in ....atau

1.Warning: mysql_num_rows(): supplied argument is not2.a valid MySQL result resource in ...Penyebab:Error di atas disebabkan ada query SQL yang salah. Bisa jadi karena sintaks perintah query SQL nya salah, misalnya kurang tanda petik untuk menyatakan string dll. Selain itu bisa juga terjadi karena nama field dan tabel yang salah penulisannya.Solusi:Coba cek kembali statement query SQL Anda. Pastikan tidak ada lagi kesalahan dalam penulisannya. Untuk proses debugging query SQL (mengetahui letak kesalahannya), Anda bisa

menambahkan statement die(mysql_error()) pada

perintah mysql_query() nya. Contoh:

1.$query = ".....";2.mysql_query($query) or die(mysql_error());3..4..atau silakan baca kembali teknik debugging script php mysql.

Bunyi Error:

1.Warning: session_start() [function.session-start]:2.Cannot send session cookie - headers already sent by3.(output started at ... ) in ... on line ...atau

1.Warning: session_start() [function.session-start]:2.Cannot send session cache limiter - headers already sent3.(output started at ...) in ... on line ...Penyebab:Error di atas biasanya terjadi pada penggunaan session. Sewaktu memberikan

perintah session_start(), terdapat baris perintah di atasnya yang menampilkan string atau kode html ke browser. Sebagai contoh, perhatikan script berikut ini:

1.<?php2.echo "Hallo...";

Page 74: Variabel Siap Pakai Pada PHP

3.session_start();4.?>atau

1.<html>2.<head>3.<title>....</title>4.</head>5.<?php6.session_start();7.?>Bila Anda perhatikan script di atas, maka terdapat string yang di-echo-kan atau terdapat kode

html yang diletakkan sebelum session_start(). Nah… inilah yang menyebabkan error. Selain contoh di atas, error juga bisa muncul dari script yang berbentuk seperti ini

1.<?php2.include "header.php";3.session_start();4.?>Meskipun sebelum session_start() tidak ada echo atau kode html, namun error akan tetap muncul apabila isi dari script header.php terdapat echo atau kode html juga, misalnyaheader.php

1.<?php2.echo "hallo";3.?>Solusi:

Pastikan sebelum perintah session_start() tidak terdapat perintah echo atau kode html apapun.

Bunyi Error:

1.Warning: Cannot modify header information – headers already sent by2.(output started at ...) in ...Penyebab:Peringatan di atas biasanya muncul ketika Anda melakukan redirecting menggunakan perintah

1.header("Location: ...");Seharusnya, sebelum perintah header("Location: ...") tidak boleh ada string apapun yang ditampilkan di browser, meskipun itu kode HTML (sama seperti penyebab error

di session_start() sebelumnya). Sebagai contoh perhatikan script berikut ini:

1.<?php2.echo "<p>Hallo Apa kabar?</p>";3.header("Location: test.php");4.?>

Page 75: Variabel Siap Pakai Pada PHP

Pada script di atas, sebelum perintah header() terdapat string yang ditampilkan ke browser. Inilah yang mengakibatkan muncul peringatan tsb. Lantas bagaimana dengan script berikut ini?

1.<?php2.$a = 10;3.if ($a < 0) echo "Nilai A negatif";4.else header("Location: test.php");5.?>Kira-kira muncul Warning nya gak ya? Jika Anda coba, maka tidak muncul Warning nya

meskipun sebelum header() terdapat string yang ditampilkan ke browser. Mengapa demikian? ya.. meskipun di situ terdapat perintah untuk menampilkan string ke browser,

namun perintah tersebut tidak pernah dijalankan karena nilai $a nya positif.Solusi:

Pastikan sebelum perintah header("Location: ...") tidak ada kode HTML atau

perintah echo apapun. Jika Anda mengincludekan suatu script di

atas header("Location: ...") pastikan dalam script yang diincludekan

tersebut tidak ada kode HTML atau echo.

Bunyi Error:

1.Warning: mysql_connect() [function.mysql-connect]:2.Access denied for user ‘root’@'localhost’ (using password: YES) in ...Penyebab:Error di atas disebabkan karena koneksi yang gagal ke MySQL. Penyebab gagalnya bisa jadi disebabkan nama user atau password yang salah.Solusi:Pastikan username dan password koneksi ke MySQL Anda sudah benar ketika menggunakan

perintah koneksi mysql_connect("namahost", "namauser", "passworduser");

Bunyi Error:

1.Parse error: syntax error, unexpected T_STRING,2.expecting T_OLD_FUNCTION or T_FUNCTION or T_VAR or â€˜}’ in ...Penyebab:Penyebab pastinya, saya kurang mengetahuinya. Namun biasanya ini terjadi karena penggunaan versi PHP yang rendah (versi di bawah PHP 5) untuk menjalankan script PHP yang menggunakan OOP.Solusi:Coba upgrade versi PHP Anda, atau gunakan PHP dengan versi yang lebih tinggi.

Bunyi Error:

1.Parse error: syntax error, unexpected T_ELSE in ...

Page 76: Variabel Siap Pakai Pada PHP

Penyebab:Error tersebut muncul sebagai akibat penulisan sintaks IF … ELSE yang tidak sesuai aturan. Perhatikan contoh penggunaan IF ELSE yang salah di bawah ini

1.<?php2.$a = 5;3.if ($a > 0) $status = "A lebih besar dari 0"4.else ($a < 0) $status = "A lebih kecil dari 0"5.else $status = "A sama dengan 0"6.?>Contoh di atas terdapat kesalahan yaitu setiap akhir statement tidak diberikan tanda titik koma

(;), dan pada bagian else ($a < 0) kurang IF, seharusnya

1.<?php2.$a = 5;3.if ($a > 0) $status = "A lebih besar dari 0";4.else if ($a < 0) $status = "A lebih kecil dari 0";5.else $status = "A sama dengan 0";6.?>Solusi:Pastikan struktur statement yang Anda gunakan berbentuk seperti ini

1.<?php2.if (syarat1) statement1;3.else if (syarat2) statement2;4.else if (syarat3) statement3;5..6..7.else statementX;8.?>atau

01.<?php02.if (syarat1)03.{04.statement;05.statement;06..07..08.}09.else if (syarat2)10.{11.statement;12.statement;13..14..

Page 77: Variabel Siap Pakai Pada PHP

15.}16..17..18.else19.{20.statement;21.statement;22..23..24.}25.?>

Bunyi Error:

1.Fatal error: Call to undefined function: ...Penyebab:Error tersebut disebabkan karena nama function yang digunakan tidak ada atau tidak dikenal

oleh PHP. Jika function tersebut adalah built in function, misalnya str_split() bisa jadi hal ini disebabkan pada versi PHP yang digunakan belum ada function tersebut. Jika function tersebut adalah function buatan sendiri, bisa jadi anda lupa menyisipkan ke dalam script atau meng-include-kannya.Solusi:Jika function yang tidak dikenal adalah built in function, maka lakukan upgrade versi PHP yang lebih tinggi. Sedangkan jika function yang tidak dikenal adalah buatan sendiri, pastikan Anda sudah meng-includekan di dalam scriptnya sehingga bisa dikenal. Contohnya:function.php

1.<?php2.function jumlah($a, $b)3.{4.return $a + $b;5.}6.?>script.php

1.<?php2.include "function.php";3.echo jumlah(9, 10);   // akan menghasilkan 194.?>atauscript.php

1.<?php2.function jumlah($a, $b)3.{4.return $a + $b;5.}6. 

Page 78: Variabel Siap Pakai Pada PHP

7.echo jumlah(9, 10);   // akan menghasilkan 198.?>

Bunyi Error:

1.Parse error: parse error, unexpected $endPenyebab:Error di atas disebabkan karena kurangnya tanda penutup kurung kurawal. Contohnya:

1.<?php2.if ($a > 1)3.{4.echo "Nilai A lebih dari 1";5.?>atau

1.<?php2.while ($a > 1)3.{4..5..6..7.?>Selain itu, bisa pula error tersebut disebabkan karena efek perbedaan penggunaan tanda

pembuka PHP <?php dan <?. Contohnya

01.<?php02.if (syarat)03.{04.statement1;05.statement2;06.?>07. 

08.<?09.statement3;10.statement4;11.}12.?>Perhatikan contoh script di atas, bahwa pada blok statement IF oleh si programmer dipecah menjadi 2 blok, namun perhatikan bahwa untuk blok kedua, tanda pembukanya

menggunakan <? saja. Nah... terkadang suatu server hanya membolehkan tanda pembuka

script PHP menggunakan <?php, sehingga untuk blok kedua tidak dianggap sebagai script,

dan.. akibatnya statement IF nya dianggap tidak ada tanda } penutup. Solusi:Pastikan tanda kurung kurawal penutup tidak lupa menuliskannya. Jika ternyata kasus yang

Page 79: Variabel Siap Pakai Pada PHP

Anda hadapi sama seperti contoh kasus terakhir (perbedaan tanda pembuka script PHP),

konsistenkan penulisan tanda pembukanya menggunakan <?php supaya aman.

Bunyi Error:

1.Parse error: syntax error, unexpected T_STRINGPenyebab:Error tersebut disebabkan karena penggunaan tanda petik (double quote atau single quote) yang tidak tepat untuk menyatakan suatu string. Sebuah string harus diapit oleh dua buah tanda petik. Sebagai contoh:

1.<?php2.$a = "ini sebuah string";3.?>atau

1.<?php2.$a = 'ini sebuah string';3.?>Namun... jika dalam string tersebut terdapat tanda petik lagi, misalkan

1.<?php2.$a = "ini sebuah " string";3.?>atau

1.<?php2.$a = 'ini sebuah ' string';3.?>maka akan terdapat error di atas. Hal yang sama jika Anda menggunakan single quote (tanda petik tunggal).Solusi:Pastikan di dalam sebuah string, anda mengapitnya dengan hanya 2 buah tanda petik saja. Jika

Anda bermaksud menyisipkan tanda petik dalam sebuah string, gunakan tanda \" atau \', contoh

1.<?php2.$a = "ini sebuah \" string";3.?>atau

1.<?php2.$a = 'ini sebuah \' string';3.?>

Bunyi Error:

1.Notice: Undefined index: ...atau

1.Notice: Undefined variable: ...Penyebab:Sebenarnya itu bukan error, namun sekedar peringatan saja bahwa ada variabel atau index array yang belum terdefinisi sebelumnya. Di beberapa versi PHP peringatan tersebut muncul, namun di versi yang lain tidak muncul. Berikut ini contohnya:

Page 80: Variabel Siap Pakai Pada PHP

1.<?php2.if ($a > 0)3.{4.....5.}6.?>Jika kita perhatikan script di atas, variabel $a langsung diberikan statement pengecekan IF,

padahal nilai $a ini tidak ada sebelumnya. Nah... di beberapa versi PHP, akan muncul peringatan

1.Notice: Undefined variable: aNamun, bila nilai $a ini sudah didefinisikan sebelumnya misalnya

1.<?php2.$a = 10;3.if ($a > 0)4.{5.....6.}7.?>maka peringatan di atas tidak akan muncul lagi. Peringatan yang hampir sama juga bisa muncul untuk contoh berikut ini

1.<?php2.if ($_GET['test'] == 0)3.{4.....5.}6.?>yang dikarenakan nilai $_GET['test'] belum terdefinisi sebelumnya atau belum ada nilainya (belum ada request GET untuk parameter 'test').Solusi:Sebenarnya peringatan di atas bisa saja diabaikan karena tidak berpengaruh pada kinerja script atau proses yang terjadi di dalamnya. Namun, jika Anda ingin menghilangkan peringatan tersebut caranya adalah dengan memodifikasi parameter

1.error_reporting  = ...pada file konfigurasi php.ini

Tambahkanlah nilai "& ~E_NOTICE" pada nilai parameternya, contoh:

1.error_reporting  =  E_ALL & ~E_NOTICEMaksud dari parameter di atas adalah, PHP akan menampilkan bunyi error kecuali NOTICE. Jika sudah, silakan merestart Apache nya. 

Bunyi Error:

1.Fatal error: Maximum execution time of ... seconds exceeded in ...Penyebab:Error di atas disebabkan karena lama eksekusi sebuah script PHP telah mencapai batas

Page 81: Variabel Siap Pakai Pada PHP

maksimumnya. Jika Anda menggunakan AppServ atau XAMPP, default maximum execution time nya diset 30 detik. Jika lama eksekusi script yang Anda buat melebihi 30 detik, maka akan muncul error di atas.Solusi:Anda dapat meningkatkan atau menambah max execution time pada file php.ini, dengan cara carilah parameter

1.max_execution_time = ...Tambahlah nilainya, misalnya menjadi 9999 detik, sehingga nilai parameternya menjadi

1.max_execution_time = 9999Selanjutnya, simpan kembali php.ini nya, lalu restart Apachenya.Kalau perlu, lakukan analisis algoritma pada script Anda apabila dirasa tidak efisien sehingga mengakibatkan running time yang lama.

Bunyi Error:Bukan Error sih, tapi kegagalan dalam proses upload file ketika Anda membuat script upload file.Penyebab:Kegagalan dalam proses upload file itu disebabkan oleh ukuran file yang terlalu besar melebihi batas maksimum yang diperbolehkan oleh PHP sesuai di file php.ini.Solusi:Anda dapat mengubah batas maksimum file size untuk upload ini dengan mengubah parameter

1.upload_max_filesize = ...dan

1.post_max_size = ...pada file php.iniBerikut ini contoh pengubahan batas maksimum upload file hingga 80 Mb.

1.upload_max_filesize = 80Mdan

1.post_max_size = 80MJika sudah melakukan pengubahan, lakukan restart Apache nya. Oya, jangan lupa pula untuk menambah komponen input

1.<input type="hidden" name="MAX_FILE_SIZE" value="80000000" />pada form upload nya.Solusi di atas hanya akan bisa menyelesaikan permasalahan upload jika file diupload ke folder atau direktori tertentu yang ada di server. Namun, jika file diupload ke database server, seperti pada artikel lain yang pernah dibahas, maka solusi di atas tidak menyelesaikan masalah karena adanya batasan limit file size pada tipe data yang memungkinkan untuk menyimpan data file, misalnya tipe data blob, medium blob, atau long blob.OK.. mudah-mudahan artikel di atas bisa bermanfaat bagi Anda yang ingin belajar PHP, namun terkendala beberapa macam error yang belum tahu penyebabnya dan solusinya.

Sumber : http://simasdap.blogspot.com/2012/09/beberapa-error-di-php-penyebabnya-dan.html#ixzz2JGEHxrRp

Menggabungkan Beberapa File Dalam PHPJika pada artikel-artikel sebelumnya kita hanya bekerja dengan 1 file saja, kali ini kita akan coba belajar bagaimana bekerja dengan beberapa file. Bagaimanapun, saat anda membangun sebuah script yang rumit, memecah script menjadi beberapa bagian sangatlah membantu anda mengorganisir script anda.

Page 82: Variabel Siap Pakai Pada PHP

Ada 2 fungsi yang bisa kita pakai untuk bekerja dengan beberapa file yaitu include dan include_once. Mari kita coba pelajari keduanya.

INCLUDE

Perintah include kita pakai untuk memanggil file lain untuk dieksekusi di file pemanggilnya. Seperti biasa, kita buat contoh aja yuk. Pertama kita buat file yang akan dipanggil, sebut saja namanya data.php. Isinya seperti ini:<!--?php $anak = array(    array(nama =-->'Bejo', alamat => 'Surabaya', hp => '7837487397493'),    array(nama =>'Paijo', alamat => 'Malang', hp => '0897483743434'),    array(nama =>'Panjul', alamat => 'Jakarta', hp => '3435364364645'),    array(nama =>'Pinah', alamat => 'Medan', hp => '65464565646'),    array(nama =>'Mintul', alamat => 'Samarinda', hp => '045264743775')    ); ?>  

Yup, itu adalah array dari pelajaran kita sebelumnya.. hehehe.. Oke, kemudian di file kedua, kita sebut saja namanya list.php kita buat seperti ini:<!--?php include('data.php'); foreach ($anak as $item) {    echo 'Nama: '.$item[nama]. 'Alamat: '.$item[alamat].' HP: '.$item[hp].'<br/-->'; } ?>  

Jika kita menjalankan list.php maka kita akan mendapatkan hasil yang persis seperti artikel sebelumnya. Bedanya dengan cara ini, kita bisa memanfaatkan data.php untuk file-file lain. Sehingga jika suatu saat data-nya perlu dirubah, kita hanya perlu mengubah file data.php saja dan efeknya akan dipakai di semua file yang mengandung include data.php

Saya sendiri lebih sering memakai ini untuk memasukkan header dan footer suatu web sehingga saya cuma perlu memanggilnya saja untuk page-page baru yang lain.

INCLUDE_ONCE

Seperti namanya, ini persis sebagaimana fungsi include. Tapi include_once kita pakai untuk memanggil file hanya sekali saja. Dengan cara ini, kita bisa mencegah file terpanggil lebih dari sekali. Biasanya kita pakai include_once untuk memanggil file yang mengandung fungsi-fungsi yang kita bangun sendiri atau memanggil file yang berisi koneksi ke database.

Sudah cukup mudah dipahami kan? Selamat mencoba sendiri.

Sumber : http://simasdap.blogspot.com/2012/06/menggabungkan-beberapa-file-dalam-php.html#ixzz2JGENWBnf