• 07-05-2015, 12:57:48
    #1
    Üyeliği durduruldu
    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";}
  • 07-05-2015, 13:56:19
    #2
    hocam 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
    #3
    Üyeliği durduruldu
    vekka adlı üyeden alıntı: mesajı görüntüle
    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 ?


    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
    #4
    Üyeliği durduruldu
    CssValley 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>
    hocam bende zaten for ile yapıyorum tek resim basıyor veritabanına. konuyu düzenleyip kodlarımı ekledım.

    --R10.NET; Flood Engellendi -->-> Yeni yazılan mesaj 14:20:24 -->-> Daha önceki mesaj 14:19:14 --

    sehzadem adlı üyeden alıntı: mesajı görüntüle
    hocam 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.
    hocam resimlerin hangi kayıta ait olup olmadıgını başka bir tablo açıp nası yapıcam ?
  • 07-05-2015, 14:23:03
    #5
    Üyeliği durduruldu
    vekka adlı üyeden alıntı: mesajı görüntüle
    hocam bende zaten for ile yapıyorum tek resim basıyor veritabanına. konuyu düzenleyip kodlarımı ekledım.

    ?
    sorguyu for döngüsünün içine alır mısınız?
  • 07-05-2015, 14:53:20
    #6
    Üyeliği durduruldu
    hocam for döngüsü içine alında resim sayısı kadar aynı konuyu kopyalayıp veritabanına yazdırıyor.
  • 07-05-2015, 22:37:26
    #7
    Eklerken;

        $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:41
    #8
    vekka adlı üyeden alıntı: mesajı görüntüle
    hocam resimlerin hangi kayıta ait olup olmadıgını başka bir tablo açıp nası yapıcam ?
    resimlere karışmadan normal gelen verilerinizi kayıt edin.
    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
  • 08-05-2015, 11:21:01
    #9
    Üyeliği durduruldu
    sewakldawk hocam çok teşekkür ederim, sonunda oldu, tam istediğim çalışma oldu. Bu kodları ayrıca arşivime de alıyorum sehzadem hocam size de teşekkür ederim.