• 09-07-2017, 14:14:36
    #1
    Selamlar,
    urunler tablom

    id,urunadi,resim1,resim2,resim3,resim4,resim5

    mevcut şablondaki div yapısına göre ürün detay sayfamda bir foreach ile resim1,resim2,resim3,resim4,resim5 adlı sütunlarımı döndermek istiyorum.şuanki kullandığım yapı:

    <?php if($urun["resim1"]){ ?>
      <div class="item">
    	<img src="upload/<?=$urun["resim1"]?>" alt="<?=$urun["urunadi"]?>">
    		<a data-src="upload/<?=$urun["resim1"]?>" class="popup-image slider-zoom" data-sub-html="<?=$urun["urunadi"]?>">
    			<i class="fa fa-expand"></i>
    			</a>
      </div>
    <?php } else{echo "";} ?>
      <?php if($urun["resim2"]){ ?>
      <div class="item">
    	<img src="upload/<?=$urun["resim2"]?>" alt="<?=$urun["urunadi"]?>">
    		<a data-src="upload/<?=$urun["resim2"]?>" class="popup-image slider-zoom" data-sub-html="<?=$urun["urunadi"]?>">
    			<i class="fa fa-expand"></i>
    			</a>
      </div>
    <?php } else{echo "";} ?>
    <?php if($urun["resim3"]){ ?>
      <div class="item">
    	<img src="upload/<?=$urun["resim3"]?>" alt="<?=$urun["urunadi"]?>">
    		<a data-src="upload/<?=$urun["resim3"]?>" class="popup-image slider-zoom" data-sub-html="<?=$urun["urunadi"]?>">
    			<i class="fa fa-expand"></i>
    			</a>
      </div>
    <?php } else{echo "";} ?>
    <?php if($urun["resim4"]){ ?>
      <div class="item">
    	<img src="upload/<?=$urun["resim4"]?>" alt="<?=$urun["urunadi"]?>">
    		<a data-src="upload/<?=$urun["resim4"]?>" class="popup-image slider-zoom" data-sub-html="<?=$urun["urunadi"]?>">
    			<i class="fa fa-expand"></i>
    			</a>
      </div>
    <?php } else{echo "";} ?>
    <?php if($urun["resim5"]){ ?>
      <div class="item">
    	<img src="upload/<?=$urun["resim5"]?>" alt="<?=$urun["urunadi"]?>">
    		<a data-src="upload/<?=$urun["resim5"]?>" class="popup-image slider-zoom" data-sub-html="<?=$urun["urunadi"]?>">
    			<i class="fa fa-expand"></i>
    			</a>
      </div>
    <?php } else{echo "";} ?>
    kullanmak istediğim yapı:

    <?php 
    
    $sql=$db->query("select resim1,resim2,resim3,resim4,resim5 from urunler");
    foreach($sql as $resim){
    
    ?>
    <div class="item">
    <img src="upload/<?=$resim?>" alt="<?=$urun["urunadi"]?>">
    	<a data-src="upload/<?=$resim?>" class="popup-image slider-zoom" data-sub-html="<?=$urun["urunadi"]?>">
    		<i class="fa fa-expand"></i>
    		</a>
    </div>
    <?php } ?>
  • 09-07-2017, 14:45:37
    #2
    Kisaca foreach nasil calisir,
    foreach($sql as $resim) => burada diyorsun ki, $sql adli bir dizinim var bunun icinde ki her eleman icin bir kere {} parantezlerin icerisinde berlittigim operasyonlari gerceklestir. Bu arada beni detaylar ile bogma. O an icin döngüde kullandigin $sql adli dizindeki elemani bana $resim degiskeninde ver.

    Bu kisim tamam ise gelelim senin sikintina.
    Sen $sql as $resim yazdiktan sonra asagida ({ } icinde) $urün kullanmissin.
    Dolayisiyla calismayacaktir.

    *Düzenlemeler yazim /anlatim hatalarini düzeltmek icin.
  • 09-07-2017, 14:57:27
    #3
    dediklerinizi dikkate alarak düzenlemelerimi şu şekilde yaptım:

    <?php
    
    
    $sql=$db->query("select resim1,resim2,resim3,resim4,resim5 from urunler where id='$id' ");
    foreach($sql as $key){
    
    ?>
    	
    <div class="item">
    	<img src="upload/<?=$key[0]?>" alt="">
    		<a data-src="upload/<?=$key[0]?>" class="popup-image slider-zoom" data-sub-html="">
    			<i class="fa fa-expand"></i>
    			</a>
      </div>
    
    <?php } ?>
    burda $key[0] yaptığım için sadece resim1'i yazdırıyor. ben bu foreach'de resim1,resim2,resim3,resim4 ve resim5'i listelemek istiyorum
  • 09-07-2017, 15:23:51
    #4
    Bu arada cevap verirken cok yanlis geldigimizi farkettim.

    Az önceki cevapta gelen veri nedir nasildir diye hic dikkat etmeden hatani düzelttim.

    Senin sorgun tek satir donduruyor. Döngü gereksiz. Yapabilecegin mantikli bir adim var o da yardimci bir fonksiyon ile verilerini düzenli bir sekilde almak.

    Asagida birseyler karaladim. Mantik olarak tamam fakat yazim yanlislari (noktalama veya if yerine fi gibi ) olabilir.

    //burada gelen verilerini getValue diye bir fonksiyona yolluyorsun. ikinci parametre senin olmasini istedigin dizi elemanlari,
    echo getValue($sql, array("urun1","urun2", "urun3","urun4"));
    
    
    //data dizinin o anki icerigine temsilen. Yani $data[0] her zaman dogru olmayacaktir. Kendi dizi yapina göre düzenlemen gerekecek.
    function getContent($data){
    	return '<div class="item">'. 
        '<img src="upload/'.$data[0].'" alt=""> '.
            '<a data-src="upload/'.$data[0].'" class="popup-image slider-zoom" '.'data-sub-html=""> '.
                '<i class="fa fa-expand"></i> '.
                '</a> '.
      '</div> ';
    }
    //istedigin elemanlara tekrer teker bakiyor ve eger o an icin bakilan eleman dizide mevcut ise getContent fonkyionu dizinin o satiri (icerigi) ile cagirilip , cikan sonuc output degiskenine atiliyor.
    //en son ise output degiskeni sonuc olarak döndürülüyor.
    function getValue($data, $keys){
    	$output ='';
    	foreach($keys as $k){
    		if( array_key_exists($k, $data) ){
    			$output .= getContent($data[$k]);
    		}
    	}
         return $output;
    }
    Düzenleme : in_array ,array_key_exists ile degistirildi.
  • 09-07-2017, 15:40:31
    #5
    teşekkürler..