Merhaba arkadaşlar,
Php ile klasöre çoklu resim yükleme işlemini yapıyorum. ama veritabanına sadece bir tane resmin adresini yazıyor. ben tek sütunda eklenen tüm resimlerin adersleri çıksın ve bu listelemek istiyorum nasıl yapabilirim ?
$klasor="resimler";
$dosya_sayi=count($_FILES['dosya']['name']);
for($i=0;$i<$dosya_sayi;$i++){
if(!empty($_FILES['dosya']['name'][$i])){
move_uploaded_file($_FILES['dosya']['tmp_name'][$i],$klasor."/".$_FILES['dosya']['name'][$i]);
$resim_adi = $_FILES['dosya']['name'][$i];
}}
$sorgu= mysql_query("insert into arac (baslik, vitrin, fiyat, resim, model, renk, vites, km, hp, yakit, marka, kasatipi, doseme, mtv, kaskodegeri, donanim, ithalatdurumu, garanti, yedekanahtar, serviskitaplari, aracdosyasi, fatura, kredi, plaka, sasino, ekspertiz, kondisyon, tramer) values ('$baslik', '$vitrin', '$fiyat', '$resim_adi', '$model', '$renk', '$vitestipi', '$km', '$hp', '$yakit', '$marka', '$kasatipi', '$dosemesi', '$mtv', '$kaskodegeri', '$donanim', '$ithalatdurumu', '$garanti', '$yedekanahtar', '$serviskitaplari', '$aracdosyasi', '$fatura', '$kredi', '$plaka', '$sasino', '$expertiz', '$kondisyon', '$tramer')");
if ($sorgu) {echo "oldu";} else {echo "olmadi";}
Php İle Veritabanına Çoklu Resim Kaydetme Yardım
8
●4.338
- 07-05-2015, 13:56:19hocam bunu farklı şekillerde yapabilirsin.
1- resimler için ikinci bir tablo oluştur. bu tabloda resim isimlerini ve resmin hangi kayıta ait olduğunun id sini tut. listeleme kısmında bu tablodan al resimleri
2- resim için tek kolon kullanacaksan aralarına karıştırmayacağın bi ayraç ekleyerek kaydet. örn : resim1@resim2@resim3 ... şeklinde. resimleri göstereceğin yerde @ işaretine göre explode edersin. kullanırsın.
3- resim isimlerini sıralı verebilirsin. kayıt esnasında resim-hangi veriye ait olduğu id-sıra numarası şeklinde kullanabilirsin. örn : 1 numaralı kayıt için resim eklemek için resim-1-1.jpg,resim-1-2.jpg,resim-1-3.jpg gibi.
tabi farklı mantıklarda kullanılabilir. siz nasıl kullanacağınıza karar verirsiniz. bana göre bir tablo oluşturup tutmak daha mantıklı geliyor. - 07-05-2015, 14:09:26Üyeliği durdurulduvekka adlı üyeden alıntı: mesajı görüntüle
For ile yapabilirsiniz...
<? if($_POST) { $toplam = count($_FILES['resim']['name']); if($toplam > 5){ echo 'En çok 5 fotoğraf yükleyebilirsiniz.'; } else { for ($i=0; $i < $toplam; $i++) { if(is_uploaded_file($_FILES['resim']['tmp_name'][$i])){ $resim = pathinfo($_FILES['resim']['name'][$i]); $resim_adi = md5(md5(microtime())); $resim_uzanti = $resim['extension']; $resimboyut = $_FILES['resim']['size'][$i]; $uzantilar = array('jpg','png','bmp'); if(in_array($resim_uzanti,$uzantilar)){ $dosya ="yukleme_klasorunuz/".$resim_adi.".".$resim_uzanti; $limit = 1024 * 1024 * 1; // 1 MB if ($_FILES['resim']['size'][$i] > $limit){ echo "Resim En Fazla 1 Megabayt (1000 Kb.) olmalı.</div>"; exit; } if(move_uploaded_file($_FILES["resim"]["tmp_name"][$i],$dosya)){ $link = $resim_adi.$resim_uzanti; } $ekle = $db->query("insert into resimler (id,resim) VALUES ('', '".$link."'"); if($ekle){ echo "Tamam..."; } else { echo "Yükleme hatası..."; } } } } } ?> <form action="" method="post" enctype="multipart/form-data"> <input type="file" style="opacity:0;" name="resim[]" multiple /> <input type="image" class="yukle_buton" name="submit" src="images/yukle_butonu.png"> </form> - 07-05-2015, 14:20:24Üyeliği durdurulduhocam bende zaten for ile yapıyorum tek resim basıyor veritabanına. konuyu düzenleyip kodlarımı ekledım.CssValley adlı üyeden alıntı: mesajı görüntüle
--R10.NET; Flood Engellendi -->-> Yeni yazılan mesaj 14:20:24 -->-> Daha önceki mesaj 14:19:14 --
hocam resimlerin hangi kayıta ait olup olmadıgını başka bir tablo açıp nası yapıcam ?sehzadem adlı üyeden alıntı: mesajı görüntüle - 07-05-2015, 14:23:03Üyeliği durduruldusorguyu for döngüsünün içine alır mısınız?vekka adlı üyeden alıntı: mesajı görüntüle
- 07-05-2015, 22:37:26Eklerken;
$resimler = array(); // resimler adlı dizgi oluştur $klasor="resimler"; $dosya_sayi=count($_FILES['dosya']['name']); for($i=0;$i<$dosya_sayi;$i++){ if(!empty($_FILES['dosya']['name'][$i])){ move_uploaded_file($_FILES['dosya']['tmp_name'][$i],$klasor."/".$_FILES['dosya']['name'][$i]); $resimler[] = $_FILES['dosya']['name'][$i]; // resim ismini yeni bir değişken yerine dizginin içine at } } # buradan resim tablosuna yazılan içeriği kaldırdım $sorgu= mysql_query("insert into arac (baslik, vitrin, fiyat, model, renk, vites, km, hp, yakit, marka, kasatipi, doseme, mtv, kaskodegeri, donanim, ithalatdurumu, garanti, yedekanahtar, serviskitaplari, aracdosyasi, fatura, kredi, plaka, sasino, ekspertiz, kondisyon, tramer) values ('$baslik', '$vitrin', '$fiyat', '$model', '$renk', '$vitestipi', '$km', '$hp', '$yakit', '$marka', '$kasatipi', '$dosemesi', '$mtv', '$kaskodegeri', '$donanim', '$ithalatdurumu', '$garanti', '$yedekanahtar', '$serviskitaplari', '$aracdosyasi', '$fatura', '$kredi', '$plaka', '$sasino', '$expertiz', '$kondisyon', '$tramer')"); # şimdi tüm resimleri tabloya JSON formatında ekleyeceğiz $resimJSON = json_encode($resimler); // resimleri JSON formatına çeviriyoruz $resimJSON = mysql_real_escape_string($resimJSON); // bu düzeltmeyi form verileri için yapıyor olsanız dahi JSON formatı için ayrıca yapılması gerekir $id = mysql_insert_id(); // tabloya kaydedilen aracın ID'si $sorgu2 = mysql_query("UPDATE arac SET resim = '".$resimJSON."' WHERE id = '".$id."'"); if ($sorgu) {echo "oldu";} else {echo "olmadi";}Ekrana yazdırırken;
# araç getirme sorgusu (örnek) $sorgu = mysql_query("SELECT * FROM arac LIMIT 1"); $veri = mysql_fetch_assoc($sorgu); # resimleri jSON formatından dizgiye dönüştürelim $resimler = json_decode($veri['resim'], true); // buradaki true değeri json verisini array olarak döndürür, false yazarsanız object'e çevrilir # resimleri döndürelim foreach($resimler as $resim) { echo $resim."<br />"; // kendinize göre düzenlersiniz }resim adlı alanın tipini mediumtext veya text olarak düzeltmeyi unutmayın. - 07-05-2015, 23:34:41resimlere karışmadan normal gelen verilerinizi kayıt edin.vekka adlı üyeden alıntı: mesajı görüntüle
resimleri kayıt ettiğiniz tablo yapısında id,aracid,resim kolonları yeterli olur.
$id = mysql_insert_id();
sewakldawk hocamın belirttiği gibi resimleri yükle. diziye atmak yerinede ikinci tabloya ekle.
$klasor="resimler"; $dosya_sayi=count($_FILES['dosya']['name']); for($i=0;$i<$dosya_sayi;$i++){ if(!empty($_FILES['dosya']['name'][$i])){ move_uploaded_file($_FILES['dosya']['tmp_name'][$i],$klasor."/".$_FILES['dosya']['name'][$i]); $db->query("insert into aracresim values ('','$id','".$_FILES['dosya']['name'][$i]."')"); } }şeklinde ekleme yap.
kullanmak istediğin yerde ise aracın id sini alıp döngüyle istediğin şekilde kullanabilirsin. ek olarak resimlerde karışıklık olmaması için resimlere random isimler vermeyi unutma
iyi çalışmalar
sehzadem hocam size de teşekkür ederim.