Rabu, 31 Juli 2013

CONTOH SOAL dan JAWABAN SUBQUERY (SELECT DALAM SELECT)


CONTOH SOAL dan JAWABAN SUBQUERY (SELECT DALAM SELECT)

tTabelMahasiswa
 

tTabelMataKuliah 

 
tAmbilMataKuliah 

 
SOAL: 

1. Tampilkan nama mahasiswa dan nilai matakuliah yang memiliki nilai tertinggi dalam matakuliah ‘A02'. 
JAWAB & OUTPUT: 

 

2. Dalam perkuliahan dengan kode ‘A03', siapakah mahasiswa (nim dan nama) yang memiliki nilai di atas rata-rata nilai dari semua mahasiswa yang mengambil matakuliah tersebut? 
JAWAB & OUTPUT: 

 

3. Dari data mahasiswa yang terdaftar, siapa sajakah (nama) mahasiswa yang tidak mengambil matakuliah ‘A01'? 
JAWAB & OUTPUT: 

 
4. Tampilkan nama mahasiswa yang mempunyai nilai < onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjk-gcNUrMgXMfxPu9Oc8UXue9k7P_eSdvEtjHWxJ-eHi-h7UnQLHD2LmJkbz8o3T1JoSBAuhVPGRDg-D9z8xBvF9uigwdXleGSlFnRCVIfEtvw0Wy-nxK1cIJf8bRpuxYa7fRLj6cBo8Ff/s1600/NO+4.JPG"> 

5. Berapa nilai terendah dari mahasiswa yang bernama RAHMA 
JAWAB & OUTPUT: 

 

6. Tampilkan nama mahsiswa yang mengambil mata kuliah ”A01” 
JAWAB & OUTPUT: 

 

7. Dalam perkuliahan dengan kode ‘A01', tampilkan nim dan nama yang memiliki nilai di BAWAH rata-rata nilai dari semua mahasiswa yang mengambil matakuliah tersebut? 
JAWAB & OUTPUT: 

 

8. Tampilkan nama mahasiswa yang mempunyai nilai = 4 
JAWAB & OUTPUT: 

 

9. Tampilkan nama mahasiswa dan nilai matakuliah yang memiliki nilai TERENDAH dalam matakuliah ‘A03'. 
JAWAB & OUTPUT: 

 

10.Tampilkan nama mahasiswa yang mengambil mata kuliah KALKULUS 
JAWAB & OUTPUT: 

 

Senin, 29 Juli 2013

SOAL SQL DAN JAWABAN ORACLE

SOAL DAN JAWABAN ORACLE
• Create Table
1. buat lah barang dengan field kode_barang char(6),nama barang varchar2(25),satuan_barang varchar2(20) dan stok_barang number(4) primary key adalah kode barang

Jawab
SQL> create table barang(
kode_barang char(6),
nama_barang varchar2(25),
satuan_barang varchar2(20),
stock_barang number(4),
constraint pk_barang primary key(kode_barang)
);
Output

• Insert Table
2. Isikan lah sebuah recordke dalam tabel barang seperti tampilan berikut :
KODE_BARANG NAMA_BARANG SATUAN_BARANG STOK_BARANG
KPR-1 KULKAS BUAH 20
Jawab 
SQL> insert into barang values('KPR-01','KULKAS','BUAH','20');
Output

3. Tambahkan sebuah record lagi sehingga hasil sebagai berikut 
KODE_BARANG NAMA_BARANG SATUAN_BARANG STOK_BARANG
KPR-01 KULKAS BUAH 20
KPR-02 TELEVISI BUAH 15
Jawab
SQL> Insert into barang values(‘KPR-02’,’TELEVISI’,’BUAH’,’15’);
Output

• Menampilkan Isi Tabel
4. Tamplikanlah seluruh field yang berada didalam tabel barang
Jawab
SQL> select * from barang;
Output

• Fungsi Update
5. Ubah lah tabel barang pada kolom nama barang dari TELEVISI menjadi MONITOR
Jawab
SQL> update barang
set nama_barang='MONITOR'
where nama_barang='TELEVISI';
output

• .Fungsi Select
6. Tampilkan lah seluruh field yang berada di tabel barang
Jawab
SQL> select * from barang
Output

7. Tampilkan kode barang,nama barang dari tabel barang yang jumalh stok nya 20
Jawab
SQL> SELECT KODE_BARANG,NAMA_BARANG FROM BARANG WHERE STOCK_BARANG=20;
Output

• Fungsi Like
8. Tampilkan nama barang,satuan barang dan stok barang dari tabel barang, dimana kode barang adalah KPR-02
Jawab
SQL> select nama_barang,satuan_barang,stock_barang from barang
Where kode_barang like 'kpr-02';
• Drop
9. Hapuslah pada field MONITOR pada kolom nama_barang pada tabel barang
Jawab 
SQL> delete from barang where NAMA_BARANG='MONITOR';
10. Hapus Tabel Barang
Jawab 
SQL> drop table barang;
11. Tampilkan last name,salary dari tabel employees yang salary nya lebih besar dari 12000 Jawab
SQL> select last_name,salary from employees where salary>12000;
Output

• Operator aritmatic
12. Tampilkan employee id,last name dan salary untuk karyawan yang mempunyai employee id lebih dari 100 dan salary nya ditambah 3000 dan urut kan berdasarkan salary nya
Jawab
SQL> select employee_id,last_name,salary+3000 from employees where employee_id>100;
Output

13. Tampilkan employee id,last name,salary dan salary di kalikan 10% dengan kolom alias “Gaji Baru”
Jawab
SQL> select employee_id,last_name,salary,salary*0.1 as "Gaji Baru" from employees;
Output

• Date and Time
14. Tampilkan last name dan hire date khusus untuk pegawai yang hire date nya 1993
Jawab
SQL> select last_name,hire_date from employees where hire_date like '%93';
Output

15. Tampilkan last name,job id karyawan yang hire date nya antara 20-09-1988 s/d 06-02-2000
Jawab
SQL> select last_name,job_id from employees where hire_date between '28-09-1988' and '06-02-2000';
Output

16. Hitung lah jumlah karyawan yang Tanggal masuk nya antara 20-09-1988 s/d 06-02-2000
Jawab
SQL> select count(last_name) from employees where hire_date between '20-09-1988' and '06-02-2000';
Output

17. Tampilkan last name,hire date dengan mengubah hire date nya dari angka ke karakter dengan label hire date
Jawab
• TO CHAR
18. Tampilkan last name karyawan dan tanggal masuk nya dengan mengkonversikan kedalam bentuk karakter. Khusus untuk karyawan yang department id nya lebih besar dari 100
Jawab
SQL> 
select last_name,to_char(hire_date,'dd month yyyy') as "HIRE DATE" from employees where department_id>100;
• VERIFY COMMAND
19. Tampilkan last name,salary,dan panjang karakter dengan kolom alias “JML KARAKTER” berdasarkan huruf awal yang di input kan oleh user
Jawab
select last_name,salary,length(last_name) as "JML KARAKTER" from employees where last_name like '&_%';
output

20. Tampilkan last name,salary,salary di tambah 20% dengan kolom bonus nama untuk karyawan yang namanya berawan huruf H
Jawab
SQL> select last_name,salary,salary*0.2 as "BONUS NAMA" from employees where last_name like 'H%';
Output

21. Tampilkan last_name,salary untuk karyawan yang jumlah salary nya lebih besar dari data yang di input kan oleh user dan urutkan berdasarkan last_name
Jawab
SQL > select last_name,salary from employees where salary>&salary order by last_name;
Output

22. Tampilkan last_name dengan huruf kecil ,salary dari tabel employees dimana last name nya di awali dengan huruf ‘A’
Jawab
SQL>select lower(last_name),salary from employees where last_name like 'A%';
Output

23. Tampilkan last name dengan huruf capital dimana last name nya di awali dengan huruf ‘A’
Jawab
SQL> select upper(last_name),salary from employees where last_name like 'A%';
Output

24. Tampilkan last name dengan awalan huruf capital dan selebihnya huruf kecil khusu untuk karyawan yang last name nya diawali dengan huruf ‘H’
Jawab
SQL> select initcap(last_name),salary from employees where last_name like 'H%';
Output

• SELEKSI DAN ARITMATIC
25. Tampilkan salary tertinggi dengan kolom alias “GAJI TERTINGGI” dan untuk yang terendah dengan kolom alias “GAJI TERENDAH”
Jawab
select max(salary) as "GAJI TERTINGGI",min(salary) as "GAJI TERENDAH" from employees;
output

26. Tampilkan rata –rata gaji dari semua karyawan dengan kolom alias “RATA – RATA GAJI”
Jawab
SQL> select avg(salary) as "RATA - RATA GAJI " from employees;
Output

• NVL
27. Tampilkan last_name,salary,salary ditambah 2000 dengan label Tambahan dan dan menambahkan nilai commission pct dengan salary pada kolom nvl (commission_Pct,0) commicion pct nya 0
Jawab
SQL> select last_name,salary,nvl(commission_pct,0), (salary+2000) + (salary+2000+nvl(commission_Pct,0)) Tambahan from employees;
Output

• SORTING
28. Tampilkan rata – rata gaji tertinggi dari semua karyawan
Jawab
SQL> Select max(avg(salary)) as "RATA - RATA GAJI TERTINGGI" from employees group by salary;
Output

29.Tampilkan employee id,last name dan salary untuk karyawan yang salary nya antara 12000 s/d 24000 urutkan berdasarkan nama
Jawab 
select employee_id,last_name,salary from employees where salary between '12000' and '24000' order by last_name asc;
output

• Fungsi IN dan NOT IN
30. Tampilkan last name dan salary yang salary nya ter masuk 12000,13000 dan 24000
Jawab
SQL> select last_name,salary from employees where salary in(12000,13000,24000);
Output

31. Tampilkan last name dan salary yang salary nya tidak termasuk dari 12000,13000 dan 24000 dan lakukan pengurutan dari salary terendah
Jawab
SQL> select last_name,salary from employees where salary not in(12000,13000,24000) order by salary asc;
Output

• SUBSITUTION VARIABLE
32. Tampilkan employee id,last name dan salary yang last name nya tidak berawalan huruf “H”
Jawab
SQL> select employee_id,last_name,salary from employees where last_name not like 'H%';
Output

• SUBQUERY
33. Tampilkan last name dari tabel employees yang mana employee id nya sama dengan manager id
select e.last_name from employees e where (e.employee_id) in (select m.manager_id from employees m);
output

34. Tampilkan last name,job id dan gaji terkecil dari semua karyawan yang ada di tabel employees dengan subquery
Jawab
SQL> select last_name,job_id,salary from employees where salary =(select min(salary)from employees);
Output

• COALESCE
35. Tampilkan job id,job title dan gabungkan gaji tertinggi dan terendah dan tambahkan serta dikurangi 1000 dengan label ‘POTONGAN’ pada tabel Jobs
Jawab
SQL> select job_id,job_title,coalesce(max_salary,min_salary-1000) as " POTONGAN" from jobs;
Output

• Fungsi IF,CASE
36. Tampilkan last name dan salary dan buat kolom alias untuk karyawan yang jika panjang karakter last name karyawan = 7 maka salary ditambah 3000,jika panjang karakter last name = 6 maka salary ditambah 4000 dan selainnya nol
Jawab
SQL> select last_name,salary , case when length(last_name)='7' then salary+3000 when length(last_name)='6' then salary+4000 else salary-salary end "Bonus Karakter" from employees;
Output

• DECODE
37. Tampilkan lah job id dan last name dan buat index dengan kolom alias “INDEX” jika Job id Index
‘IT_PROG’ ‘A’
‘ST_CLERK’ ‘B’
‘SA_REP’ ‘C’
‘ST_MAN’ ‘D’
‘AD_PRES’ ‘E’
Dan kosongkan untuk job id selain dari yang diberi index
Jawab
SQL> select job_id,last_name, decode(job_id, 'IT_PROG','A',
'ST_CLERK','B',
'SA_REP','C',
'ST_MAN','D',
'AD_PRES','E') "INDEX" from employees where employee_id>130;
• CONCATING
38. Gabungkan first name,last name dengan label ‘Nama Lengkap’,hire date dengan label ‘Tanggal Masuk’ dan salary dengan label gaji dari tabel employees
Jawab 
SQL> select concat(first_name,last_name) as " Nama Lengkap",hire_date as "Tanggal Masuk", salary as "Gaji" from employees;

• OPERATOR ANY DAN NOT ANY
39. Tampilkan employee id,last name dan salary yang salary nya termasuk lebih besar dari 9000,6000,4200 dan job id nya adalah ‘IT PROG’ dengan menggunakan operator any
Jawab
SQL> select employee_id,last_name,salary from employees where salary < job_id="'IT_PROG'; • INTERSECT40. Tampilkan employee id,department id dan job id dari tabel employees yang mana datanya sama dengan data yang ada di job historyJawab SQL> select employee_id,department_id,job_id from employees
intersect
select employee_id,department_id,job_id from job_history;

• FUNGSI JOIN
41. Tampilkan location id,postal code dari tabel locations dan department name dari tabel departments yang location id di tabel locations sama dengan location id yang ada di tabel departments
Jawab 
SQL> select l.location_id,l.postal_code,d.department_name from locations l right outer join departments d on(l.location_id=d.location_id);

42. Tampilkan last_name,salary ditambah 2000 dengan kolom alias ‘Bonus’ dari tabel employees dan department name dari tabel departments khusus untuk karyawan yang department id nya sama dengan department id yang ada di tabel departments
Jawab
SQL> select e.last_name,e.salary+2000 as "Bonus",d.department_name from employees e full outer join departments d on (e.department_id=d.department_id); select e.last_name,e.salary+2000 as "Bonus",d.department_name from employees e full outer join departments d on (e.department_id=d.department_id);
43. Tampilkan last name,salary dari tabel employees dan cross join dengan department name dari tabel departments
Jawab
SQL> select last_name,salary,department_name from employees cross join departments;

44. Tampilkan employee id,last name dari table employees city dari table location dan department name dari tabel departments
Jawab
SQL> select employee_id,last_name,department_name from employees e join departments d on d.department_id=e.department_id join locations l on d.location_id=l.location_id;

• Operator UNION
45. Tampilkan employee id,job id dan salary dari tabel employees dan gabungkan dengan employee id dan job id yang ada di tabel job history
Jawab
select employee_id,job_id,salary from employees
union
select employee_id,job_id,0 from job_history;
• JOIN FULL
46. Tampilkan employee id,last name dan salary yang salary nya termasuk 9000,6000,4200 dari semua salary karyawan.dengan memakai operator all
Jawab 
SQL> select employee_id,last_name,salary from employees where salary <> 
47. Gabungkan semua data dari tabel employees dan job history yang yang terdapat data yang sama
Jawab
SQL> select employee_id,job_id,department_id from employees
union all
select employee_id,job_id,department_id from job_history order by employee_id;
• INTERSECTION
48. Tampilkan location id dari tabel departments dan locations untuk nilai id yang sama antara tabel departments dan tabel locations
Jawab
SQL> select location_id from departments
intersect
select location_id from locations;

• COMMIT
49. Tampilkan lah last name dan salary dimana last name nya di awali dengan huruf A, dan simpan lah data tersebut
Jawab
SQL> select last_name,salary from employees where last_name like 'A%';
LAST_NAME SALARY
----------------------------------- ----------
Austin 4800
Atkinson 2800
Ande 6400
Abel 11000 
commit;
• PEMBUATAN INDEX
50. Buatlah kolom NIP pada table karyawan sebagai index
Jawab
SQL> create index karyawan_nip_idx on karyawan(nip);
Output
‘ 
• PEMBUATAN USER
51. Buat lah user baru pada table karyawan dengan user = sofyan dan password = sosa
Jawab
SQL> create user sofyan identified by sosa;
• VIEW
52. Buatlah view pada table karyawan dengan nama lihat untuk menampilkan semua data yang ada di table karyawan
Jawab
SQL> create view lihat as select * from karyawan;
• DATA CONTROL LANGUAGE (DCL)
53. Buatlah hak akses untuk user dengan nama sosa yang mana user nya hanya diperboleh kan menghapus table
Jawab
SQL> grant delete on karyawan to sosa;
54. Buatlah hak akses untuk user dengan nama sosa yang mana user tersebut hanya boleh menambah isi table
Jawab
SQL> SQL> grant insert on karyawan to sosa;
53. Hapus hak akses delete dari user sosa 
Jawab
Revoke delete on karyawan from sosa;
• CONSTRAINT
54.Buatlah kolom NIP sebagai primary key pada table karyawan
Jawab
SQL> alter table karyawan add constraint pk_nip primary key (nip); 
55. Buatlah kolom email pada table pegawai sebagai kolom unique
Jawab
SQL> alter table karyawan add constraint uq_email unique (email);
56. defenisikan agar kolom kode_bag dari table karyawan selalu menyamakan ke kolom kode pada table jabatan
Jawab 
SQL> alter table karyawan add constraint fk_kode_bag FOREIGN KEY (kode_bag) REFERENCES jabatan(kode); 
KETERANGAN
Scema yang digunakan adalah Scema HR dengan menggunakan beberapa table sebagai berikut :
1. Pada soal 1 s/d 10 disini menggunakan table barang
2. Pada soal 11 s/d 49 disini menggunakan table employees, job, histories,locations dan departments
3. Pada soal 50 s/d 56 disini menggunakan table karyawan dan jabatan

Tampilkan seluruh film yang diproduksi tahun 2010

Pengertian singkat tentang “subquery” adalah perintah SELECT yang berada di dalam perintah SQL lain. Subquery sangat berguna ketika kita ingin menampilkan data dengan kondisi yang bergantung pada data di dalam table itu sendiri.
Berikut ini adalah sebuah contoh soal dari penggunaan Subquery: 
Sebelumnya kita akan membuat table terlebih dahulu: 

1. Tmaster


Note: NO dijadikan sebagai primary key

2. Tanggota 


Note: ID dijadikan sebagai primary key

3. Ttransaksi 


Note: terdapat foreign key, yaitu pada ID_peminjam dan NOFILM.
Langsung saja kita latihan yaa..

Soal no. 1 :

Tampilkan seluruh film yang diproduksi tahun 2010.

Query:

Select judul from tmaster where tahun in (select tahun from tmaster where tahun = ‘2010’);

Output: 





Soal no. 2 :

Tampilkan film – film yang BUKAN ber-genre ‘action’.

Query :

Select judul from tmaster where genre not in (select genre from tmaster where genre = ‘action’);

Output:



Soal no.3 : 
Tampilkan jumlah film yang diproduksi pada tahun ‘2007’.

query: 

select count(judul) from tmaster where tahun in (select tahun from tmaster where tahun = '2007');

Output:



soal no. 4:

tampilkan nomor ID peminjam yang dendanya sebanyak 1000.

query:

select id_peminjam from ttransaksi where denda in (select denda from id_peminjam where denda = '1000'); 

output: 



soal no.5 : 

tampilkan nama - nama peminjam yang tidak memiliki denda pada transaksi peminjaman

query : 

select ta.nama from tanggota ta, ttransaksi tt where ta.id = tt.id_peminjam and tt.denda in (select min(denda) from ttransaksi);

output: 



soal no. 6 : 

tampilkan jumlah denda dari RINTUL.

query :

select sum(denda) from tanggota ta join ttransaksi tt on (ta.id = tt.id_peminjam)
where ta.nama in (select ta.nama from tanggota ta where ta.nama = 'rintul');

output: 



soal no. 7 :

tampilkan data - data peminjaman anggota antara 1 januari 2005 sampai 1 januari 2007. 

query :

select tt.id_peminjam, tt.nofilm, tt.tgl_pinjam, tt.tgl_kembali, tt.denda from tanggota ta join ttransaksi tt on (ta.id = tt.id_peminjam) where tt.tgl_pinjam in (select tt.tgl_pinjam from ttransaksi tt where tt.tgl_pinjam between '01-01-2005' and '04-03-2010');

output: 



soal no. 8 : 

tampilkan data peminjaman anggota yang bernama 'OCTOSIS'.

query: 

select tt.id_peminjam, tt.nofilm, tt.tgl_pinjam, tt.tgl_kembali. tt.denda from ttransaksi tt, tanggota ta where ta.id = tt.id_peminjam and ta.nama in (select ta.nama from tanggota ta where ta.nama = 'octosis');

output: 



soal no. 9 :

bimantoko ingin melihat film apa saja yang telah dia pinjam beserta data peminjaman lainnya di bawah tahun 2010 dan dendanya jika ada.

query:

select tt.id_peminjam, tt.nofilm, tt.denda, tm.judul, tt.tgl_pinjam, tt.tgl_kembali from ttransaksi tt, tmaster tm, tanggota ta where ta.id = tt.id_peminjam and tm.no = tt.nofilm and ta.nama in (select ta.nama from tanggota ta where ta.nama = 'bimantoko') and tt.tgl_pinjam in (select tt.tgl_pinjam from ttransaksi where tt.tgl_pinjam < '01-01-2010');

output: 



soal no.10 : 

tampilkan semua nama anggota yang meminjam film 'transformer 2'.

query:

select ta.nama from tanggota ta, tmaster tm, ttransaksi tt where ta.id = tt.id_peminjam and tm.no = tm.nofilm and tm.judul in (select tm.judul from tmaster tm where tm.judul = 'transformer 2');

output: 

Senin, 03 Juni 2013

Script Proses Edit File Yang Telah Diupload Ke Database MySQL

Script Proses Edit File Yang Telah Diupload Ke Database MySQL   

December 20th, 2009 | by rosihanari | Cetak Artikel Cetak Artikel



Beberapa waktu yang lalu, saya pernah memaparkan teknik untuk membuat script PHP untuk proses upload dan download file ke dalam database MySQL. Nah… pada artikel kali ini, akan saya paparkan hal yang masih kelanjutan dari artikel tersebut, yaitu proses update file yang telah diupload.
Pada prinsipnya proses update file yang telah terupload ke MySQL ini sama ketika proses uploadnya. Bedanya hanya pada query SQL nya saja. Ketika proses upload, kita gunakan query INSERT sedangkan untuk proses updatenya kita gunakan UPDATE. :-)seperti halnya jika kita edit/update data pada umumnya. Mudah bukan??
OK… let’s begin..
Andaikan kita punya tabel upload sebagai berikut ini:
01.CREATE TABLE `upload` (

02.`id` int(11) auto_increment,

03.`namevarchar(30),
04.`type` varchar(30),
05.`sizeint(11),
06.`dateupload` date,
07.`content` longblob,
08.`keterangan` text,
09.PRIMARY KEY  (`id`)
10.)
Keterangan:
field ‘name’ menunjukkan nama file yang diupload, ‘type’ adalah tipe/jenis file yang diupload, ‘size’ adalah ukuran file, ‘dateupload’ menunjukkan tanggal upload, ‘content’ adalah isi dari file, dan ‘keterangan’ menunjukkan deskripsi dari file.
Karena struktur tabelnya agak beda dengan artikel sebelumnya, maka kita mulai lagi pembahasannya dari membuat script upload nya dahulu.
formupload.htm
01.<h1>Upload File</h1>
02. 
03.<form method="post" enctype="multipart/form-data" action="upload.php">
04.Pilih File <br>
05.<input name="userfile" type="file"><br>
06.Keterangan:<br>
07.<textarea name="keterangan"></textarea><br>
08.<input name="upload" type="submit" value="Upload">
09.</form>
Tampilan dari halaman upload di atas adalah sbb:
script upload file
Untuk menghubungkan script PHP ke MySQL, kita buat dulu script koneksi
koneksi.php
1.<?php
2.// koneksi ke mysql
3.mysql_connect('dbhost','dbuser','dbpass');
4.mysql_select_db('dbname');
5.?>
Berikutnya kita buat script untuk proses uploadnya
upload.php
01.<?php
02.// koneksi ke mysql
03.include "koneksi.php";
04. 
05.// membaca tanggal sekarang
06.$tanggal date("Y-m-d");
07. 
08.// membaca keterangan
09.$ket $_POST['ket'];
10. 
11.// membaca nama file
12.$fileName $_FILES['userfile']['name'];    
13. 
14.// membaca nama file temporary
15.$tmpName  $_FILES['userfile']['tmp_name'];
16. 
17.// membaca size file
18.$fileSize $_FILES['userfile']['size'];
19. 
20.// membaca tipe file
21.$fileType $_FILES['userfile']['type'];
22. 
23.// membaca isi file yang diupload
24.$fp  fopen($tmpName'r');
25.$content fread($fpfilesize($tmpName));
26.$content addslashes($content);
27.fclose($fp);
28. 
29.// query SQL untuk menyimpan isi file dan informasi lainnya ke database
30. 
31.$query = "INSERT INTO upload (name, size, type, content, dateupload, keterangan)
32.VALUES ('$fileName''$fileSize''$fileType''$content','$tanggal''$ket')";
33. 
34.$hasil = mysql_query($query);
35. 
36.// konfirmasi proses upload
37.if ($hasil)  echo "<p>File ".$fileName." telah terupload</p>";
38.else echo "<p>File ".$fileName." gagal diupload</p>";
39. 
40.?>
Setelah file terupload, maka ada baiknya kita buat script untuk menampilkan daftar file yang sudah diupload. Di dalam daftar itu nanti kita coba tampilkan nomor ID file, nama file, tanggal diupload, serta link untuk proses update filenya. Oya, nanti di nama file, kita sertakan link untuk proses downloadnya.
Ini dia script untuk menampilkan daftar filenya
list.php
01.<?php
02.// koneksi ke mysql
03.include "koneksi.php";
04. 
05.echo "<h2>Daftar File Upload</h2>";
06. 
07.// query untuk membaca semua file yang terupload
08.$query "SELECT * FROM upload";
09.$hasil = mysql_query($query);
10. 
11.// menampilkan daftar file
12.echo "<table border='1'>";
13.echo "<tr><th>ID</th><th>Nama File</th><th>Tanggal Upload</th><th>Keterangan</th><th>Action</th></tr>";
14.while ($data = mysql_fetch_array($hasil))
15.{
16.echo "<tr><td>".$data['id']."</td><td><a href='download.php?id=".$data['id']."'>".$data['name']."</a></td><td>".$data['dateupload']."</td><td>".$data['ket']."</td><td><a href='edit.php?id=".$data['id']."'>Edit</a></td></tr>";
17.}
18.echo "</table>";
19. 
20.?>
Keterangan: Jangan lupa untuk menyertakan parameter nomor ID file pada link proses download dan updatenya. Karena nomor ID ini nanti akan digunakan untuk mengidentifikasi file mana yang akan didownload atau diupdate.
Berikut ini tampilan dari daftar file yang diupload.
script upload file
Untuk proses downloadnya, kita buat script berikut ini
download.php
01.<?php
02. 
03.// koneksi ke mysql
04.include "koneksi.php";
05. 
06.// membaca nilai ID file yang berasal dari link download.php?id=...
07.$id      $_GET['id'];
08. 
09.// query untuk membaca data file berdasarkan ID
10.$query   "SELECT * FROM upload WHERE id = $id";
11. 
12.$hasil   = mysql_query($query);
13.$data    = mysql_fetch_array($hasil);
14. 
15.// mengenerate proses download file
16.header("Content-Disposition: attachment; filename=".$data['name']);
17.header("Content-length: ".$data['size']);
18.header("Content-type: ".$data['type']);
19. 
20.echo $data['content'];
21. 
22.?>
Sedangkan untuk proses edit file, kita arahkan linknya menuju form edit
edit.php
01.<h1>Edit File</h1>
02. 
03.<?php
04.// koneksi ke mysql
05.include "koneksi.php";
06. 
07.// membaca ID file yang akan diedit
08.$id $_GET['id'];
09. 
10.// membaca data deskripsi dari file
11.// deskripsi ini nanti akan ditampilkan di form edit
12. 
13.$query "SELECT keterangan FROM upload WHERE id = '$id'";
14.$hasil = mysql_query($query);
15.$data  = mysql_fetch_array($hasil);
16.?>
17. 
18.<form method="post" enctype="multipart/form-data" action="update.php">
19.Pilih File <br>
20.<input name="userfile" type="file"><br>
21.Keterangan:<br>
22.<textarea name="ket"><?php echo $data['keterangan']; ?></textarea>
23.<input type="hidden" name="id" value="<?php echo $id; ?>">
24.<br>
25.<input name="submit" type="submit" value="Update">
26.</form>
Nah.. selanjutnya kita buat script update nya. Untuk idenya, sebelum proses update, kita harus mengecek dahulu apakah filenya diupdate atau tidak, ataukah hanya deskripsi (keterangan) filenya saja. Jika filenya tidak diupdate, maka kita hanya gunakan query untuk update deskripsinya saja.
Untuk mengecek apakah filenya diupdate atau tidak, kita hanya ngecek file size nya saja. Jika filenya diupdate, maka file sizenya tidak sama dengan 0. Namun jika file sizenya sama dengan 0 maka file tidak diupdate.
Mengapa menggunakan logika tsb? Ya… karena file size sama dengan 0 itu maksudnya user tidak memilih file baru untuk diupload menggantikan file lama.
OK… sekarang kita terapkan ide tersebut
update.php
01.<?php
02. 
03.// koneksi ke mysql
04.include "koneksi.php";
05. 
06.// membaca tanggal sekarang
07.$tanggal date("Y-m-d");
08. 
09.// membaca ID file yang akan diupdate
10.$id $_POST['id'];
11. 
12.// membaca keterangan
13.$ket $_POST['ket'];
14. 
15.// membaca size file
16.$fileSize $_FILES['userfile']['size'];
17. 
18.if ($fileSize > 0)
19.{
20.// jika file size > 0 maka proses update file dilakukan
21. 
22.// membaca nama file
23.$fileName $_FILES['userfile']['name'];    
24. 
25.// membaca nama file temporary
26.$tmpName  $_FILES['userfile']['tmp_name'];
27. 
28.// membaca tipe file
29.$fileType $_FILES['userfile']['type'];
30. 
31.// membaca isi file yang diupload
32.$fp      fopen($tmpName'r');
33.$content fread($fpfilesize($tmpName));
34.$content addslashes($content);
35.fclose($fp);
36. 
37.// query SQL untuk update data file
38. 
39.$query = "UPDATE upload
40.SET name = '$fileName', size = '$fileSize', type ='$fileType', content = '$content',
41.dateupload = '$tanggal', keterangan = '$ket'
42.WHERE id = '$id'";
43.}
44.else
45.{
46.// jika file size tidak lebih besar dari 0 maka hanya deskripsi file nya saja yang diupdate
47.$query "UPDATE upload SET keterangan = '$ket' WHERE id = '$id'";
48.}
49. 
50.// jalankan query update
51.$hasil = mysql_query($query);
52. 
53.// konfirmasi proses upload
54.if ($hasil)  echo "<p>Berhasil diupdate</p>";
55.else echo "<p>Gagal diupdate</p>";
56. 
57.?>
Selesai dah membuat script update filenya… prinsipnya sama kan dengan proses update data seperti umumnya? OK selamat mengembangkan sendiri ya..