• 07-02-2016, 14:59:47
    #1
    Kimlik doğrulama veya yönetimden onay bekliyor.
    Arkadaşlar merhaba
    veritabanımdan verileri çekiyorum fakat html tablolarına düzğün şekilde gösteremiyorum

    Mesala bir bölümde göstereceğim ürün adeti 9 adet. Fakat benim bunları 4 er 4 er yazdırmam gerekiyor. Ve farklı html yapısında

    Mesala ilk 4 adet ürünü bu html yapısında göstermem gerekiyor
     <div class="item active">
    			  <ul class="thumbnails">
     $uruncek = mysql_query("SELECT * FROM urunler WHERE urunsira=1 ORDER BY urunid ASC limit 0,4")or die(mysql_error());
    			  while($cek = mysql_fetch_array($uruncek)){
    				  
    				  $urunadi = $cek['urunadi'];
    				  $urunseo = $cek['urunseo'];
    				  $urunfiyat = $cek['urunfiyat'];
    				  $urunresim = $cek['urunresim'];
    				  
    				  echo '<li class="span3">
    				  <div class="thumbnail">
    				  <i class="tag"></i>
    					<a href="'.$urunseo.'"><img src="resim/thum/'.$urunresim.'" alt=""></a>
    					<div class="caption">
    					  <h5>'.substr($urunadi,0,35).'</h5>
    					  <h4><a class="btn" href="'.$urunseo.'">İNCELE</a> <span class="pull-right">'.$urunfiyat.'.00TL</span></h4>
    					</div>
    				  </div>
    				</li>';
    				  
    			  }
    </ul>
    </div>
    Diğer kalanlarıda yine 4 er 4 er gelecek şekilde böyle göstermem gerekiyor
    <div class="item">
    			  <ul class="thumbnails">
    //diğer ürünler gelicek
    </ul>
    </div>
    Yani <div class="item"> bölümü değişiyor başına active geliyor diğer ürünlerde gelmiyor. slider gibi bir yapım var. Ve 9 adet ürünü 4 bir yapıda 4 bir yapıda ve kalan 1 idi bir yapıda göstermem gerekiyor

    Umarım anlatabildim derdimi yardımcı olursanız sevinirim
  • 07-02-2016, 16:24:00
    #2
    if ekleyip ilk 4 ü saydırırsınız ilk 4 ünden sonrakiler için diğer belirttiğiniz yapıda gelir
  • 07-02-2016, 18:13:21
    #3
    Mr.Function adlı üyeden alıntı: mesajı görüntüle
    if ekleyip ilk 4 ü saydırırsınız ilk 4 ünden sonrakiler için diğer belirttiğiniz yapıda gelir
    Hayır bu şekilde malesef olmaz. Benim 4 er 4 er almam gerek.

    Örnek 9 adet ürün var ben bunları 4 bir yapıda 4 bir yapıda kalan bir ürünüde 1 yapıda göstermem lazım. Yani 9 rakamı örnek olması açısında. Bu rakam 25 de olabilir fakat benim herhalükarda 4 er 4 er şekilde farklı html yapılarında göstermem lazım.

    Ayrıca
    <div class="item active"> ve <div class="item" şeklinde class yapılarıda değişiyor Bu divler sadece tek sefer yazdırılmak zorunda. Burda bir sorun aslında. Döngünün içine bunları ekleyince sürekli aynı yapıda yazdırıyor.
  • 07-02-2016, 18:22:40
    #4
    kursadd adlı üyeden alıntı: mesajı görüntüle
    Hayır bu şekilde malesef olmaz. Benim 4 er 4 er almam gerek.

    Örnek 9 adet ürün var ben bunları 4 bir yapıda 4 bir yapıda kalan bir ürünüde 1 yapıda göstermem lazım. Yani 9 rakamı örnek olması açısında. Bu rakam 25 de olabilir fakat benim herhalükarda 4 er 4 er şekilde farklı html yapılarında göstermem lazım.

    Ayrıca
    <div class="item active"> ve <div class="item" şeklinde class yapılarıda değişiyor Bu divler sadece tek sefer yazdırılmak zorunda. Burda bir sorun aslında. Döngünün içine bunları ekleyince sürekli aynı yapıda yazdırıyor.
    o zaman kod yapısını değiştirip direkt her çektiğini yazdırmak yerine çekilenleri arraya atarsınız database kodunda yazdırmassınız, dışarda da istediğiniz şekilde yazdırabilirsiniz
  • 07-02-2016, 18:24:30
    #5
    Mr.Function adlı üyeden alıntı: mesajı görüntüle
    o zaman kod yapısını değiştirip direkt her çektiğini yazdırmak yerine çekilenleri arraya atarsınız database kodunda yazdırmassınız, dışarda da istediğiniz şekilde yazdırabilirsiniz
    Tamam bende öyle yapmayı düşünüyordum zaten. Peki veritabanından gelen sonuçları diziye 4 er 4 er şekilde nasıl atayabiliriz onu merak ediyorum
  • 07-02-2016, 18:34:35
    #6
    kursadd adlı üyeden alıntı: mesajı görüntüle
    Tamam bende öyle yapmayı düşünüyordum zaten. Peki veritabanından gelen sonuçları diziye 4 er 4 er şekilde nasıl atayabiliriz onu merak ediyorum
    4 er 4 er atamaya gerek yok aslında normal atayıp yazdırırken 2 for kullanıp 4 er li yazdırabilirsiniz. ilk for u ilk 4 lü için "item active" classıyla yazdırdıktan sonra kalanları "item" classında yazdırabilirsiniz bir satırda max 4 ürün olacak şekilde yazdırır bu şekilde, 4+4+1, 4+4+4+3 farketmez
  • 07-02-2016, 18:55:39
    #7
    kursadd adlı üyeden alıntı: mesajı görüntüle
    Tamam bende öyle yapmayı düşünüyordum zaten. Peki veritabanından gelen sonuçları diziye 4 er 4 er şekilde nasıl atayabiliriz onu merak ediyorum
    Buna gerek yok,

    for ($i=1; $i<=100 ; $i++ ){
    if($i%4==0){
    $s=$s+1;
    echo $i."<br>";
    }
    }

    şeklinde 4 e bölünen içeriklerde farklı bir yapı kullanacaksınız istediğinizi yapabilirsiniz.
  • 08-02-2016, 14:32:31
    #8
    Ben sorunu aşağıdaki kodla çözdüm. Saydırmak çözüm olmadı malesef. Çünkü saydırdığımızda <div class="item active"> sürekli yazıyor yani bu class ın sadece bir sefer yazdırılması gerekiyor döngü içinde yazdırınca doğal olarak tekrar ettiğinden ortalık karışıyor.

    Ayrıca dizileri 4 er 4 er yazdırmak içinde harika bir fonksiyon olan array_chunk fonksiyonunu keşfetmiş olduk. Bu fonksiyonla dizileri istediğiniz şekilde listelebilirsiniz.

    <?php 
    			  $uruncek = mysql_query("SELECT * FROM urunler WHERE urunsira=1 ORDER BY urunid ASC")or die(mysql_error());
    			  while($mm = mysql_fetch_array($uruncek)){ 
    				 
    				 $yenidizi[] = $mm['urunid'];
    				 
    				  
    			  }
    			 
    			 $dizi = array_chunk($yenidizi,4,true);
    			 
    			 
    			 
    			 for($a=0;$a < count($dizi); $a++){
    				 
    				// echo $dizi[$a].'<br>';
    				if($a == 0){
    					
    					echo '<div class="item active">
    			  <ul class="thumbnails">';
    					
    				}else{
    					
    					echo '<div class="item">
    			  <ul class="thumbnails">';
    					
    				}
    
    				foreach($dizi[$a] as $id){
    					
    				//$id = $dizi[$a][$b];
    				
    				$ilk = mysql_query("SELECT * FROM urunler WHERE urunid='$id'")or die(mysql_error());
    				while($cek = mysql_fetch_array($ilk)){
    					
    				  $urunadi = $cek['urunadi'];
    				  $urunseo = $cek['urunseo'];
    				  $urunfiyat = $cek['urunfiyat'];
    				  $urunresim = $cek['urunresim'];
    					
    					echo '<li class="span3">
    				  <div class="thumbnail">
    				  <i class="tag"></i>
    					<a href="'.$urunseo.'"><img src="resim/thum/'.$urunresim.'" alt=""></a>
    					<div class="caption">
    					  <h5>'.substr($urunadi,0,35).'</h5>
    					  <h4><a class="btn" href="'.$urunseo.'">İNCELE</a> <span class="pull-right">'.$urunfiyat.'.00TL</span></h4>
    					</div>
    				  </div>
    				</li>';
    
    					
    				}
    
    				}
    				  echo '</ul>
    			  </div>';
    			 }
    Ayrıca daha az sorgu ile çözmek mümkünse lütfen bildirin.
  • 08-02-2016, 15:41:13
    #9
    Merhaba,

    En başta zaten kayıtları çekip array a atıyorsun aşağıda da array i bir daha kullanabilirsin. Bu yüzden ilk arrayda db den gelen bütün kayıtları eklettirdim.

    Tek sorguda işini çözecektir yazdığına göre ..
    <?php 
    			  $uruncek = mysql_query("SELECT * FROM urunler WHERE urunsira=1 ORDER BY urunid ASC")or die(mysql_error());
    			  while($mm = mysql_fetch_array($uruncek)){ 
    				 
    				 $yenidizi[] = $mm;
    				 
    				  
    			  }
    			 
    			 $dizi = array_chunk($yenidizi,4,true);
    			 
    			 
    			 
    			 for($a=0;$a < count($dizi); $a++){
    				 
    				// echo $dizi[$a].'<br>';
    				if($a == 0){
    					
    					echo '<div class="item active">
    			  <ul class="thumbnails">';
    					
    				}else{
    					
    					echo '<div class="item">
    			  <ul class="thumbnails">';
    					
    				}
    
    				foreach($dizi[$a] as $cek){
    					
    				//$id = $dizi[$a][$b];
    				
    				
    					
    				  $urunadi = $cek['urunadi'];
    				  $urunseo = $cek['urunseo'];
    				  $urunfiyat = $cek['urunfiyat'];
    				  $urunresim = $cek['urunresim'];
    					
    					echo '<li class="span3">
    				  <div class="thumbnail">
    				  <i class="tag"></i>
    					<a href="'.$urunseo.'"><img src="resim/thum/'.$urunresim.'" alt=""></a>
    					<div class="caption">
    					  <h5>'.substr($urunadi,0,35).'</h5>
    					  <h4><a class="btn" href="'.$urunseo.'">İNCELE</a> <span class="pull-right">'.$urunfiyat.'.00TL</span></h4>
    					</div>
    				  </div>
    				</li>';
    
    				}
    				  echo '</ul>
    			  </div>';
    			 }
    Şahsen bana sorsan ne yaparsın diye kodum aşağıda.

    $uruncek = mysql_query("SELECT * FROM urunler WHERE urunsira=1 ORDER BY urunid ASC")or die(mysql_error());
    while($mm = mysql_fetch_array($uruncek)){ 
        $records[] = $mm;
    }
    
    $count = count($records);
    $i=0;
    foreach($records as $key => $cek) {
        if($i==0) {
        echo '<div class="item '.(($key==0) ? 'active':'').'">
            <ul class="thumbnails">';
        }
            $urunadi = $cek['urunadi'];
            $urunseo = $cek['urunseo'];
            $urunfiyat = $cek['urunfiyat'];
            $urunresim = $cek['urunresim'];
            echo '<li class="span3">
              <div class="thumbnail">
              <i class="tag"></i>
                <a href="'.$urunseo.'"><img src="resim/thum/'.$urunresim.'" alt=""></a>
                <div class="caption">
                  <h5>'.substr($urunadi,0,35).'</h5>
                  <h4><a class="btn" href="'.$urunseo.'">İNCELE</a> <span class="pull-right">'.$urunfiyat.'.00TL</span></h4>
                </div>
              </div>
            </li>';
            if($i%4==0 || $i==$count)
            {
                echo '</ul></div>';
                $i=0;
                $count -= 4;
            } else $i++;
    }
    İlk soru neden array a alıp aşağıda foreach e soktun direkt while ın içinde de bu işlemi yapabilirsin olabilir.
    Çok basit kayıt sayılarını almam için yukarıda mysql_numrows çekmem gerekirdi buda ekstradan bir sorgu demektir. Hatta bazı kaynaklarda numrows u kullanmayın bile diyenler var. Bu yüzden kayıt sayısını array in count build-in fonksiyonunu kullanarak almayı tercih ettim. ve foreach le arrayimdeki kayıtları döndürdüm.

    Active class ı bir kere yazılacağından kısaltılmış if scope u ilede key i sıfırsa yaz dedim çünkü arrayin keyi bir daha hiç sıfır gelmez.

    Diğer if scope'larım da zaten 4 erli yazdırması için geçerli if lerdir.

    Umarım açıklayıcı olmuştur.

    Saygılar

    kursadd adlı üyeden alıntı: mesajı görüntüle
    Ben sorunu aşağıdaki kodla çözdüm. Saydırmak çözüm olmadı malesef. Çünkü saydırdığımızda <div class="item active"> sürekli yazıyor yani bu class ın sadece bir sefer yazdırılması gerekiyor döngü içinde yazdırınca doğal olarak tekrar ettiğinden ortalık karışıyor.

    Ayrıca dizileri 4 er 4 er yazdırmak içinde harika bir fonksiyon olan array_chunk fonksiyonunu keşfetmiş olduk. Bu fonksiyonla dizileri istediğiniz şekilde listelebilirsiniz.

    <?php 
    			  $uruncek = mysql_query("SELECT * FROM urunler WHERE urunsira=1 ORDER BY urunid ASC")or die(mysql_error());
    			  while($mm = mysql_fetch_array($uruncek)){ 
    				 
    				 $yenidizi[] = $mm['urunid'];
    				 
    				  
    			  }
    			 
    			 $dizi = array_chunk($yenidizi,4,true);
    			 
    			 
    			 
    			 for($a=0;$a < count($dizi); $a++){
    				 
    				// echo $dizi[$a].'<br>';
    				if($a == 0){
    					
    					echo '<div class="item active">
    			  <ul class="thumbnails">';
    					
    				}else{
    					
    					echo '<div class="item">
    			  <ul class="thumbnails">';
    					
    				}
    
    				foreach($dizi[$a] as $id){
    					
    				//$id = $dizi[$a][$b];
    				
    				$ilk = mysql_query("SELECT * FROM urunler WHERE urunid='$id'")or die(mysql_error());
    				while($cek = mysql_fetch_array($ilk)){
    					
    				  $urunadi = $cek['urunadi'];
    				  $urunseo = $cek['urunseo'];
    				  $urunfiyat = $cek['urunfiyat'];
    				  $urunresim = $cek['urunresim'];
    					
    					echo '<li class="span3">
    				  <div class="thumbnail">
    				  <i class="tag"></i>
    					<a href="'.$urunseo.'"><img src="resim/thum/'.$urunresim.'" alt=""></a>
    					<div class="caption">
    					  <h5>'.substr($urunadi,0,35).'</h5>
    					  <h4><a class="btn" href="'.$urunseo.'">İNCELE</a> <span class="pull-right">'.$urunfiyat.'.00TL</span></h4>
    					</div>
    				  </div>
    				</li>';
    
    					
    				}
    
    				}
    				  echo '</ul>
    			  </div>';
    			 }
    Ayrıca daha az sorgu ile çözmek mümkünse lütfen bildirin.