PHP'de fotoğrafları belli bir ID'ye göre yüklemek

Katılım
8 Nisan 2020
Mesajlar
6.601
Makaleler
7
Çözümler
63
Yer
Mile Marker LN 29.5, 51 Area.
Merhaba. Bir proje aldım ve bir şeyini halledemedim, yardımınıza ihtiyacım var.

Bir emlak sitesi ve daire eklerken fotoğraf da eklemek gerek. Daire eklemesini hallettim ancak fotoğraf eklemeyi halledemedim. Dropzone ile @kinqofkinq12 hocamın verdiği veri tabanına fotoğrafları yükleme sistemini yaptım ancak bu fotoğrafları yüklediğinde belli bir ID'ye yüklemesi gerek. Yani hem fotoğrafı, hem de bir ID'yi yüklemesi gerek ancak bunu halledemedim. Nasıl yapabilirim? Umarım derdimi anlatabilmişimdir :D
 
Son düzenleyen: Moderatör:
Dosyayi veritabanina yuklemiyorsundur blob olarak diye dusunuyorum cunku oyle yapmamalisin eger RDBMS kullaniyorsan.

- File validasyonu yap.
- Unique bir id uret ( guid olabilir )
- Bu id'yi kullanarak dosyayi diske yaz. /files/<unique_id>.jpeg
- Diske yazma basarili ise DB ye id ve path bilgisini yaz. ( Yalnizca id bile olabilir, id'den path cikar zaten )
- Eger sorun yasarsan roll-back yaparsin ( dosyayi siler, transaction rollback yaparsin )
 
Soruyu anladığım kadarıyla çözüm üreteceğim.

Fotoğrafı yükledikten sonra ismini UUID kullanarak oluşturun. Emlak verilerinin tutulduğu table'da image_id isimli, VARCHAR veri tipli bir column oluşturun. Böylece oluşturulan UUID'yi hem veritabanına hem dosyanın ismine eklediniz. Emlak sayfasında gerekli ilana gidildiğinde de veritabanından UUID'yi çekip resme ulaşabilirsiniz.

PHP:
$image_id = (Veritabanından gelen UUID Verisi);

echo "<img src='images/".$image_id.".png'>";
 
Dosyayi veritabanina yuklemiyorsundur blob olarak diye dusunuyorum cunku oyle yapmamalisin eger RDBMS kullaniyorsan.

- File validasyonu yap.
- Unique bir id uret ( guid olabilir )
- Bu id'yi kullanarak dosyayi diske yaz. /files/<unique_id>.jpeg
- Diske yazma basarili ise DB ye id ve path bilgisini yaz. ( Yalnizca id bile olabilir, id'den path cikar zaten )
- Eger sorun yasarsan roll-back yaparsin ( dosyayi siler, transaction rollback yaparsin )
Hocam fotoğrafı bir klasöre kaydedip dosya yolunu veritabanına yüklüyorum ve MySQL kullanıyorum. Dosya yolunu veritabanına kaydedebiliyorum ancak benim istediğim o dosyayı yüklerken onu bir ID'ye göre yüklemek. Yani şöyle:

resim_iddaire_idresim_yolu
112images/resim_1.png
212images/resim_2.png
312images/resim_3.png

Şimdi burada dediğim gibi resim yolunu kaydedebiliyorum ancak yapamadığım şey bunları (örneğin) daire_id ile yüklemek. Nasıl anlatacağım tam olarak bilemiyorum. Veriyi geri çekerken belli bir ID üzerinden çekiyorum ve sadece veritabanındaki o ID'ye ait resimlerin gelmesini istiyorum.


Soruyu anladığım kadarıyla çözüm üreteceğim.

Fotoğrafı yükledikten sonra ismini UUID kullanarak oluşturun. Emlak verilerinin tutulduğu table'da image_id isimli, VARCHAR veri tipli bir column oluşturun. Böylece oluşturulan UUID'yi hem veritabanına hem dosyanın ismine eklediniz. Emlak sayfasında gerekli ilana gidildiğinde de veritabanından UUID'yi çekip resme ulaşabilirsiniz.

PHP:
$image_id = (Veritabanından gelen UUID Verisi);

echo "<img src='images/".$image_id.".png'>";
Tam olarak anlamadım hocam. Daha detaylı anlatma şansınız var mı?
 
Veri tabanındaki resim_id yi = > int tipinde null auto_increment yap.
Sen her resim kaydettiğinde id otomatik artacaktır.

( kaydetme işleminde bu alana veri yazmayacaksın. auto increment otomatik olarak sen kayıt etme anında server tarafında oluşturulacak )
 
Veri tabanındaki resim_id yi = > int tipinde null auto_increment yap.
Sen her resim kaydettiğinde id otomatik artacaktır.

( kaydetme işleminde bu alana veri yazmayacaksın. auto increment otomatik olarak sen kayıt etme anında server tarafında oluşturulacak )
Yapmak istediğim o değil hocam. Resimleri belli bir İDye yüklemeliyim ki çekerken bütün resimleri değil belli bir İDye sahip resimleri çeksin.
 
Bu sefer yukarıda dediğimi ayrı bir tabloda daire için yapmalısın .Her daire yarattığında idsi otomatik oluşacaktır. Sonra resim yolu kayıt işleminde bu id yi database den çekerek devam edebilirsin.

Bu yapı ilişkisel veri tabanı mantığı üzerine inşa edilen bir model. Senin uygulamanda model nasıl bilmiyorum ama demek ki bu şekilde pek kafana yatmıyor anladığım kadarı ile .


PHP'de bir de uniqid(); fonksiyonu var. Senin için alphanumeric random karakter üretiyor.
İstersen buna bir bakabilirsin. Ancak bunda da yine de tavsiyem oluşan değişkene benzersiz bir takı eklemen. User_id , user_name vb.


 
Yapmak istediğim o değil hocam. Resimleri belli bir İDye yüklemeliyim ki çekerken bütün resimleri değil belli bir İDye sahip resimleri çeksin.
Fotoğrafı veritabanına yüklerken tüm bilgilerin yanında daire_id'ye de dairenin id'sini ver.
Formun içinde şöyle olabilir:
HTML:
<input type="hidden" name="daire_id" value="<?=$daire_id?>">

daire_id inputuna, hangi daireye fotoğraf eklemek istiyorsan o id'yi atarsın.
Sonra daire sayfasına girildiğinde sorgunu şu şekilde çalıştırırsın:
PHP:
    $daire_id = 13; //burada dairenin id'sini değişkene atayacaksın.   
    $q = $db->prepare("SELECT * FROM Fotograflar WHERE daire_id = ?");
    $q->bindParam(1, $daire_id, PDO::PARAM_INT);
    $q->execute();
    $Foto = $q->fetch(PDO::FETCH_OBJ);

Son olarak da fotoğrafı daire sayfasında göstereceksin:

HTML:
<img src="<?=$Foto->resim_yolu?>">

Sanırım istediğin bu.
 
Fotoğrafı veritabanına yüklerken tüm bilgilerin yanında daire_id'ye de dairenin id'sini ver.
Formun içinde şöyle olabilir:
HTML:
<input type="hidden" name="daire_id" value="<?=$daire_id?>">

daire_id inputuna, hangi daireye fotoğraf eklemek istiyorsan o id'yi atarsın.
Sonra daire sayfasına girildiğinde sorgunu şu şekilde çalıştırırsın:
PHP:
    $daire_id = 13; //burada dairenin id'sini değişkene atayacaksın.  
    $q = $db->prepare("SELECT * FROM Fotograflar WHERE daire_id = ?");
    $q->bindParam(1, $daire_id, PDO::PARAM_INT);
    $q->execute();
    $Foto = $q->fetch(PDO::FETCH_OBJ);

Son olarak da fotoğrafı daire sayfasında göstereceksin:

HTML:
<img src="<?=$Foto->resim_yolu?>">

Sanırım istediğin bu.
Çözdüm hocam. Fotoğrafları son yüklenen ilan İDsine yükleyeceğim.
 

Yeni konular

Geri
Yukarı