Jumat, 28 Januari 2011

Upload File


Upload File
<form action="upload.php" method="POST" ENCTYPE="MULTIPART/FORM-DATA">
nama berkas : <input type="file" name="namafile">
</form>
Perjatikan bahwa tag <FORM> pada script diatas mengandung atribut ENCTYPE yang berisi "MULTIPART/FORM-DATA". Pada tag ini, ACTION (yang menyatakan file yang akan dijalankan sekiranya tombol SUBMIT diklik) diisi dengan file upload.php.
<input type="file" name="namafile">
Adalah perintah untuk menangani penentuan file oleh pemilih.
$datafile = $_FILES["namafile"];
Untuk memperoleh nama file, mula-mula ditangani melalui pernyataan disamping.
Perhatikan bahwa superglobal $_FILES dipakai untuk memperoleh data yang didasarkan pada nama variabel namafile(nama variabel dalam upload.php yang menyatakan nama file yang di-upload). Hasil dari $_FILES["namafile"] berupa array. Untuk mendapatkan nama file yang sesungguhnya, diperlukan indeks berupa “name” terhadap $datafile. Jadi,
$datafile["name"];
Untuk mengambil nama file yang diupload.
Dalam hal ini, PHP akan melakukan penyalinan terhadap file bersangkutan kesuatu folder sementara pada server. Folder ini dapat diatur melalui direktif upload_tmp_dir yang terdapat pada file php.ini.
Sekiranya file tidak di-upload (misalnya tidak ada file yang dipilih ketika pemakai mengklik Upload), nama file akan berupa string kosong.


Membatasi ukuran file
Ukuran file yang dapat di-upload bergantung pada direktif upload_max_files yang terdapat pada file php.ini. Tentu saja anda bisa secara langsung melakukan perubavhan pada file tersebut. Namun, ada cara lain yang dapat anda lakukan pada kode HTML, yaitu dengan menambahkan baris seperti berikut :
<input type="HIDDEN" name="MAX_FILE_SIZE" value="1024">
Yang terpenting, kode diatas perlu diletakkan sebelum INPUT yang bertipe FILE. Sebagai informasi tambahan yang perlu anda ketahui, 1024 pada VALUE menyatakan ukuran file terbesar yang dapat disalin ke server. Satuanya adalah byte.
Kode lengkap yang melibatkan MAX_FILE_SIZE :
<form action="upload.php" method="POST" ENCTYPE="MULTIPART/FORM-DATA">
<input type="HIDDEN" name="MAX_FILE_SIZE" value="1024">
nama berkas : <input type="FILE" name="upload">
</form>
Bila ukuran file yang akan di-upload lebih dari nilai pada MAX_FILE_SIZE, variabel yang disebutkan pada INPUT berupa FILE akan berisi string kosong.
           
Mengetahui tipe, ukuran, dan letak file yang di-upload
Sebagaimana telah dijelaskan didepan, hasil dari semacam $_FILES["namafile"] berupa array, jika anda mengenakan indeks berupa “name”, terhadap array tersebut maka akan diperoleh nama file. Selain “name” anda bisa mengenakan indeks berupa “type”, “size”, dan “tmp_name”.
Tabel. 000XX. Indeks yang dapat dikenakan untuk array.
Indeks
Hasil
Name
Nama file
Type
Type file
Size
Ukuran file dalam byte
Tmp_name
Nama file sementara setelah di-upload
Contoh penulisan :
$datafile = $_FILES["namafile"];
$namafile = $datafile["name"];
$tipe = $datafile["type"];
$ukuran = $datafile["size"];
$file_sementara = $ $datafile["tmp_name"];

Menangani penyalinan secara permanen
Sebagai mana telah diterangkan, file yang di-upload akan ditaruh pada folder yang bersifat sementara. Supaya file tidak hilang, anda perlu menyalinnya pada lokasi Anda sendiri.
Contoh penulisan untuk salin :
$file_sementara = $_FILES["namafile"]["tmp_name"];
$namafile = $_FILES["namafile"]["name"];

if(copy($file_sementara,"c:/wamp/www/images/$namafile"))
{
      print("Berkas $namafile_name telah disalin");
      unlink($file_sementara);
}
copy($file_sementara,"c:/wamp/www/images/$namafile")
Digunakan untuk mengkopi file, dari folder sementara ke folder yang telah dibuat.
unlink($file_sementara);
Digunakan untuk menghapus file pada folder sementara.
Sebelum melakukan penyalinan secara permanen, Anda juga bisa melakukan validasi apakan file misalnya bertipe gambar atau tidak. Anda bisa menggunakan indeks “type” pada hasil $_FILES[“namafile”].

Berikut adalah contoh kode program untuk upload images
Buatlah tabel di mysql dengan nama tbl_barang dengan field : id_barang, kode_kategori, nama_barang, harga, keterangan, stok, gambar, berat_kg.

Buatlah file index.php dan copy script dibawah ini :
<?php
	if(isset($_GET["action"])){
		if($_GET["action"]=="edit"){
			$sql2 = mysql_query("select * from tbl_barang where kode_barang='".$_GET["kb"]."'");
			$data2 = mysql_fetch_array($sql2);
			
			$kategori		= $data2["kode_kategori"];
			$nama_barang	= $data2["nama_barang"];
			$harga			= $data2["harga"];
			$keterangan		= $data2["keterangan"];
			$stok			= $data2["stok"];
			$kode_barang	= $data2["kode_barang"];
			$berat_kg		= $data2["berat_kg"];
		}
		if($_GET["action"]=="hapus"){
			//------hapus gambar terlebih dahulu
			$nama_gambar = getNamagambar($_GET["kb"]);
			@unlink("images/barang/".$nama_gambar); //sesuaikan letak folder
			$sql = mysql_query("delete from tbl_barang where kode_barang = '".$_GET["kb"]."'");
			if($sql){
				?>
					<script language="javascript">
						alert("Berhasil di Hapus");
						window.location.href="index.php";
					</script>
				<?php
			}
		}
	}
	
	if(isset($_POST["tombol"])){
		if($_POST["tombol"]=="Simpan"){
			$lokasi_file=$_FILES['fupload']['tmp_name'];
			$nama_file = $_FILES['fupload']['name'];
			if(strlen($lokasi_file)!=0 and strlen($nama_file)!=0){
				//------seputar upload image penambahan nama
				$now = time();
				$a=str_replace(" ","_",$nama_file);
				$b=str_replace("(","",$a);
				$c=str_replace(")","",$b);
				while(file_exists($uploadFilename = $now.'-'.$c)){
					$now++;
				}
				//------seputar upload image move to folder
				$direktori= "images/barang/$uploadFilename"; //sesuaikan letak folder
				if(move_uploaded_file($lokasi_file,$direktori)){   
					$sql = mysql_query("insert into tbl_barang (kode_kategori,nama_barang,harga,keterangan,stok,gambar,berat_kg) values ('".$_POST["txtkategori"]."',
					'".$_POST["txtnama_barang"]."',
					'".$_POST["txtharga"]."',
					'".$_POST["txtketerangan"]."',
					'".$_POST["txtstok"]."',
					'".$uploadFilename."',
					'".$_POST["txtberat"]."')");
					if($sql){
						?>
							<script language="javascript">
								alert("Berhasil di simpan");
								window.location.href="index.php";
							</script>
						<?php
					}else{
						?>
							<script language="javascript">
								alert("Gagal di simpan");
								window.location.href="index.php";
							</script>
						<?php
					}
				}
			}
		}
		if($_POST["tombol"]=="Edit"){
			$lokasi_file=$_FILES['fupload']['tmp_name'];
			$nama_file = $_FILES['fupload']['name'];
			if(strlen($lokasi_file)!=0 and strlen($nama_file)!=0){
				//------hapus gambar terlebih dahulu
				$nama_gambar = getNamagambar($_POST["txtkode_barang"]);
				$hapus = unlink("images/barang/".$nama_gambar);//sesuaikan letak folder
				if($hapus){
					//------seputar upload image penambahan nama
				$now = time();
				$a=str_replace(" ","_",$nama_file);
				$b=str_replace("(","",$a);
				$c=str_replace(")","",$b);
				while(file_exists($uploadFilename = $now.'-'.$c)){
					$now++;
				}
				//------seputar upload image move to folder
				$direktori= "images/barang/$uploadFilename";//sesuaikan letak folder
				if(move_uploaded_file($lokasi_file,$direktori)){   
					$sql = mysql_query("update tbl_barang set 
					kode_kategori	='".$_POST["txtkategori"]."',
					nama_barang		='".$_POST["txtnama_barang"]."',
					harga			='".$_POST["txtharga"]."',
					keterangan		='".$_POST["txtketerangan"]."',
					stok			='".$_POST["txtstok"]."',
					gambar			='".$uploadFilename."',
					berat_kg			='".$_POST["txtberat"]."'
					where kode_barang='".$_POST["txtkode_barang"]."'");
					
					if($sql){
						?>
							<script language="javascript">
								alert("Berhasil di Edit");
								window.location.href="index.php";
							</script>
						<?php
					}else{
						?>
							<script language="javascript">
								alert("Gagal di Edit");
								window.location.href="index.php";
							</script>
						<?php
					}
				}
				}else{
					?>
						<script language="javascript">
							alert("Gagal di Edit");
							window.location.href="index.php";
						</script>
					<?php
				}
			}else{
				$sql = mysql_query("update tbl_barang set 
				kode_kategori	='".$_POST["txtkategori"]."',
				nama_barang		='".$_POST["txtnama_barang"]."',
				harga			='".$_POST["txtharga"]."',
				keterangan		='".$_POST["txtketerangan"]."',
				stok			='".$_POST["txtstok"]."',
				berat_kg		='".$_POST["txtberat"]."'
				where kode_barang='".$_POST["txtkode_barang"]."'");
				
				if($sql){
					?>
						<script language="javascript">
							alert("Berhasil di Edit");
							window.location.href="index.php";
						</script>
					<?php
				}else{
					?>
						<script language="javascript">
							alert("Gagal di Edit");
							window.location.href="index.php";
						</script>
					<?php
				}
			}
		}
	}
?>

<form name="form1" action="" method="post" enctype="multipart/form-data">
<table width="402" border="0">
  <tr>
    <td width="28%">Kategori</td>
    <td width="4%">:</td>
    <td width="68%">
    <select name="txtkategori" id="txtkategori">
     	<option value="">::Pilih::</option>
		<?php 
        $a=mysql_query("select*from tbl_kategori order by nama_kategori asc");
        while($aa=mysql_fetch_array($a)){
        ?>
        <option value="<?php echo $aa["kode_kategori"];?>" <?php if($aa["kode_kategori"]==$kategori){echo"selected";}?>><?php echo $aa["nama_kategori"];?></option>
        <?php
        }
        ?>
    </select>    </td>
  </tr>
  <tr>
    <td>Nama Barang</td>
    <td>:</td>
    <td><input type="text" name="txtnama_barang" size="25" id="txtnama_barang" value="<?php echo $nama_barang;?>"  /></td>
  </tr>
  <tr>
    <td>Harga</td>
    <td>:</td>
    <td><input type="text" name="txtharga" size="10" id="txtharga" value="<?php echo $harga;?>"  /></td>
  </tr>
  <tr>
    <td valign="top">Keterangan</td>
    <td valign="top">:</td>
    <td><textarea name="txtketerangan" rows="3" cols="30"><?php echo $keterangan;?></textarea></td>
  </tr>
  <tr>
    <td>Stok</td>
    <td>:</td>
    <td><input type="text" name="txtstok" size="10" id="txtstok" value="<?php echo $stok;?>"  /></td>
  </tr>
  <tr>
    <td>gambar</td>
    <td>:</td>
    <td><input type="file" name="fupload">
    <?php
		if(isset($_GET["action"]) && $_GET["action"]=="edit"){
			?>
            	<font color="#339900"><b>Apabila gambar tidak mau diganti kosongi saja.</b></font>
			<?php
		}
    ?>    </td>
  </tr>
  <tr>
    <td>Berat</td>
    <td> </td>
    <td><input type="text" name="txtberat" size="10" id="txtberat" value="<?php echo $berat_kg;?>"  /></td>
  </tr>
  <tr>
    <td> </td>
    <td> </td>
    <td> </td>
  </tr>
  <tr>
    <td> </td>
    <td><input type="hidden" value="<?php echo $kode_barang;?>" name="txtkode_barang" /></td>
    <td>
    <?php
		if(isset($_GET["action"]) && $_GET["action"]=="edit"){
			?>
            	<input type="submit" name="tombol" value="Edit" />
                <input type="button" name="tombol" value="Batal" onclick="window.location.href="index.php"" />
            <?php
		}else{
			?>
            	<input type="submit" name="tombol" value="Simpan" />
                <input type="reset" name="tombol" value="Hapus" />
			<?php
		}
	?>    </td>
  </tr>
</table>
</form>

<div style="overflow:scroll; height:300px;">
<table width="100%" border="1" class="classTable">
  <tr>
    <th width="20">No</th>
    <th width="364">Nama Kategori</th>
    <th width="364">Nama Barang</th>
    <th width="364">Harga</th>
    <th width="364">Keterangan</th>
    <th width="364">Stok</th>
    <th width="364">Gambar</th>
    <th width="364">Berat</th>
    <th width="364">Action</th>
  </tr>
  <?php
  	$no=0;
  	$sql = mysql_query("select*from tbl_barang order by kode_barang asc");
	while($data=mysql_fetch_array($sql)){
	$no++;
  ?>
  <tr>
    <td><?php echo $no;?></td>
    <td><?php echo getNamaKategori($data["kode_kategori"]);?></td>
    <td><?php echo $data["nama_barang"];?></td>
    <td><?php echo number_format($data["harga"],2,',','.');?></td>
    <td><?php echo $data["keterangan"];?></td>
    <td><?php echo $data["stok"];?></td>
    <td><img src="images/barang/<?php echo $data["gambar"];?>" width="50" height="50"  /></td>
    <td><?php echo $data["berat_kg"];?></td>
    <td><a href="index.php?action=edit&kb=<?php echo $data["kode_barang"];?>">Edit</a> | <a href="index.php?action=hapus&kb=<?php echo $data["kode_barang"];?>" onClick="return confirm('Apakah anda benar - benar akan menghapus barang ?');">Hapus</a></td>
  </tr>
  <?php
  	}
  ?>
</table>
</div>

2 komentar:

Unknown mengatakan...

databasenya dimana gan..?

alie mengatakan...

databasenya menggunakan database test pada mysql, ini gan cara create tabelnya...
CREATE TABLE `tbl_barang` (
`kode_barang` int(11) NOT NULL auto_increment,
`kode_kategori` int(11) default NULL,
`nama_barang` varchar(30) collate latin1_general_ci default NULL,
`harga` double(11,2) default NULL,
`keterangan` varchar(50) collate latin1_general_ci default NULL,
`stok` int(11) default NULL,
`gambar` varchar(60) collate latin1_general_ci default NULL,
`berat_kg` varchar(90) collate latin1_general_ci default NULL,
PRIMARY KEY (`kode_barang`)
)

Untuk koneksinya, ini gan ada tambahan kode sedikit, taruh di bagian paling atas kode index.php diatas..
<?php
$host = "localhost";
$user = "root";
$pass = "123456";
$db = "test";
mysql_connect($host,$user,$pass) or die ("Server Mysql error");
mysql_select_db($db) or die ("Database error");

function getNamagambar($kode){
$a = mysql_query("select nama_barang from tbl_barang where kode_barang = '".$kode."'");
$b = mysql_fetch_array($a);
$c = $b["nama_barang"];
return $c;
}

function getNamaKategori($kode){
return $kode;
}
?>

semoga berhasil...

Posting Komentar

 
Design by Free WordPress Themes | Bloggerized by Lasantha - Premium Blogger Themes | Justin Bieber, Gold Price in India