• 09-07-2014, 22:51:18
    #1
    Kimlik doğrulama veya yönetimden onay bekliyor.
    Merhaba arkadaşlar

    şimdi benim tblcustomfieldsvalues diye bir tablom var.

    Tablo şu şekilde.

    Fieldid | Relid | Value

    SELECT * FROM tblcustomfieldsvalues WHERE relid='$userid' and fieldid='12'

    diyip istediğimi alıyorum ama fieldid kısmı yalnızca 12 olmucak, yani ben 12 nin value karşıtını mysql_fetch_object olarak alıyorum ama fieldid 13 14 15 olarak gidiyor her biri için aşağıdaki gibi fieldid yazıp value değerini değişekene atıyorum

    ama takdir edersiniz ki bukadar sql sorgusu fazla, nasıl düşürebilirim, farklı yolu nedir?

    yani amacım

    SELECT * FROM tblcustomfieldsvalues WHERE relid='$userid' and fieldid='12'
    SELECT * FROM tblcustomfieldsvalues WHERE relid='$userid' and fieldid='13'
    SELECT * FROM tblcustomfieldsvalues WHERE relid='$userid' and fieldid='14'

    bunların value sütununu alıp değişkene atamak


    				$veri_sorgu3 = mysql_query("SELECT * FROM tblcustomfieldsvalues WHERE relid='$userid' and fieldid='5'");
    				while($veri_cek3 = mysql_fetch_object($veri_sorgu3)){
    				if($veri_cek3->value){
    				$durum3.="$veri_cek3->value";}
    				$veri_sorgu4 = mysql_query("SELECT * FROM tblcustomfieldsvalues WHERE relid='$userid' and fieldid='6'");
    				while($veri_cek4 = mysql_fetch_object($veri_sorgu4)){
    				if($veri_cek4->value){
    				$durum4.="$veri_cek4->value";}
    				if($durum2=="" or $durum3=="" or $durum4==""){
    				$veri_sorgu1 = mysql_query("SELECT * FROM tblcustomfieldsvalues WHERE relid='$userid' and fieldid='12'");
    				while($veri_cek1 = mysql_fetch_object($veri_sorgu1)){
    				if($veri_cek1->value){
    				$durum.="$veri_cek1->value";}
  • 09-07-2014, 23:04:24
    #2
    fieldid değerini döngü içerisine alıp sorgularsan nasıl olur?

    Örneğin;
    $fieldids = array();
    $fieldids[0] = "12";
    $fieldids[1] = "13";
    $fieldids[2] = "14";
    
    foreach ($fieldids AS $fieldid) {
      // sorgu burada
      mysql_query("SELECT * FROM tblcustomfieldsvalues WHERE relid='$userid' and fieldid='$fieldid'");
    }
  • 09-07-2014, 23:16:27
    #3
    mtl adlı üyeden alıntı: mesajı görüntüle
    fieldid değerini döngü içerisine alıp sorgularsan nasıl olur?

    Örneğin;
    $fieldids = array();
    $fieldids[0] = "12";
    $fieldids[1] = "13";
    $fieldids[2] = "14";
    
    foreach ($fieldids AS $fieldid) {
      // sorgu burada
      mysql_query("SELECT * FROM tblcustomfieldsvalues WHERE relid='$userid' and fieldid='$fieldid'");
    }
    Peki value sütunları? mesela gelen bi verinin 12 ye ait oldugu nasıl belli olcak?

    ben relid ve fieldid i kural koyarak ordaki value denen bi sütunu alıcam
  • 09-07-2014, 23:23:29
    #4
    Doğru anlıyorsam yanıtlayayım. Döngü içerisinde sonuçları da bir dizi içerisine kaydedersiniz. Sonra ona göre kullanırsınız.

    $sonuclar diye array oluşturdum. Döngü sonrası buna göre işlem yapabilirsiniz.

    $fieldids = array();
    $fieldids[0] = "12";
    $fieldids[1] = "13";
    $fieldids[2] = "14";
    
    $sonuclar = array();
    foreach ($fieldids AS $fieldid) {
      // sorgu burada
      $q = mysql_query("SELECT Value FROM tblcustomfieldsvalues WHERE relid='$userid' and fieldid='$fieldid'");
      $a = mysql_fetch_object($q);
       $deger = $a->Value;
       $sonuclar[] = array("$fieldid" => $deger);
    }
    foreach ($sonuclar AS $sonuc) {
       echo $sonuc; // size yine array olarak 12=>xxxx basar 
    }
    serhatesmer adlı üyeden alıntı: mesajı görüntüle
    Peki value sütunları? mesela gelen bi verinin 12 ye ait oldugu nasıl belli olcak?

    ben relid ve fieldid i kural koyarak ordaki value denen bi sütunu alıcam
  • 09-07-2014, 23:30:36
    #5
    mtl adlı üyeden alıntı: mesajı görüntüle
    Doğru anlıyorsam yanıtlayayım. Döngü içerisinde sonuçları da bir dizi içerisine kaydedersiniz. Sonra ona göre kullanırsınız.

    $sonuclar diye array oluşturdum. Döngü sonrası buna göre işlem yapabilirsiniz.

    $fieldids = array();
    $fieldids[0] = "12";
    $fieldids[1] = "13";
    $fieldids[2] = "14";
    
    $sonuclar = array();
    foreach ($fieldids AS $fieldid) {
      // sorgu burada
      $q = mysql_query("SELECT Value FROM tblcustomfieldsvalues WHERE relid='$userid' and fieldid='$fieldid'");
      $a = mysql_fetch_object($q);
       $deger = $a->Value;
       $sonuclar[] = array("$fieldid" => $deger);
    }
    foreach ($sonuclar AS $sonuc) {
       echo $sonuc; // size yine array olarak 12=>xxxx basar 
    }
    ArrayArrayArray diye döndü hocam başka birşey yok
  • 09-07-2014, 23:33:28
    #6
    Tamam zaten array diye döndürecek kodun yanına not düşmüştüm "// size yine array olarak 12=>xxxx basar "

    Siz bir iç foreach daha yaparak bunu alabilirsiniz. Ya da $sonuc[0] => id, $sonuc[1] => value verir.



    serhatesmer adlı üyeden alıntı: mesajı görüntüle
    ArrayArrayArray diye döndü hocam başka birşey yok
  • 09-07-2014, 23:49:31
    #7
    <?
    $goster=array();
    $idler=array('11','12','13');
    $ids = join(',',$idler);
    $sql = mysql_query("SELECT * FROM tblcustomfieldsvalues WHERE relid='$userid' and fieldid IN ($ids)"); 
    while($veri = mysql_fetch_object($sql)){ 
    	if($veri->value){ 
    		$goster[$veri->fieldid]=$veri->value;
    	}
    }
    
    print_r($goster);
    ?>
  • 09-07-2014, 23:49:32
    #8
    mtl adlı üyeden alıntı: mesajı görüntüle
    Tamam zaten array diye döndürecek kodun yanına not düşmüştüm "// size yine array olarak 12=>xxxx basar "

    Siz bir iç foreach daha yaparak bunu alabilirsiniz. Ya da $sonuc[0] => id, $sonuc[1] => value verir.

    çok sağolun hocam çalıştı, r10+ nızı verdim
  • 09-07-2014, 23:51:22
    #9
    Neden her biri için tekrar sorguya sokuyorsunuz fazladan sql işlemi yaptırıyorsunuz?