BAB 6 : FUNGSI
- Fungsi adalah satu blok kod yang boleh dipanggil untuk melakukan sesuatu proses tertentu.
- Fungsi diistiharkan menggunakan pernyataan function.
Latihan 15 : Penggunaan fungsi
<?php
function kira($kiraan)
{
# pecahan kepada ratus
return number_format($kiraan,0,'.',',');
}
echo kira(123456); # output 123,456
?>
1.1 Membentuk Function
<?php
function namaFunction ($var1,$var2,$var3)
{
Arahan-arahan;
}
?>
1.2 Memanggil Function
<?php
namaFunction ($var1,$var2,$var3);
?>
Contoh ringkas
<?php
selamatDatang();
function selamatDatang()
{
print"Selamat Datang
\n";
print"ke Pusat Pembangunan Maklumat dan Komunikasi
\n";
print"Universiti Putra Malaysia
\n";
}
?>
Menghantar maklumat
<?php
$aplikasi="Sistem XYZ";
selamatDatang("Abu",$aplikasi);
function selamatDatang($nama,$app)
{
print"Selamat Datang $nama
\n";
print" ke aplikasi $app
\n";
print"Universiti Putra Malaysia
\n";
}
?>
Menerima maklumat
<?php
$gaji=1000;
$bil=230;
$baki = kiraBaki($gaji, $bil);
jumlahBersih(kiraBaki($gaji, $bil));
function kiraBaki($a,$b)
{
$simpanan=$a-$b;
return $simpanan;
}
?>
Menghantar maklumat ke fail lain
<?php
function selamatDatang($nama,$app)
{
print"Selamat Datang $nama
\n";
print" ke aplikasi $app
\n";
print"Universiti Putra Malaysia
\n";
}
include('failFunction');
selamatDatang('Abu",$aplikasi);
?>
1.3 Contoh-contoh Function
Membaca fail konfigurasi 'system.php'
<?php
//[Database]
host='xyz.upm.edu.my'; user='user1'; pwd='rahsia'; db='abcdef';
//[Konfig]
tajuk="Aplikasi XYZ"; versi=3.12;
'failFunction.php'
<?php
function bacaKonfigurasi()
{
$ini_array = parse_ini_file("system.php",TRUE);
return $ini_array;
}
<?php
include('failFunction.php');
$SETTING=bacaKonfigurasi();
Mengguna MySQL 'dll.php'
<?php
function connection($host,$ user,$ pswd,$ db)
{
$link = mysql_connect($host, $ user, $ pswd)
or die("Could not connect");
mysql_select_db($db) or die("Could not select database");
return $link;
}
<?php
include('dll.php');
$SETTING=bacaKonfigurasi();
connection(
$SETTING['Database']['host'],
$SETTING['Database']['user'],
$SETTING['Database']['pwd'],
$SETTING['Database']['db']
);
fungsi verifyUserInput
<?php
function verifyUserInput($userInput,$maxlength,$toLower,
$addSlashes,$stripTag,$stripNONnumber,$reserve2)
{
$userInput=trim($userInput);
if($toLower==1)
{ $userInput=strtolower($userInput); }
if($stripTag)
{ $userInput=strip_tags($userInput); }
if($addSlashes)
{ $userInput=addslashes($userInput); }
if($stripNONnumber)
{
$userInput=preg_replace("/\D/","",$userInput);
$userInput=str_replace(" ","",$userInput);
}
if($maxlength)
{ $userInput=substr($userInput,0,$maxlength); }
$userInput=rtrim($userInput);
$userInput=ltrim($userInput);
return $userInput;
}
fungsi selectInput
<?php
function selectInput($SETTING,$outputType,$table,$id,
$disp,$default,$order,$where1,$where2)
{ #$outputType, p=print v=return value
$value="";
if($where1) {$where = "where $where1";} else {$where="";}
if($where2) {$where .= " $where2";} //tambah AND/OR sendiri
if($order) {$order = "order by $order";}
$sql="select $id,$disp from $table $where $order";
$result=executemysql($SETTING,$sql);
while($data=mysql_fetch_array($result))
{
if($data[0] == $default){$check="selected";} else {$check="";}
if($outputType=="p")
{print"<option value=$data[0] $check
style=\"background-Color:#eeffee\">$data[1]\n";}
if($outputType=="v")
{$value.="<option value=$data[0] $check
style=\"background-Color:#eeffee\">$data[1]\n";}
}
if($outputType=="v") {return $value; }
}
?>
checkboxInput()
<?php
function checkboxInput($SETTING,$column,$class,$tableName,$id,
$disp,$namePrefix,$valuePrefix,$default,
$hidden,$where1,$where2,$order,$js)
{
/*
$column = number bermaksud num of column
$default = array of checked item */
if($class) {$class = "class=$class";}
if($where1)
{$where = "where $where1";}
else {$where="";}
if($where2 and $where1) {$where .= " and $where2";}
if($order) {$order = "order by $order";}
$sql="select $id,$disp from $tableName $where $order";
$result=executemysql($SETTING,$sql);
$count=0;
print"<table>\n";
while($data=mysql_fetch_array($result))
{
if(!$hidden OR !in_array($data[0], $hidden))
{
if($default AND in_array($data[0], $default))
{$check="checked";}
else {$check="";}
print "<td align=left $class>"
. "<input type=checkbox name=$namePrefix$data[0] "
. "value=$valuePrefix$data[0] $check $class $js>$data[1]</td>\n";
$count++;
if($count==$column) {print"<tr>"; $count=0;}
}
}
print"</table>\n";
}
?>
borderStart()
<?php
function borderStart($width,$tajuk,$tab,$borderType)
{
$TAB="";
for($aa=1;$aa<=$tab;$aa++){$TAB.="\t";}
list($leftwidth, $leftheight) = getimagesize("image/border/$borderType/1.png");
list($rightwidth, $rightheight) = getimagesize("image/border/$borderType/3.png");
$borderTitleclass="border".$borderType."Title";
$borderTeksclass="border".$borderType."Teks";
if($tajuk){$tajuk="<span class=$borderTitleclass>$tajuk</span><br>";} else{$tajuk="";}
print"
$TAB<table border=0 cellpadding=0 cellspacing=0 align=center width=$width height=100%>
$TAB<tr valign=top height=$leftheight><td width=$leftwidth height=$leftheight background=/image/border/$borderType/1.png></td>
$TAB<td background=/image/border/$borderType/2.png></td>
$TAB<td height=$rightheight width=$rightwidth background=/image/border/$borderType/3.png></td>
$TAB<tr valign=top><td background=/image/border/$borderType/4.png></td>
$TAB<td background=/image/border/$borderType/5.png class=$borderTeksclass>$tajuk
$TAB
\n";
}
?>
borderEnd()
<?php
function borderEnd($class,$text,$tab,$borderType)
{
if($class){$class="class='$class'";}
$TAB="";
for($aa=1;$aa<=$tab;$aa++){$TAB.="\t";}
list($leftwidth, $leftheight) = getimagesize("image/border/$borderType/7.png");
list($rightwidth, $rightheight) = getimagesize("image/border/$borderType/9.png");
print"
$TAB
$TAB</td>
$TAB<td background=/image/border/$borderType/6.png>
$TAB<tr valign=top> |
$TAB<td background=/image/border/$borderType/8.png $class valign=center>$text
$TAB<td background=/image/border/$borderType/9.png border=0 height=$rightheight>
$TAB</table>
\n";
}
?>
GET_REF_kodLANDLINE() & GET_REF_fullmonth($LANG)
<?php
function GET_REF_kodLANDLINE()
{return array('03','04','05','06','07','081','082','083','087','088','089','09','1300','1800');}
function GET_REF_fullmonth($LANG)
{
if($LANG=="en")
return array('', 'January', 'February', 'March', 'April',
'May', 'June', 'July', 'August',
'September', 'October', 'November', 'December');
else
return array('', 'Januari', 'Februari', 'Mac', 'April',
'Mei', 'Jun', 'Julai', 'Ogos',
'September', 'Oktober', 'November', 'Disember');
}
?>
Bab 7.1 : Tatasusunan
- Pembolehubah hanya membawa satu nilai tertentu.
- Berbanding dengan pembolehubah, tatasusunan (arrays) pula membawa nilai lebih daripada satu.
- Penggunaan tatasusunan adalah dalam bentuk array().
- Tatasusunan mengandungi sebaris elemen dimana setiap elemen mempunyai nilai tersendiri.
Bab 7.2 : Contoh tatasusunan
$negara[0] | $negara[1] | $negara[2] | $negara[3] | $negara[4] |
"MY" | "ID" | "SG" | "TH" | "UK" |
Bab 7.3 : Membentuk Tatasusunan
- Cara mudah
<?php $bunga= array("Ros","Orkid","Raya","Tulip");
- Menetapkan terus kedudukan dalam tatasusunan
<?php
$majalah[3]="Dewan Masyarakat";
$majalah[23]="Ujang";
- Menggunakan associative array
<?php
$kereta=array("Proton"=>"Saga","Toyota"=>"Wish",
"Nissan"=>"Livina");
- Mendapatkan dari pembolehubah lain
<?php
$kad_pengenalan = explode ('-', $ic);
Bab 7.3 : Membentuk Tatasusunan
- Menggunakan function PHP
<?php
#tambah elemen dibelakang array
array_push ($pelajar,"Salleh");
#buang elemen dibelakang array
$terkini = array_pop ($pelajar);
#tambah elemen di hadapan array
array_unshift ($pelajar,"Salleh");
#buang elemen di hadapan array
array_shift ($pelajar);
- Menggunakan function PHP-MySQL
<?php
$data=mysql_fetch_array($result);
- Mendapatkan tatasusunan dari fail
<?php
$baris=file("pelajar.txt");
Bab 7.4 : Paparan Tatasusunan
- Berikut merupakan kaedah yang boleh digunakan untuk memaparkan tatasusunan
- Paparan elemen tertentu
<?php
print $majalah[3];
print $kereta["Toyota"];
Menggunakan function PHP
<?php
print_r($namaArray);
Menggunakan foreach
<?php
foreach($namaArray as $a=>$b)
{ print "$b"; }
Bab 7.5 : Tatasusunan Multi-dimensional
- Tatasusunan juga boleh diisikan kebeberapa peringkat
<?php
$kereta= array(
'Proton'=>array('Saga','Iswara','Gen2'),
'Toyota'=>array('Rav4','Wish','Alphard','Estima'),
'Perodua'=>array('Kancil','Kembara','Kelisa')
);
print $kereta['Proton'][2];
print_r($kereta);
Bab 7.6 : Menghapuskan array
<?php
unset ($majalah[3]);
unset ($kereta);
Bab 7.7 : function array PHP
- Selain dari contoh diatas, berikut merupakan function dalaman PHP yang lain untuk PHP
<?php
array_change_key_case, array_chunk, array_combine, array_count_values, array_diff_assoc, array_diff_uassoc,
array_diff, array_fill, array_filter, array_flip, array_intersect_assoc, array_intersect, array_key_exists,
array_keys, array_map, array_merge_recursive, array_merge, array_multisort, array_pad, array_pop, array_push,
array_rand, array_reduce, array_reverse, array_search, array_shift, array_slice, array_splice, array_sum,
array_udiff_assoc, array_udiff_uassoc, array_udiff, array_unique, array_unshift, array_values,
array_walk_recursive, array_walk, array, arsort, asort, compact, count, current, each, end, extract,
in_array, key, krsort, ksort, list, natcasesort, natsort, next, pos, prev, range, reset, rsort,
shuffle, sizeof, sort, uasort, uksort, usort,
Latihan 16 : Penggunaan array
<?php
$x[0] = 'nombor1';
$x = array(1,2,3,4,5,6,7,8,9,10);
foreach ($x as $kunci => $nilai)
{
echo "\$kunci = $kunci | \$nilai = $nilai
";
}
?>
Bab 8 : MANIPULASI FAIL
Selain daripada pangkalan data seperti mySQL, data juga boleh disimpan dalam
fail teks.
Bab 8.1 : Membuka Fail
- Sebelum kita boleh melihat atau mengakses data dalam
sesuatu fail, kita perlu membuka fail tersebut.
- Fungsi fopen() digunakan untuk membuka fail.
- Di dalam fungsi fopen() juga terdapat beberapa mod pilihan iaitu:
Mod | Keterangan |
a |
Membuka fail untuk menambah data. Data akan ditambah
dibaris akhir dalam fail tersebut. Sekiranya fail berkenaan tiada,
maka PHP akan mencipta fail tersebut. |
a+ |
Membuka fail untuk menambah dan membaca data. Data akan
ditambah dibaris akhir dalam fail tersebut. Sekiranya fail
berkenaan tiada, maka PHP akan mencipta fail tersebut. |
Mod | Keterangan |
r | Membuka fail untuk dibaca sahaja. |
r+ |
Membuka fail untuk membaca dan menulis data. Data akan
dimasukkan di baris pertama data fail berkenaan. |
Mod | Keterangan |
w |
Membuka fail untuk menulis data sahaja. Data akan
dimasukkan ke dalam fail berkenaan. Data-data yang sedia ada
dalam fail berkenaan akan terhapus. Sekiranya fail berkenaan
tiada, maka PHP akan mencipta fail tersebut. |
w+ |
Membuka fail untuk menulis dan membaca data. Data akan
dimasukkan ke dalam fail berkenaan. Data-data yang sedia ada
dalam fail berkenaan akan terhapus. Sekiranya fail berkenaan
tiada, maka PHP akan mencipta fail tersebut. |
Latihan 17 :
Membuka fail
<?php
$fail = fopen("/rumah/kita/file.txt", "r");
$fail = fopen("/rumah/kita/file.gif", "wb");
$fail = fopen("http://www.example.com/", "r");
$fail = fopen("ftp://user:password@example.com/somefile.txt", "w");
?>
Mod | Keterangan |
b(windows) |
Menterjemahkan fail tersebut sebagai fail binary selain
daripada fail teks. Contoh: imej.jpg
Fungsi passthru() pula akan memaparkan fail yang dibuka. |
Latihan 18 :
Memaparkan fail
<?php
print exec("uptime");
passthru("who");
exec("dir", $output, $return);
echo "Dir returned $return, and output:\n";
var_dump($output);
?>
Bab 8.2 : Menutup Fail
- Setelah kita membuka fail, kita perlu menutup penggunaan fail tersebut.
- Di sini fungsi fclose() akan digunakan.
Latihan 19 :
Menutup fail
<?php
$fail = fopen("/rumah/kita/file.txt", "r");
fclose($fail);
?>
Bab 8.2 : Membaca Fail
- Selain daripada membaca keseluruhan anda juga boleh membaca data pada
baris-baris tertentu yang ditetapkan.
- fread() akan digunakan untuk membaca data yang ditetapkan.
- file() pula akan membaca keseluruhan data yang terdapat di dalam sesuatu fail.
- Data-data ini akan disimpan dalam bentuk array.
Latihan 20 :
Membaca data tertentu dalam fail
<?php
// get contents of a file into a string
$filename = "/usr/local/something.txt";
$handle = fopen($filename, "r");
$contents = fread($handle, filesize($filename));
fclose($handle);
?>
Latihan 21 :
Membaca keseluruhan data dalam fail
<?php
/ Get a file into an array. In this example we'll go through HTTP to get
// the HTML source of a URL.
$lines = file('http://www.example.com/');
// Loop through our array, show HTML source as HTML source; and line numbers too.
foreach ($lines as $line_num => $line) {
echo "Line #{$line_num} : " . htmlspecialchars($line) . "
\n";
}
// Another example, let's get a web page into a string. See also file_get_contents().
$html = implode('', file('http://www.example.com/'));
// Using the optional flags parameter since PHP 5
$trimmed = file('somefile.txt', FILE_IGNORE_NEW_LINES | FILE_SKIP_EMPTY_LINES);
?>
Bab 8.3 : Menulis Fail
- Untuk menulis data ke dalam sesuatu fail, fungsi fwrite() akan digunakan.
- Sebelum menulis data ke dalam fail, fungsi is_writable()
boleh digunakan untuk menyemak samada fail tersebut boleh ditulis atau tidak.
Latihan 22 :
Menulis fail
<?php
$fail = 'test.txt';
if (is_writable($fail))
{
echo 'Fail ini boleh ditulis';
}
else
{
echo 'Fail ini tidak boleh ditulis';
}
?>
Bab 8.4 : Menyalin Fail
- PHP membenarkan sesuatu fail disalin dan ditampal ke direktori yang lain.
- Fungsi copy() akan digunakan untuk membuat salinan fail.
- Kemudiannya ia akan membawa nilai TRUE sekiranya berjaya atau FALSE sekiranya gagal.
Latihan 23 :
Membuat salinan fail
<?php
$fail_lama = 'contoh.txt';
$fail_baru = 'contoh.txt.bak';
if (!copy($fail_lama, $fail_baru))
{
echo "gagal untuk salin $file...\n";
}
?>
Bab 8.5 : Menghapuskan Fail
- Fail juga boleh dihapuskan dengan menggunakan fungsi unlink().
- Ia akan membawa nilai TRUE sekiranya berjaya atau FALSE sekiranya gagal.
Latihan 24 :
Menghapuskan fail
<?php
$fh = fopen('test.html', 'a');
fwrite($fh, 'Hello world!
');
fclose($fh);
unlink('test.html');
# buang folder
if (!is_dir('examples'))
mkdir('examples');
rmdir('examples');
?>
Bab 8.6 : Menamakan Fail
- Untuk menamakan fail, kita akan menggunakan fungsi rename().
- Latihan 25 :
Menamakan fail
<?php
rename("/tmp/tmp_fail.txt", "/sistem/fail_kita.txt");
?>
Bab 8.7 : Semak Fail
- Adalah sebaiknya terlebih dahulu kita menyemak samada fail tersebut wujud atau
tidak sebelum kita menghapuskan atau menamakan sesuatu fail.
- Untuk membuat semakan ini, fungsi file_exists() akan digunakan.
- Selain itu fungsi filesize() juga boleh digunakan untuk menyemak saiz fail dan
fungsi filetype() untuk menyemak jenis fail.
Latihan 26 :
Menyemak Fail
<?php
$fail = '/path/to/foo.txt';
if (file_exists($fail))
echo 'Fail ' . $fail . ' ini wujud';
else
echo 'Fail ' . $fail . ' ini tidak wujud';
// outputs e.g. somefile.txt: 1024 bytes
echo $fail . ': ' . filesize($fail) . ' bytes';
echo filetype('/etc/passwd'); // file
echo filetype('/etc/'); // dir
?>
Bab 8.8 : Memuatnaik (Upload) Fail
- Selain daripada aplikasi FTP, PHP juga membolehkan fail-fail dimuatnaik ke web server.
- Untuk memuatnaik fail ke dalam web server, elemen <input type=file>
dalam HTML form digunakan.
- Tetapan nilai file_uploads, upload_max_filesize, upload_tmp_dir,
post_max_size dan max_input_time boleh ditetapkan dalam php.ini
Bab 8.8.1 : Pembolehubah $_FILES
- $_FILES['userfile']['name'] => papar nama fail yang hendak dimuatnaik
- $_FILES['userfile']['type'] => papar mime type fail berkenaan.
Contohnya: "image/gif"
- $_FILES['userfile']['size'] => papar saiz fail yang dimuatnaik dalam bytes
Bab 8.8.1 : Pembolehubah $_FILES
-
$_FILES['userfile']['tmp_name'] => papar nama sementara
(temporary) fail dimana fail yang dimuatnaik disimpan di web server.
- $_FILES['userfile']['error'] => papar status muatnaik fail
- is_upload_file() => semak samada fail berjaya (TRUE)
atau tidak dimuatnaik melalui HTTP POST
- move_uploaded_file() => semak samada fail berjaya
atau tidak dimuatnaik ke lokasi yang baru
Latihan 27 :
Memuatnaik fail
<?php
if (is_uploaded_file($_FILES['fail']['tmp_name']))
{
echo "Fail " . $_FILES['fail']['name']
. " berjaya dimuatnaik .\n";
echo "Papar kandungan\n";
readfile($_FILES['fail']['tmp_name']);
}
else
{
echo "Fail mungkin serangan muatnaik: ";
echo "fail '" . $_FILES['fail']['tmp_name'] . "'.";
}
?>
BAB 9 : MANIPULASI TARIKH DAN MASA
- Fungsi tarikh dan masa adalah untuk mendapatkan tarikh dan masa daripada server.
- Anda boleh menggunakan fungsi ini untuk menetapkan tarikh dan masa dalam pelbagai cara.
BAB 9.1 : Timestamp
- Timestamp adalah nombor unik yang melambangkan sesuatu tarikh
- Nilainya merupakan bilangan saat dari 1 Januari 1970 ke sesuatu tarikh tertentu.
- Timestamp boleh dikira dengan menggunakan fungsi mktime().
BAB 9.2 : Fungsi dalam Tarikh & Masa
- checkdate() digunakan untuk menyemak adakah sesuatu tarikh adalah sah
(TRUE) atau tidak (FALSE)
- date() untuk mendapatkan format tarikh dan masa tempatan
- getdate() untuk mendapatkan maklumat tarikh/masa
- microtime() untuk mendapatkan Unix timestamp semasa dalam format micro seconds
BAB 9.2 : Fungsi dalam Tarikh & Masa
- mktime() untuk mendapatkan Unix timestamp untuk tarikh.
- Format mktime() adalah mktime(jam, minit, saat, bulan, hari, tahun)
- strtotime() menukarkan sebarang English textual datetime description kepada
Unix timestamp
- time() untuk memaparkan Unix timestamp semasa
Function date()
<?php
string date ( string format [, int timestamp])
?>
kod | keterangan | kod | keterangan |
a | am / pm | A | AM / PM |
d | day 01-31 | D | 3 char wday Mon-Sun |
F | full month January-December | g | 12 hour 1-12 |
G | 24 hour 0-23 | h | 12 hour 01-12 |
H | 24 hour 00-23 | | |
Function date()
<?php
string date ( string format [, int timestamp])
?>
kod | keterangan | kod | keterangan |
i | minutes 00-59 | I | daylight |
j | day 1-31 | | |
l | full day Monday-Sunday | L | boolean for leap year |
m | month 01-12 | M | month Jan-Dec |
n | month 1-12 | | |
Function date()
<?php
string date ( string format [, int timestamp])
?>
kod | keterangan | kod | keterangan |
s | seconds 00-59 | S | suffix st, nd, rd, th |
t | total day in month 28-31 | T | time zone setting EST |
U | total UNIX seconds from 1 jan 1970 | w | day of week 0-6 (sunday-saturday) |
y | 2 digit year | Y | 4 digit year |
z | day of year 0-365 | Z | timezone offset in seconds |
Contoh
<?php
print date("d/m/Y"); #18/06/2012
$tarikh = date("jS F Y");
print "$tarikh"; #18th June 2012
print date("h:ia, d/m/Y"); 11:33am, 16/03/2011
?>
Function mktime()
<?php
int mktime ( [int hour [, int minute [, int second [, int month [, int day [, int year [, int is_dst]]]]]]])
?>
Menukar format tarikh ke UNIX Epoch
Contoh:
<?php
print mktime(12, 33, 22, 3, 5, 1957);
$masaLahir = mktime(12, 33, 22, 3, 5, 1957);
print"$masaLahir";
?>
Latihan 30 : Penggunaan fungsi tarikh dan masa
<?php
?>