• 31-01-2018, 15:54:36
    #1
    Üyeliği durduruldu
    Merhaba Arkadaşlar...
    While döngüm ile veritabanından verileri alıyorum. Fakat burada sıkıntım şu; aynı değere sahip veriyi ekranda sadece bir kez göstermek istiyorum. Bu arada ayrıca seticindekiurunler sutünumda kaç tane veri oldugunu hesaplıyorum. Bazen o sutünda aynı veriler bulunabiliyor. Onların sayısını kaybetmeden bu işlemi yapmak istiyorum. Distinc ve array unique kullanarak yapmaya calıstım, olmadı. Kodlarım aşağıda yardımcı olur musunuz
    $setbul = mysql_query("SELECT * FROM setler WHERE setkodu like '$veri_1'");
        
        if (mysql_num_rows($setbul)){
        
        while($kayit=mysql_fetch_array($setbul)){
            
            /*echo "*" . $kayit ['setkodu'];*/
            
            /*echo $kayit ['setinadi'] ."<br>"*/ ;    
                
                
                $urunidleri= $kayit ['seticindekiurunler'];
                            
                $urunayir = explode(",", $urunidleri);        
                
                foreach($urunayir as $siraliid){
                    
                    
            
            /* ŞUANDA HANGİ PAKETİN İÇİNDE HANGİ TEKLİ ÜRÜN VAR GÖREBİLİYORUM. */
            
            $tekliurungetir = mysql_query("SELECT * FROM tekliurunler WHERE id = $siraliid");
            if (mysql_num_rows($tekliurungetir)){
                
            while($kayiti=mysql_fetch_array($tekliurungetir)){
                        
            /*echo $kayiti ['urun']. "<br>";*/
            
            
            
            /* SET İÇERİSİNDE KAÇ TANE AYNI ÜRÜNDEN VAR ÖĞRENİYORUM. */
            
            $tekliurunidsi = $kayiti ['id'];
            
            $tekliurunsettekactanevar = substr_count($urunidleri,$tekliurunidsi);
            
            /*echo "Sette Kaç Kere Kullanıldı: " . $tekliurunsettekactanevar . " / ";*/
            
            
            /* TEKLİ ÜRÜNÜN KAÇ TANE SETTE KULLANILDIĞINI BULDUM */
            
            $tekliurunhangisettekullanildi = mysql_query("SELECT * FROM setler WHERE seticindekiurunler = $siraliid");
            
            $tekliurunsayisi = (mysql_num_rows($tekliurunhangisettekullanildi));
            
            while($kayitim=mysql_fetch_array($tekliurunhangisettekullanildi)){
                
                    /*echo "Tekli ürün hangi setlerde var: " . $kayitim ['setinadi'];*/
            }
    }
            }
        }    
    }
  • 31-01-2018, 15:57:48
    #2
    distinct kullanabilirsin
  • 31-01-2018, 15:58:22
    #3
    Üyeliği durduruldu
    rixez hocam distinc kullandım ama yapamadım, kod içerisinde bi yardımcı olabilir misiniz ?
  • 02-02-2018, 12:08:48
    #4
    sql unique kullanabilirsiniz , ek olarak aşağıdaki kodda sql injection açığı var bilginize.
    $tekliurungetir = mysql_query("SELECT * FROM tekliurunler WHERE id = $siraliid");
  • 04-02-2018, 22:08:28
    #5
    in_array kullanabilirsiniz, döngünün öncesine bir boş dizi değişkeni oluşturup, sonra döngü içinde kayıtları o diziye eklersiniz, sonrada o dizi üzerinden işlem yapabilirsiniz, not: dizilere eklenen içerikler bir yerden sonra hafızaya sığmayabilir, büyük işlemlerde memory limiti artırmak ya da başka yollar aramak gerek.
    if(!in_array($kontrol_edilecek_deger,$kontrol_edilen_dizi)) 
    {
     $kontrol_edilen_dizi[] = $kontrol_edilecek_deger 
    }
    .
  • 05-02-2018, 09:03:00
    #6
    Üyeliği durduruldu
    çok teşekkürler hocam