Php (Resim Dosyası Yükleme - Veritabanına Ekleme/Çekme)
37591 16

Php (Resim Dosyası Yükleme - Veritabanına Ekleme/Çekme)

Uygulamada bir resim dosyasını server'a nasıl yüklenir, veritabanında nasıl saklanır ve veritabanından nasıl çekilir gibi sorulara cevap bulacağız. Resim dosyasını veritabanında ikilik sistemde doğrudan saklamak mümkün olmakla birlikte çok yer kaplamaktadır. Biz bunun yerine resmin gösterileceği sayfaya göre, dosya yolunu veritabanında saklıyoruz ve lazım olduğunda bu yol bilgisini veritabanından çekip resmin görüntülenmesini sağlıyoruz.

Uygulama kodları ve açıklamaları aşağıdaki gibidir.

<!DOCTYPE HTML>
<html lang="en-US">
<head>
    <meta charset="iso-8859-9">
	<title></title>
</head>
<body>
<?php
$baglanti=mysql_connect("localhost","root","") or die("Mysql'e bağlantı kurulamadı!") ;
mysql_select_db("deneme",$baglanti) or die("Veritabanına bağlantı kurulamadı!");
mysql_query("Set names 'latin5'");
mysql_query("set character set latin5");
mysql_query("set collation_connection= 'latin5_turkish_ci'");
if($_POST){//Form gönderildi mi?
	if ($_FILES["resim"]["size"]<1024*1024){//Dosya boyutu 1Mb tan az olsun
		if ($_FILES["resim"]["type"]=="image/jpeg"){//dosya tipi jpeg olsun
			$aciklama=$_POST["aciklama"];
			$dosya_adi=$_FILES["resim"]["name"];
			//Dosyaya yeni bir isim oluşturuluyor
			$uret=array("as","rt","ty","yu","fg");
			$uzanti=substr($dosya_adi,-4,4);
			$sayi_tut=rand(1,10000);
			$yeni_ad="dosyalar/".$uret[rand(0,4)].$sayi_tut.$uzanti;
			//Dosya yeni adıyla dosyalar klasörüne kaydedilecek
			if (move_uploaded_file($_FILES["resim"]["tmp_name"],$yeni_ad)){
				echo 'Dosya başarıyla yüklendi.';
				//Bilgiler veri tabanına kaydedilsin
				$sorgu=mysql_query("insert into resimler (resim,aciklama) values ('$yeni_ad','$aciklama')");
				if ($sorgu){
					echo 'Veritabanına kaydedildi.';
				}else{
					echo 'Kayıt sırasında hata oluştu!';
				}
			}else{
				echo 'Dosya Yüklenemedi!';
			}
		}else{
			echo 'Dosya yalnızca jpeg formatında olabilir!';
		}
	}else{			
		echo 'Dosya boyutu 1 Mb ı geçemez!';
	}
}
?>
<form action="" method="post" name="form1" enctype="multipart/form-data">
<input type="file" name="resim"/><br/>
<input type="text" name="aciklama"/><br/>
<input type="submit" name="gonder" value="Kaydet"/>
</form>
<?php
$sorgu2=mysql_query("select * from resimler");
if (mysql_num_rows($sorgu2)){
	echo '<table>';
	//Veritabanında resimler listeleniyor.
	while($kayit=mysql_fetch_array($sorgu2)){
		echo '<tr>';
		echo '<td><img src="'.$kayit["resim"].'" width="75" height="75"/></td>';
		echo '<td>'.$kayit["aciklama"].'</td>';
		echo '</tr>';
	}
	echo '</table>';
}
?>
</body>
</html>

Uygulama Dosyasını İndir

Yorumlar
seckincici 2 yıl önce dedi ki;
Paylaşım için çok teşekkür ederim. Bir sorum olacak; Resim yüklenince eskisini nasıl silebiliriz? Cevapla
admin 2 yıl önce cevap verdi;
1
Yeni resim yolu kaydedilmeden önce veri tabanından eski resim yolu alınır ve unlink fonksiyonu ile eski dosya silinir.
burakca 2 yıl önce dedi ki;
Sevgili yılmaz abi anlatımınız için çok teşekkür ederim, lakin şöyle bir sualim olacak. veri tabanı ve dosyaya kaydetmiş olduğum resimleri ID numarası ile nasıl çağırabilirim, birde resimleri yüklerken farklı karakter değil de ör:01 nolu resim 01 yazınca nasıl çağırabilirim şimdiden teşekkür eder iyi çalışmalar dilerim. Utangaç Cevapla
CrowTattoopiercing 2 yıl önce dedi ki;
mrb paylasdıgın kodlarda degişiklik yapıp hem kullanıcı adı hem email şifreyle birlıkde veritabınına kaydetmeyi başaramadım resimi ayrı kullanıcı bilgilerini ayrı yüklüyor ne yapdıysam olmadı yardım edermmisiniz Cevapla
nurullah.arslan.566 2 yıl önce dedi ki;
hocam aynı şekilde videoyüklemek istiyorum bana yardımcı olun lütfen farklı örnekler inceledim çalışmadı bu ders üzerinden düzeltme yapsak video için.. Cevapla
muhammetali 2 yıl önce dedi ki;
çok sade ve başarılı bir anlatım olmuş. Teşekkürler. Cevapla
Mami 2 yıl önce dedi ki;
Abi öncelikle siten gerçekten çok başarılı olmuş emeklerine sağlık anlatımda çok güzel benim elimde sitenin içerisinde resim yükleme ayarlarında bir değişiklik yapmak istiyorum yüklenen dosyalar hem veritabanı na vede klasöre aynı isimde yüklenen isimde olmasını istiyorum ama kodların arasında hangilerini değiştirmem gerekti ni bulamadım Cevapla
admin 2 yıl önce cevap verdi;
1
Bizim kodlarımızda açıklama satırlarında dosyaya yeni isim oluşturuyoruz şeklinde bir açıklama var. Sen bu işlemi yapmayacaksın. Dosya adını $_FILES["dosya"]["name"] ile alıyoruz. Buradan gelen ismi hem dosyayı yüklerken, hem de veri tabanına kaydederken kullanmalısın.
erhan 2 yıl önce dedi ki;
Hocam Merhaba öncelikle bilgi için teşekkür ederim yalnız bir sıkıntım var resim boyutlandırmayı yükseltmek istiyorum yada kısıtlamayı 1024x768 gibi otomatik boyutlandırma yapmak istedim başaramadım yardımcı olabilirmisin. aslında hocam bu anlatım gibi birde multi upload sistemini anlatsanız çok iyi olurdu kolay gelsinUtangaç Cevapla
KemalDoruk 1 yıl önce dedi ki;
1
Hocam bende resimler gözükmüyor neden olabilir acaba Soru Cevapla
admin 1 yıl önce cevap verdi;
Resim yolu hatalıdır başka nedeni olmaz. Ya kayıt esnasında yada listeleme esnasında oluşturduğun resim yolu hatalıdır.
muhammet 1 yıl önce dedi ki;
Öncelikle yaptığın çalışmalar çok işime yaradı fakat şöyle birşey istiyorum mantığı nasıl olur acaba? kaydettiğim resmi istediğim sayfaya kaydetmek istiyorum. veya farklı dosyalara kaydetmek istiyorum bunun için en basitleştirilmiş haliyle nasıl yaparım ?Çok Mutlu Cevapla
hakan 10 ay önce dedi ki;
YILMAZ ABI bn yaptım ama dosya yuklenemedı hatası verıyor yardımcı olurmusun ??? Cevapla
kivanc 3 ay önce dedi ki;
Bende Dosya yalnızca jpeg formatında olabilir! hatası veriyor ama yüklemeyi denediğim resimlerin hepsi jpeg türünde Cevapla
admin 3 ay önce cevap verdi;
Yüklemeye çalıştığın dosyanın "type" özelliğini ekrana yazdır. Jpeg dosyalar "image/jpeg", "image/jpg" şeklinde olabiliyor. Hiçbir kontrol yapmadan echo $_FILES["resim"]["type"]; diyerek ekrana yazdır ve dosya tipine bakıp ona göre kontrol yaptır.
kivanc 3 ay önce dedi ki;
ikisinide denedim ama olmuyor Cevapla
^
X