0% menganggap dokumen ini bermanfaat (0 suara)
30 tayangan

PHP MySQL Level0

Ringkasan dokumen tersebut adalah: Dokumen tersebut membahas penggunaan database dan objek file dalam website menggunakan PHP dan MySQL, termasuk teknik seperti sistem login, manipulasi file, dan membuat picture gallery. Dokumen tersebut juga menjelaskan konsep dasar PHP seperti variabel, array, operator, dan menerima input dari form.

Diunggah oleh

gunturris
Hak Cipta
© © All Rights Reserved
Format Tersedia
Unduh sebagai DOC, PDF, TXT atau baca online di Scribd
0% menganggap dokumen ini bermanfaat (0 suara)
30 tayangan

PHP MySQL Level0

Ringkasan dokumen tersebut adalah: Dokumen tersebut membahas penggunaan database dan objek file dalam website menggunakan PHP dan MySQL, termasuk teknik seperti sistem login, manipulasi file, dan membuat picture gallery. Dokumen tersebut juga menjelaskan konsep dasar PHP seperti variabel, array, operator, dan menerima input dari form.

Diunggah oleh

gunturris
Hak Cipta
© © All Rights Reserved
Format Tersedia
Unduh sebagai DOC, PDF, TXT atau baca online di Scribd
Anda di halaman 1/ 17

KATA PENGANTAR

Penggunaan database dalam website sekarang ini tidak hanya terbatas pada
pengolahan data saja, namun lebih dari itu kita dituntut untuk mampu menangani data
berupa objek file untuk membuat halaman download atau daftar image seperti album
online maupun image gallery.
Untuk dapat melakukan hal itu kita dapat menggunakan pemograman PHP yang
tentunya di dukung oleh beberapa syarat. diantaranya Apache server dan database
MySQL.
Pada dasarnya file yang kita kirim sebagai peng”copy”an dari path local ke
internet. Sehingga kita disini akan mengenal beberapa teknik seperti Cookie & Sistem
login, chmod, PHP file utility, MySQL & Query.
Pada modul ini kita dituntun untuk menguasai bahasa pemrograman berbahasa
PHP dengan didukung database mysql, dan teknik tersebut diatas, dimana kita nantinya
akan belajar mengenai bahasa HTML, PHP dan MySQL serta memanipulasi objek file
dengan PHP selain itu juga akan dikenalkan dengan suatu software online yaitu
PHPmyAdmin.
Diharapkan setelah mengikuti workshop dan mempelajari isi dari tulisan ini dan
ketekunan untuk mengikuti pelatihan ini, peserta mampu membuat aplikasi pemrograman
berbasis PHP dan menjalakan data yang tersimpan di dalam MySQL. Bukan sekedar data
namun lebih dari itu kita bisa membuat picture gallery.

Yogyakarta Oktober 2004


Penyusun

Guntur
Membuat Picture Gallery
Disampaikan pada Workshop Di LPK BTC

Sekilas PHP
PHP adalah salah satu bahasa Server-side yang didesain khusus untuk aplikasi
web sepert halnya JSP, perl (.pl), dan asp. Dalam hal ini dapat diartikan bahwa PHP
dapat disisipkan diantara bahasa HTML dan karena bahasa Server side, maka bahasa
PHP akan dieksekusi di serversehingga bentuk yang dihasilkan bentuk HTML, dan kode
PHP anda tidak akan terlihat.
PHP dibuat pertama kali oleh satu orang yaitu Rasmus Lerdorf, yang pada
awalnya dibuat untuk menghitung jumlah pengunjung pada homepagenya. Diawal
Januari 2001, PHP telah dipakai lebih dari 5 juta domain diseluruh dunia, dan akan terus
bertambah karena kemudahan aplikasi PHP ini dibandingkan dengan bahasa Server side
yang lain.
PHP termasuk dalam Open Source Product. Jadi anda dapat merubah source code
dan mendistribusikannya secara bebas. PHP juga diedarkan secara gratis. Anda bisa
mendapatkannya secara gratis. PHP juga dapat berjalan diberbagai web server semisal
IIS, Apache. PWS, dll.

Menuliskan PHP dalam HTML


Seperti yang telah dituliskan sebelumnya bahwa PHP dapat ditulis (embed)
ddidalam HTML, Untuk penulisannya dalam HTML, seperti halnya kode kode dalam
HTML selalu diawali dengan suatu kode dan diakhiri dedngan kode tertentu maka PHP
pun mempunyainya. Kode PHP diawali dengan tanda <? atau <?php dan diakhiri dengan
tanda ?>. Sedangkan untuk menambahkan komentar diawali dengan tanda /* dan diakhiri
dengan */ atau menggunakan tanda //. Yang berarti tulisan tidak akan terbaca atau tidak
akan tereksekusi.

Contoh :

<HTML>
<?php
/* Teks ini tidak akan terbaca */
// Untuk teks ini juga tidak terbaca
echo (“Teks ini dicetak menggunakan PHP”);
?>
</HTML>

Variabel dalam PHP


Setiap bahasa pemrograman tentu mempunyai suatu variabel. Variabel berfungsi
untuk mengkompilasi dan menyimpan beberapa bit data, sehingga untuk memanggil
suatu data kita tinggal memanggil variabel tersebut.
Variabel dalam PHP selalu dimulai dengan tanda ‘$’. Tidak terpengaruh apakah
data merupakan integer, real maupun string, PHP akan secara otomatis mengkonversi
data menurut tipenya.

Contoh:

<?

$a=2;
$b=3;
$c=$a+$b;
echo ("Nilai a=$a dan Nilai b=$b<br> maka nilai a ditambah b
adalah $c ");

?>

Array
Array merupakan variable penyimpan beberapa nama yang berbeda. Untuk itu
kita bias mendefinisikan beberapa nama tadi agar menjadi lebih effisien dan effektif.
Array dapat bersifat sebagai hash table atau indexed array (vector).
Contoh:
<?
$a[1]="Nama Saya";
$a[2]="Budi";
echo("$a[1] $a[2]");
?>
Array function
Menggunakan array function sebagai array asosiasi.
Contoh:
<?
$a=array(
“warna”=>”Biru”,
“nama”=>”Ani”,
“ibu”=>”Wati”
);
echo(“Gadis yang pakai baju $a[warna] namanya $a[nama] adalah anak ibu
$a[ibu]”);
?>

Menerima Inputan dari Form


Dalam form selalu ada value yang nantinya akan dijadikan sebuah variabel oleh
PHP. Variabel inilah yang akan diproses oleh PHP tergantung pada penggunaan program
PHP tersebut. Misalkan saja kita mengubah form pada latihan 7 seperti berikut :

<HTML>
<HEAD>
<TITLE> Variabel dari Form </TITLE>
</HEAD>
<BODY>
<FORM METHOD=POST ACTION="contohinput.php">
Nama :
<INPUT TYPE="Text" NAME="nama"><BR>
Password :
<INPUT TYPE="Password" NAME="pass"><BR>
Jenis Kelamin <BR>
<INPUT TYPE="Radio"
NAME="kelamin" VALUE="pria">Pria
<INPUT TYPE="Radio"
NAME="kelamin" VALUE="wanita">Wanita<BR>
Hobi : <BR>
<INPUT TYPE="Checkbox"
NAME="hobi" VALUE="tidur">Tidur<BR>
<INPUT TYPE="Checkbox"
NAME="hobi" VALUE="bersepeda">Bersepeda</BR>
<INPUT TYPE="Checkbox"
NAME="hobi" VALUE="lain">Lainnya</BR>
<INPUT TYPE="submit" VALUE="Kirim">
<INPUT TYPE="Reset" VALUE="Ulangi">
</FORM>
<?
if(isset($nama)) {
echo("Nama Anda : $nama<BR>");
echo("Password : $pass<BR>");
echo("Jen Kelamin : $kelamin<BR>");
echo("Hobi : $hobi<BR>");
}
?>
</BODY>
</HTML>

Lalu buatlah sebuah file dengan nama contohinput.php


Dari program diatas, dapat terlihat bahwa name yang terdapat pada form secara otomatis
diubah oleh PHP ke dalam variabel-variabel, sehingga memudahkan kita untuk
mengidentifikasi data yang dikirim oleh form.
Fungsi dari function isset() adalah untuk mengecek apakah variabel telah
terkirim/mempunyai nilai, jika variabel tersebut telah terkirim, maka PHP akan
mengeksekusi program yang terdapat diantara { dan }.

Operator
Operator Aritmatika
Operator aritmatika adalah operator yang digunakan untuk melakukan fungsi
matematika. Operator aritmatika dalam PHP :

Operator Operasi Penggunaan


+ Penjumlahan $a+$b
- Pengurangan $a-$b
* Perkalian $a*$b
/ Pembagian $a/$b
% Modulus $a%$b
Contoh
<?
$a=2;
$b=3;
$c=$a+$b;
$d=$a/$b*$c;
echo ("Nilai a=$a dan Nilai b=$b<br> maka nilai a ditambah b
adalah $c ");
echo(“sedangkan untuk nilai 2 dibagi 3 dikali $c adalah $d”);
?>

Operator String
Hanya ada satu operator string, yaitu operator concatenation ( . ).
<?php
$a=”Hallo”;
$b= $a . “Selamat Datang di PHP”;
?>

Operator Bitwise
Operator bitwise dapat digunakan untuk membuat bit tertentu darisuatu integer menjadi 1 atau 0.

Contoh Nama Hasil


$a & $b And Bit yang bernilai 1 pada $a dan $b
akan diset 1
$a | $b Or Bit yang bernilai 1 pada $a atau $b
akan diset 1
$a ^ $b Xor Bit yang bernilai 1 pada $a atau $b
tetapi tidak pada keduanya akan
diset 1
~ $a Not Bit yang bernilai 1 pada $a akan diset
0, dan sebaliknya.
$a << $b Shift Left Geser bit $a sebanyak $b langkah ke
kiri (setiap langkah berarti “kalikan
dengan dua”).
$a >> $b Shift right Geser bit $a sebanyak $b langkah ke
kanan (setiap langkah berarti
“bagikan dengan dua”).

Operator Perbandingan
Hasil
Contoh Nama
$a > $b Lebih dari True jika $a lebih besar dari $b
$a <= $b Kurang dari atau sama dengan True jika $a lebih kecil dari $b atau
$a sama dengan $b
< Kurang dari True jika $a lebih kecil dari $b
$a >= $b Lebih besar atau sama dengan True jika $a lebih besar dari $b atau
$a sama dengan $b
$a == $b Sama dengan True jika $a sama dengan $b
$a != $b Tidak sama dengan True jika $a tidak sama dengan $b
Operator perbandingan lainnya adalah operator trinary “?:” yang memiliki bentuk :
(ekspresi) ? (jika benar) : (jika salah);

Operator Logika

Contoh Nama Hasil


$a and $b And True jika $a sama dengan $b
$a && $b
$a or $b Or True jika salah satu $a atau $b
$a || $b adalah benar
$a xor $b Exclusive Or True jika salah satu $a atau $b
adalah benar dan tidak keduanya
!$a Not True jika $a tidak benar

Struktur Kontrol
If
Berfungsi untuk melakukan eksekusi suatu pernyataan secara bersyarat.
Strukturnya :
<?php
If (ekspresi1)
{ Statement };
elseif (ekspresi2)
{ statement };
else
{ statement };
?>

Contoh penggunaan Struktur Kontrol dan penggunaan operator :

<?
$x=2;
$y=3*$x;
if ($y<5) {
echo("Baris ini akan tercetak - echo tingkat 1<br>");
}
if ($y>5) {
echo("Baris ini tidak akan tercetak - echo tingkat 2<br>");
}
$z=7;
if($x=2 && $y=6 && $z=7) {
echo("Baris ini akan tercetak - echo tingkat 3<br>"); }
?>

Switch
Switch berguna sebagai alternatif pengganti dari If, misalnya kita mempunyai
program :
<?
If($negara=”ca”) {
Echo(“Canada”);
} elseif ($negara=”my”) {
echo(“Malaysia”);
} elseif ($negara=”us”) {
echo(“United States”);
} else {
echo(“Indonesia”);
}
?>

dalam kasus diatas , kita membandingkan isi dalam variabel $negara. Untuk
membandingkan isi dari sebuah variabel kita dapat juga menggunakan fungsi switch :
<?
Switch($negara) {
Case “ca” :
Echo(“Canada”);
Break;
Case “my” :
Echo(“Malaysia”);
Break;
Case “us” :
Echo(“United States”);
Break;
Default:
Echo(“Indonesia”);
}
?>

Dapat dilihat di atas, setiap perintah case selalu ada perintah break, hal itu berfungsi agar
setelah mengeksekusi program didalam case, program langsung keluar dari statemen
switch tersebut. PHP akan terus mengeksekusi perintah dibawahnya hingga akhir block
switch, atau jika ditemui statemen break. Jika anda tidak menuliskan statemen break di
akhir setiap statemen case, maka PHP akan terus mengeksekusi statement pada case
selanjutnya. Sedangkan pernyataan pada default dieksekusi jika statemen pada case tidak
ada yang memenuhi.

LOOP
Loop berarti kita mengeksekusi beberapa baris program dalam waktu tertentu,
atau sampai suatu kondisi telah terpenuhi. PHP memiliki 2 jenis loop, yaitu for dan
while.
For
For digunakan untuk melaksanakan statemen perulangan yang jumlahnya telah
diketahui.
Syntax :
For (nilai awal;nilai akhir; kenaikan)
{ statemen }

contoh :
<?
for($i=1;$i<=7;$i++)
{
echo(“<FONT SIZE=$i>Ini font dengan ukuran $i</FONT></BR>”);
}

?>

Require
Statemen require akan digantikan dengan file yang ditunjuk olehnya, mirip seperti
C preprocessor #include. Ini berarti bahwa statemen ini tidak dapat diletakkan dalam
struktur loop.
Syntax :
Require(‘namafile’);

Include
Statemen include akan menyertakan isi dari suatu file yang ditunjuk olehnya, dan
hal ini terjadi setiap statemen include ini dipanggil, sehingga statemen include ini dapat
digunakan dalam struktur loop untuk menyertakan banyak file yang berbeda.
Syntax :
Include(‘namafile’);

Contoh :
Pertama-tama kita buat terlebih dahulu file identits.php yang berisikan judul dari program
yang akan kita buat, pembuat program dan satu buah konstanta untuk pindah baris (PB).

<?
define(“JUDUL”,”Latihan PHP metode Include”);
define(“DI”,”Gama Eduka”);
define(“PB”,”<BR>”);
?>

Dan disimpan sebagai syaratsatu.php


Lalu kita buat file kedua yang kita beri nama syaratdua.php yang berisikan :

<?
echo(“<FONT SIZE=$i>Tulisan menggunakan ukuran $i</FONT>” . PB);
?>

Script diatas untuk membantu menuliskan penggunaan font


Dan file ketiga yaitu file utama :

<?
require(“syaratsatu.php”);
echo(JUDUL . PB . D);
for($i=1;$i<=7;$i++)
{
include(“syaratdua.php”);
}
?>
Set Cookie
Cookie adalah mekanisme untuk menyimpan data dalam remote browser yang dapat
digunakan untuk melacak dan mengindentifikasikan user.
Jika kita ingin mengassign banyak nilai ke satu cookie, maka dapat ditambahkan tanda []
ke nama cookie-nya:

Perhatikan contoh-contoh berikut.

halsatu.php
<?
setcookie(“nm_pengunjung”,”GUNTUR”);
echo”Mendifinisikan cookie”;
?>

haldua.php
<?
echo “dengan menggunakan komputer yang sama maka variable \
$nm_pengunjung adalah $nm_pengunjung”;
?>

haltiga.php
<?
setcookie(“nm_pengunjung”)
echo “halaman sudah tidak ada cookie broser”;
?>

halempat.php
<?
echo “Halaman ini menampilkan cookie yang sudah tidak ada’
echo “Nama pengunjung adalah $nm_pengunjung”
?>

Database MySQL

Database MySQL merupakan salah satu database yang sifatnya open source, yang dibuat oleh
MySQL AB sebuah perusahaan komersial yang bertempat di Swedia. Kemampuan MySQL tidak
kalah dengan Oracle yang serba mahal dan SQL server Microsoft. Kelebihan yang dimiliki oleh
MySQL adalah Aksebilitas yang cepat, Source yang disediakan dengan gratis, dan mudah
digunakan.

Cara menulis perintah dalam MySQL:


Untuk penulisan Perintah bebas menggunakan huruf kecil dan huruf besar, namun penamaan
atribut, database, dan tabel merupakan case sensitive.
Pernyataan tidak harus ditulis dalam satu baris, MySQL akan melaksanakan perintah jika
statement sudah diakhiri dengan ‘;’ (tanda titik koma).

Database
Database merupakan sekumpulan dari tabel dimana tabel merupakan sejumlah field yang bisa
berisi berbagai macam data, sehingga kita terlebih dahulu membuat tabel beserta field-fieldnya
berupa kolom.

Membuat database

Sintak untuk membuat database.

Mysql> create database nama_db;

Contoh:

Mysql> create database guntur;


Query OK, 1 row affected

Perintah diatas, kita membuat sebuah database yang bernama guntur, dan natinya kita membuat
tabel didalam database guntur.

Menggunakan database

Sintak untuk menggunakan database adalah

Mysql> use nama_db;


Contoh:

Mysql>use guntur;
Database Changed

Menghapus database

Sintak untuk menghapus database adalah

Mysql>drop nama_db;

Contoh :
Mysql>drop guntur;
Membuat tabel
Sintak untuk membuat tabel pada database adalah

Mysql>create table nama_tabel(


->field1 jenis_data(panjang_data) properties,
->field2 jenis_data(panjang_data) properties,
->field3 jenis_data(panjang_data) properties
->);

Keterangan:
Jenis data : Tipe data field bisa berupa integer, character, text, dll.
Panjang data : panjang data field.
Properties : tambahan untuk fieldnya bisa berupa not null, default nilainya.

Contoh:

Mysql>create table nama_tabel(


->No int(5) not null auto_increment,
->Nama char(225) not null,
->Email text(225) not null,
->Primary key(no)
);

Mengisi record
Setelah kita membuat Database beserta Tabelnya maka sekarang adalah mengisi field field tabel.
Untuk input data bisa digunakan perintah INSERT. Berikut query yang diberikan:

Mysql>INSERT INTO nama_tabel(field1,field2,field3)


->VALUES(‘data1’,’data2’,’data3,);

Contoh:

Mysql>INSERT INTO nama_tabel(No,Nama,Email)


->VALUES(‘1’,’guntur’,’[email protected]’);
Query OK, 1 row affected (0,06 sec)
Mengubah isi Record
Untuk mengubah (edit) isi data yang ada kita bisa menggunakan query berikut ini.

Mysql>UPDATE nama_tabel set nama_field=’databaru’


where nama_field=’datalama’;

Menghapus isi Record


Untuk menghapus isi record digunakan perintah DELETE. Berikut sintak menggunakannya.

Mysql>DELETE from nama_tabel where nama_field=’datalama’;

Melihat isi tabel dalam database.


Perintah untuk melihat isi sangatlah beragam. Kita bisa mengambil salah satu field atau beberapa
field bahkankeseluruhannya.

Menampilkan keseluruhan field


Sintaknya adalah

Mysql>select* from nama_tabel;

Menampilkan salah satu field


Sintaknya adalah

Mysql>select field from nama_tabel;

Menampilkan beberapa field


Sintaknya adalah

Mysql>select field1,field2,field3 from nama_tabel;

Untuk latihan silakan coba membuat database dengan tabel seperti berikut:
Nama tabel biodata
No Nama Umur Pekerjaan Email Asal
1 Rendi 22 Mahasiswa [email protected] Bandung
2 Wati 25 Karyawati [email protected] Yogyakarta
3 Muklis 19 Wiraswastawan [email protected] Yogyakarta
4 Rina 31 Pelajar [email protected] Jakarta

Membatasi Data yang dipanggil


Kita dapat membatasi pemanggilan data dari beberapa data yang disimpan. Misalkan pada
contoh diatas kita memanggil data yang disaring berdasarkan umur 20 sampai 30 tahun; maka
perintahnya adalah:

Mysql>select Nama,Umur,Pekerjaan,Email,Asal from biodata where


umur between 20 and 30;

Membalikan nomor identifikasi database.


Jika kita ingin mengurutkan data misalanya 1,2,3,4,5 menjadi 5,4,3,2,1 kita dapat menggunakan
perintah berikut (dengan menggunakan contoh table biodata diatas).
Mysql>select Nama,Umur,Pekerjaan,Email,Asal from biodata order by No DESC;
Akses Database pada PHP
Ada beberapa persyaratan untuk mengakses database:
Kita harus memiliki host yang mendukung PHP dan diberikan Database.
Kita mempunyai database server.

Untuk koneksi ke database, gunakan perintah :


mysql_connect(hostname, username, password);
Contoh :
<?
$hostname=”localhost”;// hostname server database
$username=”php”; // username database
$password=”php”; // password database
if(! $dbase = mysql_connect($hostname, $username, $password)) // Connect ke database
{
echo mysql_error ();// tampilkan pesan error
return 0;
}
?>

Query ke database
Setelah anda connect ke database anda tinggal melakukan query ke database, caranya:

<?
mysql_select_db(“nama_database”); // memilih database yang digunakan
$query=”select * from nama_tabel”; // query yang akan dieksekusi
$datanya=mysql_query($query, $dbase); // eksekusi query
?>
Begitu pula untuk query yang lainnya misalnya insert, delete, update, dll kita dapat menggunakan
perintah mysql_query.

Menampilkan isi tabel


Setelah melakukan query, anda mungkin perlu untuk menampilkan hasil query. Perintahnya :
Cat : dengan asumsi kita telah mempunyai sebuah tabel yang memiliki kolom nama, alamat dan
email.
Menggunakan mysql_fetch_row

<table>
<tr>
<td>Nama</td>
<td>Alamat</td>
<td>email</td>
<?
while ($baris = mysql_fetch_row($datanya))
{
echo “<tr>”;
echo “<td>$baris[0]</td>”; // menampilkan nama
echo “<td>$baris[1]</td>”; // menampilkan alamat
echo “<td>$baris[2]</td>”; // menampilkan email
}
?>
</table>

Menambah isi data/record


Untuk menyisipkan atau menambahkan record ke suatu table, dapat kita gunakan perintah berikut
ini.

<?
$simpan=”insert into nama_tabel(field1,field2,field3) values(‘data1’,’data2’,’data3’);
if(!mysql_query($simpan,$dbase))
{
echo mysql_error();
exit;
}
?>

Menghapus isi data/record


Untuk menyisipkan atau menambahkan record ke suatu table, dapat kita gunakan perintah berikut
ini.

<?
$hapus= ”delete from nama_tabel where kriteria”;
if(!mysql_query($hapus,$dbase))
{
echo mysql_error();
exit;
}
?>

Transfortasi File

Ada berapa hal yang harus diketahui dalam proses pengiriman file ke dalam web kita.
1. Penggunaan Fasilitas ini harus mempertimbangkan security dan kesehatan bandwitch
kita. Perlu adanya Authentifikasi pengirim file dan kit memerlukan bandwitch dan space
yang cukup besar.
2. Directory Permission
Beberapa menyebut dengan chmod.
Ada banyak kemungkinan terjadinya chmod.
Missal. Hanya user membaca, menulis, dan mengeksekusi. Sedangkan Group dan user
tidak ada akses, atau sebaliknya. Sehingga kita memiliki 3 x 3 kombinasi.
Yaitu : User-Group-World vs Baca-Tulis-Eksekusi
Ada cara untuk menghitung berapa kode permission.(mode parameter)
Perhatikan table berikut.
User Group Global
Baca 4 4 4
Tulis 2 2 2
Eksekusi 1 1 1
Permision
Contoh: Folder yang kita buat adalah untuk hanya user group saja yang mengakses maka
kodenya adalah 770.

3. Path <file source>


Tempat dimana File yang akan di copy itu berada.
4. Path <file destination>
Tempat dimana file akan ditempatkan. Maka kita juga harus perhatikan Chmodnya.
5. Penggunaan enctype=multipart/form-data
Pada formulir juga harus diperhatikan enctypenya

Mengcopy file:
Selanjutnya kita tinggal membuat perintah copy dari file source ke file destination.

Perintahnya adalah:
copy(file_source,file_destination);

Mengenal file yang dikirim


File type: yaitu variable yang mengetahui nama file yang dikirim oleh user.
$file_name
File type: yaitu variable yang mengetahui jenis file yang dikirim oleh user.
$file_type
File size: yaitu variable yang mengetahui ukuran file yang dikirim oleh user.
$file_size
Menghapus File
Unlink(“file”);

Selanjutnya silakan mencoba membuat suatu aplikasi sebagai berikut.

- Membuat File Manager


- Membuat Download Manager
- IP file Akses

- - - - GOOD LUCK - - -

Anda mungkin juga menyukai