Duyuruyu Kapat
Facebook Gözat
Twitter Gözat

array sorgu

Konu, 'PHP' kısmında oralodabas tarafından paylaşıldı.

  1. oralodabas

    oralodabas Üye

    Kayıt:
    5 Mart 2007
    Mesajlar:
    33
    Beğenilen Mesajlar:
    0
    selamlar multiply bir alandan 1,2,3,4,5,6...n
    gibi veri geliyor ve gelen bu verileri
    firmalar tablosunda
    fir_id | fir_adi | f_il
    1 | xxx |1,2,3
    1 | xxx |3,5,6
    1 | xxx |4,7
    1 | xxx |8
    f_il alanındaki verilerle 1 tanesi bile eşleşse firmayı listelemek istiyorum
    foreach ve find_in_set gibi fonksiyonları kullandım ama bi sonuç elde edemedim
    fikri olan varmı gecenin bu saatinde?
    Şimdiden saolun
     
  2. oralodabas

    oralodabas Üye

    Kayıt:
    5 Mart 2007
    Mesajlar:
    33
    Beğenilen Mesajlar:
    0
    sonunda oldu birinin işine yarar umarım daha farklı veya belki daha kolay yolardan çözüm ekleyen arkadaşlar olursa sevinirim
     
  3. oralodabas

    oralodabas Üye

    Kayıt:
    5 Mart 2007
    Mesajlar:
    33
    Beğenilen Mesajlar:
    0
    sanırım olmamış :( gecenin bu saatinde bu kadar oluyo bu koddaki sorunda ayıtların tekrar etmesi yokmu ya suna bi el atıcak kimse
     
  4. akbeyfb

    akbeyfb Üye

    Kayıt:
    13 Ağustos 2005
    Mesajlar:
    229
    Beğenilen Mesajlar:
    0
    öncelikle problemini net bir şekilde açıklamamışsın...multiple gelen veriler nerden geliyo tam anlamadım ama şöyle bi şey işini görür kanımca...

    PHP:
     
    $il_id
    ="nerden geliyosa artık";
     
    $sorgu=mysql_query("SELECT * FROM firma WHERE f_il like '%$il_id%'");
     
    while(
    $satir=mysql_fetch_object($sorgu)){
     
    echo 
    "ilgili firma =".$satir->fir_adi."<br>".
    }
     
     
     
  5. oralodabas

    oralodabas Üye

    Kayıt:
    5 Mart 2007
    Mesajlar:
    33
    Beğenilen Mesajlar:
    0
    akbey öncelikle teşekkürler cevap için il_id ler multply list menuden geliyor.yani gelen değerler birden çok 1,2,3,4...n tane ve arayacağı alandaki değerlerde 1,2,3,4..n tane
    doğal olarak il_id içinde geçen bir tane bile değeri aradığı alanda yakalarsa listelemesini istiyorum
    senin verdiğin sorguyla diyelim $il_id=2,3,4 olsun bu üçününde geçtiği satırı listeliyor oysa ben herbirinin tek tek de geçtiği satırları listelmek istiyorum
     
  6. akbeyfb

    akbeyfb Üye

    Kayıt:
    13 Ağustos 2005
    Mesajlar:
    229
    Beğenilen Mesajlar:
    0
    PHP:
     
    $gelen_degerler
    ="1,2,3,4";
    $array=array();
    $array=implode(",",$gelen_degerler);
    foreach(
    $array as $key => $val){
     
     
    $il_id=$val;
     
    $sorgu=mysql_query("SELECT * FROM firma WHERE f_il like '%$il_id%'");
     
    while(
    $satir=mysql_fetch_object($sorgu)){
     
    echo 
    "ilgili firma =".$satir->fir_adi."<br>".
    }
      
    }

     
     
    o zaman böle yapacan
     
  7. oralodabas

    oralodabas Üye

    Kayıt:
    5 Mart 2007
    Mesajlar:
    33
    Beğenilen Mesajlar:
    0
    bu döngude ekrana hiç bişey basmıyor
     
  8. oralodabas

    oralodabas Üye

    Kayıt:
    5 Mart 2007
    Mesajlar:
    33
    Beğenilen Mesajlar:
    0
    kodun son hali bu
    PHP:
    $array=array();
        
    $array=implode(",",$_POST[il]);
        
    print_r($array);//burda geliyo deger
        
    foreach($array as $key => $val){
         
    $il_id=$val;
        
    $sorgu=mysql_query("SELECT * FROM firmalar WHERE F_SEHIR like '%$il_id%'");
            echo
    "SELECT * FROM firmalar WHERE F_SEHIR like '%$il_id%'";//burası bomboş
            
    while ($row mysql_fetch_array($sorgu)) { 
              
    $FIRMA $row["F_ADI"];
            echo 
    "$FIRMA";
            } 
          
        }  
     
  9. akbeyfb

    akbeyfb Üye

    Kayıt:
    13 Ağustos 2005
    Mesajlar:
    229
    Beğenilen Mesajlar:
    0
    PHP:
     
    $array
    =array(); 
        
    $array=implode(",",$_POST[il]); 
        
    print_r($array);//burda geliyo deger 
        
    foreach($array as $key => $val){ 
         
    $il_id=$val;
     
    echo 
    "deger = $key => $val<br>";
     
        
    $sorgu=mysql_query("SELECT * FROM firmalar WHERE F_SEHIR like '%$il_id%'"); 
            echo
    "SELECT * FROM firmalar WHERE F_SEHIR like '%$il_id%'";//burası bomboş 
            
    while ($row mysql_fetch_array($sorgu)) {  
              
    $FIRMA $row["F_ADI"]; 
            echo 
    "$FIRMA"
            }  
           
        } 
     
     
    denermisin ekrana ne yazacak
     
  10. oralodabas

    oralodabas Üye

    Kayıt:
    5 Mart 2007
    Mesajlar:
    33
    Beğenilen Mesajlar:
    0
    ekrana bi şey gelmiyor?
     
  11. akbeyfb

    akbeyfb Üye

    Kayıt:
    13 Ağustos 2005
    Mesajlar:
    229
    Beğenilen Mesajlar:
    0
    çalışması lazım mantık böyle orda başka bir hata olabilir...array i ekrana yazıpda foreach in çalışmamasının mantıgını çözemedim
     
  12. oralodabas

    oralodabas Üye

    Kayıt:
    5 Mart 2007
    Mesajlar:
    33
    Beğenilen Mesajlar:
    0
    kod aşağıdaki gibiyken çalışıyor ama bu seferde döngüye girdiği için aynı firmaları birden fazla ekrana bastırıyor mantık hatasımı yapıyoruz anlamadımki?
    PHP:
        $array=implode(",",$_POST[il]); 
        
    $array2=explode(",",$array); 
        
       
    print_r($array2);//burda geliyo deger 
        
    foreach($array2 as $key => $val){ 
        
    print_r($val);
         echo 
    "deger = $key => $val<br>";
     
        
    $sorgu=mysql_query("SELECT * FROM firmalar WHERE F_SEHIR like '%$val%'"); 
            echo
    "SELECT * FROM firmalar WHERE F_SEHIR like '%$val%'";//burası bomboş 
            
    while ($row mysql_fetch_array($sorgu)) {  
            
    $FIRMA $row["F_ADI"]; 
            echo 
    "$FIRMA"
            }  
           
        }  
     
  13. akbeyfb

    akbeyfb Üye

    Kayıt:
    13 Ağustos 2005
    Mesajlar:
    229
    Beğenilen Mesajlar:
    0
    gelen multiple değerlerinden iki tanesi tek firmadaysa iki defa basar tabi...mantık hatası yok...
     
  14. akbeyfb

    akbeyfb Üye

    Kayıt:
    13 Ağustos 2005
    Mesajlar:
    229
    Beğenilen Mesajlar:
    0
    PHP:
     
    $array
    =implode(",",$_POST[il]);  
        
    $array2=explode(",",$array);  

       
    $firmalar=array();  

       
    print_r($array2);//burda geliyo deger  
        
    foreach($array2 as $key => $val){  
        
    print_r($val); 
         echo 
    "deger = $key => $val<br>"
      
        
    $sorgu=mysql_query("SELECT * FROM firmalar WHERE F_SEHIR like '%$val%'");  
            echo
    "SELECT * FROM firmalar WHERE F_SEHIR like '%$val%'";//burası bomboş  
            
    while ($row mysql_fetch_array($sorgu)) { 
     
            if(!
    in_array($row['F_ID'],$firmalar)){
            
    $FIRMA $row["F_ADI"]; 
            
    $firmalar[$count++]=$row["F_ID"];
           } 
            echo 
    "$FIRMA";  
            }   
            
        }  

     
    bu tekrarı önleyecektir
     
  15. oralodabas

    oralodabas Üye

    Kayıt:
    5 Mart 2007
    Mesajlar:
    33
    Beğenilen Mesajlar:
    0
    eline sağlık akbeyfb ama hala sorun çözülmüş değil bu akşam biraz daha zorlıcam artık ama anlamadığım şekilde bazı kayıtlar 8-10kez yazıyor bazıları ise tek geçiyor.
     
  16. hasanyasin

    hasanyasin Aktif Üye

    Kayıt:
    23 Şubat 2007
    Mesajlar:
    439
    Beğenilen Mesajlar:
    0
    Oldukça çirkin; ama basit ve temiz bir çözüm:
    Girdide gelen her öğeyi sql sorgunun where yancümlesine bir OR ile ekleyeceksin. Bunu yaptığın zaman her firma sadece bir kez döner ve sadece doğru firma döner...
     
  17. oralodabas

    oralodabas Üye

    Kayıt:
    5 Mart 2007
    Mesajlar:
    33
    Beğenilen Mesajlar:
    0
    hasanyasin saol arkadaşım gusel fikir
    PHP:
    foreach($array2 as $key => $val){  
     
      
      
    $sql="OR FIND_IN_SET('$val',CONCAT(F_SEHIR,','))";
      print 
    $sql;
      
            
        }  
    bu sekilde for içinde istediğim sql yancumlecikleri oluşuyor ama
    print dışarıda yapınca doğal olarak son değerini alıyor hepsini dısarıya nasıl yazdırabilrim
    ufak bi fikir verirmisin r
     
  18. hasanyasin

    hasanyasin Aktif Üye

    Kayıt:
    23 Şubat 2007
    Mesajlar:
    439
    Beğenilen Mesajlar:
    0
    find_in_set falan gerekmez. like kullanın yeter. Böyle çok uzun ve aşırı çirkin olur... Estetik, önemli bir ihtiyaçtır... :)
     
  19. oralodabas

    oralodabas Üye

    Kayıt:
    5 Mart 2007
    Mesajlar:
    33
    Beğenilen Mesajlar:
    0
    Aşağıdaki kod sorunsuz olarak çalışıyor ..
    ama $sql[n] oraya tek tek yazmaktansa başka bi yol ile olabilir diye düşünüyorum ama şimdilik böle olsun ekleyen olursa sevinirim
    PHP:
      $array=implode(",",$_POST[il]);  
      
    $array2=explode(",",$array);  
      
       foreach(
    $array2 as $key => $val){  
          
    $sql[]="OR FIND_IN_SET('$val',CONCAT(F_SEHIR,','))";
       }  
      
      
    $sorgu=mysql_query("SELECT * FROM firmalar WHERE FIND_IN_SET('0',CONCAT(F_SEHIR,',')) $sql[0] $sql[1]$sql[2]$sql[3]$sql[4]$sql[5]
        
    $sql[6]$sql[7]$sql[8]$sql[9]$sql[10]$sql[11]$sql[12]$sql[13]$sql[14]$sql[15]$sql[16]$sql[17]$sql[18]$sql[19]$sql[20]
        
    $sql[21]$sql[22]$sql[23]$sql[24]$sql[25]$sql[26]$sql[27]$sql[28]$sql[29]$sql[30]$sql[31]$sql[32]$sql[33]$sql[34]$sql[35]
        
    $sql[36]$sql[37]$sql[38]$sql[39]$sql[40]$sql[41]$sql[42]$sql[43]$sql[44]$sql[45]$sql[46]$sql[47]$sql[48]$sql[49]$sql[50]
        
    $sql[51]$sql[52]$sql[53]$sql[54]$sql[55]$sql[56]$sql[57]$sql[58]$sql[59]$sql[60]$sql[61]$sql[62]$sql[63]$sql[67]$sql[65]
        
    $sql[66]$sql[67]$sql[68]$sql[69]$sql[70]$sql[71]$sql[72]$sql[73]$sql[74]$sql[75]$sql[76]$sql[77]$sql[78]$sql[79]$sql[80]
        
    $sql[81]$sql[82]$sql[83]$sql[84]$sql[85]$sql[86]$sql[87] ");  
      
        while (
    $row mysql_fetch_array($sorgu)) { 
        
    $FIRMA $row["F_ADI"]; 
        
    $FIRMA_ID $row["F_ID"]; 
        echo 
    "$FIRMA_ID - $FIRMA <br>";  
        }   
         }