PHP ve MySQL Multiple Upload yapımı

Bu dersimde file input'un multiple özelliğini kullanarak sunucuya nasıl dosya upload edilir onu göstereceğim.

Selam arkadaşlar,

Bu dersimde file input'un multiple özelliğini kullanarak sunucuya nasıl dosya upload edilir, onu göstereceğim.

Ben bu dersimde sadece resim uploadı, veritabanından ve sunucudan resim silme işlemi yaptırdım. Siz dosya uploadı vs. de yaptırabilirsiniz. Mantık aynı mantık. Değişen bir şey yok. Sadece sizin belirteceğiniz uzantılar veya şartlar olabilir. Mesela, "sadece .exe uzantılı dosyalar upload edilsin" gibisinden. Bu size kalmış bir şey.

Örneği görmek için tıklayın - Örneği indirmek için tıklayın

Not: Yukarıda verdiğim örnekde sadece çoklu seçim yapabilirsiniz, güvenlik gereği upload yapamassınız. Ama verdiğim kaynak dosyada veya aşağıdaki kodlarda upload yapılabilir şekilde paylaşıyorum.

Önce MySQL veritabanımızı oluşturuyoruz.


CREATE TABLE IF NOT EXISTS `resimler` (

  `id` int(11) NOT NULL auto_increment,

  `resim` varchar(255) NOT NULL,

  `boyut` int(11) NOT NULL,

  `tur` varchar(10) NOT NULL,

  PRIMARY KEY  (`id`)

) ENGINE=MyISAM  DEFAULT CHARSET=latin5 AUTO_INCREMENT=11 ;


Peki neler yaptık?
Resimlerimizin veri olarak kaydedilebilmesi için 3 tablo içeren bir veritabanı oluşturduk.

Veritabanı bağlantı dosyamızı oluşturuyoruz - dbconfig.php

<?php 

##################################################

#           Veritabanı Ayarları

#

#   $vt_host      = Veritabanı Hostu

#   $vt_kullanici = Veritabanı Kullanıcı Adı

#   $vt_sifre     = Veritabanı Şifresi

#   $vt_adi       = Veritabanı Adı

#

##################################################



$vt_host       "localhost";

$vt_kullanici  "gknsoftware";

$vt_sifre      "";

$vt_adi        "gknsoftware";



//VeritabanI bağlantIsInI yapIyoruz

$vtbaglan = @mysql_connect($vt_host,$vt_kullanici,$vt_sifre) or die("Veritabanı bağlantısı sağlanamadı!");

mysql_select_db($vt_adi,$vtbaglan) or die("Veritabanı bulunamadı!");

@
mysql_query("SET NAMES 'latin5'"); //MySQL Türkçe Karakter Sorunu

?> ?>


Peki neler yaptık?
Veritabanından resim silmek, resim eklemek ve resim çekmek için bir bağlantı dosyası yarattık.

Temel kodlamalarımızın bulunduğu - index.php

<?php 

require_once("dbconfig.php");

?>

<!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>

<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-9" />

<title>Resim Upload</title>

</head>



<body>



$islem = $_GET['islem'];//İşlem isminde bir string değişken tanımlıyoruz

switch($islem){

case "":

$query = mysql_query("SELECT * FROM resimler");//Resimleri çekmek için gerekli mysql kodumuz

while($result = mysql_fetch_array($query)){//Resimleri çekiyoruz

    echo '

    <img src="'.$result['resim'].'" width="125" height="125" />

    <a href="index.php?islem=sil&id='.$result['id'].'">SİL</a>

    ';

}

?>

    <h2>Resim Upload Formu</h2>

    <form method="post" action="index.php?islem=upload" enctype="multipart/form-data">

      <input name="imagesUpload[]" type="file" min="1" max="3" multiple />

      <input type="submit" value="Send">

    </form>



break;



case "upload"://upload string değişken değerimiz

$img_target = "resimler/"; //Resmin yükleneceği yer

foreach ($_FILES["imagesUpload"]["error"] as $upload => $error) {//Foreach döngüsü kurarak toplu seçimde array olaran gelen resimleri alıyoruz

    if ($error == UPLOAD_ERR_OK) {//Resim seçilmiş ve hata yok ise upload yap

        $img_source = $_FILES["imagesUpload"]["tmp_name"][$upload];

        $img_name = $_FILES["imagesUpload"]["name"][$upload];



        move_uploaded_file($img_source,$img_target.'/'.$img_name);

        $resim = "resimler/".$img_name."";



        $query = mysql_query("INSERT INTO resimler (resim) VALUES ('$resim')");

        echo '<meta http-equiv="refresh" content="2;URL=index.php">';

    }else{//Resim seçilmemiş ve hata var ise

        echo "Bir resim seçmelisiniz!";

    }

}

break;



case "sil"://sil string değişken değerimiz

$id = $_GET['id'];

$silincek_resim = mysql_query("SELECT * FROM resimler WHERE id=$id"); //Silincek resmin ismini çekmek için gerekli mysql kodumuz

$silincek_resim_yeni = mysql_fetch_array($silincek_resim); //Silincek resmin ismini çekmek için mysql_fetch_array() fonksiyonumuzu kullanıyoruz

$sil = mysql_query("DELETE FROM resimler WHERE id=$id");



if($sil){//Eğer başarılı olursa resmi veritabanından ve sunucudan sil

echo '

<script>alert("Resim silindi!");</script>

<meta http-equiv="refresh" content="0;URL=index.php">';

@unlink($silincek_resim_yeni['resim']); //Resmi sunucudan silmek için gerekli fonksiyonumuz

}else{//Eğer başarısız olursa hata mesajı ver

echo '

<script>alert("Hata! Resim Silinemedi");</script>

<meta http-equiv="refresh" content="0;URL=index.php">';

}

break;

}

?>

</body>

</html> ?>



Peki neler yaptık?

Ben her zamanki gibi anlaşılır ve kolay olsun diye string değişken kullanarak işlemlerimi yaptım. Önce islem isminde bir string değişken oluşturup bu değişken boş ise deyip resim upload formumu ve upload edilen resimlerimizi ekrana getirdik. Daha sonra input file elemanımızın multiple özelliğini kullanarak name(isim) kısmına bir isim belirttik. Çoklu seçimde resimler bize array(dizi) halinde geleceği için belirttiğimiz name kısmının sonuna [] array işlemlerindeki köşeli parantezleri koydum.

Daha sonra formumu, oluşturduğum islem string değişkeninin upload değerine gönderdim. Burda az önce söylediğim gibi resimler array olarak geldiği için bir foreach döngüsü bizim işimizi görücektir. Bir foreach döngüsü oluşturarak seçilen resimleri array'dan çıkartıyoruz.

Sonra bir if döngüsü kurarak. Eğer resim seçilmiş ve hata yok ise seçilen resimleri upload et ve veritabanına yazdır diyoruz, eğer resim seçilmemiş ve bir hata var ise bir hata mesajı verdiriyoruz.

Silme işlemi için islem string değişkenine atadığım sil değerine bir id yollatıp mysql_query kullanarak gelen id'ye göre silinecek resmi belirliyoruz, hem veritabanından hemde unlink fonksiyonu ile sunucudan siliyoruz.

Bu dersimiz de bu kadar arkadaşlar...

  • Etiketler;
Yorum Yaz

Yorum yazabilmek için üye girişi yapmanız gerekiyor!

selam üstad, aynı kodlarlavideo da ekleyebilirmiyiz ?
video eklemek istiyorum ancak yapamıyorumbu kodlarla video ekleyebilirmiyim ?
Merhabalar, Dosya benim için çok yararlı oldu teşekküler. Fakat ne yaparsam yapayım 3 dosya sınırını aşamadım. min max kısmını değiştirsemde kaldırsamda 3 dosyadan fazlasını yükleyemiyorum. Hata şu: Warning: Invalid argument supplied for foreach() in Yardımınız için teşekkürler...
merhabalar gökhan bey vermis oldugunuz programi bende kullandim, ve resim yuklerken su hatayi veriyor Warning: move_uploaded_file(resimler//nl.PNG) [function.move-uploaded-file]: failed to open stream: No such file or directory in C:xampphtdocsphp_bkdzindexx.php on line 40 Warning: move_uploaded_file() [function.move-uploaded-file]: Unable to move 'C:xampptmpphp1F3.tmp' to 'resimler//nl.PNG' in C:xampphtdocsphp_bkdzindexx.php on line 40 sizde hata nerdedir yardimci olursaNIZ sevinirim
hocam elllerinize sağlık sorunsuz çalışıyor anca bu scripte crop ve thumbnail özellikleri eklemenin bir yolu varmıdır
Arkadaşlar üzerinden çok zaman geçmiş farkındayım ama bana yardımcı olun benim istediğim çoklu resim upload ederken bunun yanında katagorileri de eklemek. resimdeki gibi basıt bir olay bilene ama ben yapamadım sizden destek bekliyorum. Kolay gelsin.

Yukarı Git