• 23-07-2014, 12:17:17
    #1
    Üyeliği durduruldu
    Merhaba explode ile ayırarak oluşturduğum dizi değişkenim var.
    Bu değişken idleri içeriyor.
    Bu idlerle eşleşen tüm satırları listelemek istiyorum.

    for döngüsü kullanarak her seferinde değerleri 1 arttırarak yaptım. Fakat bence hantal oldu.

    Dizide 50 değer var diyelim, 50 kere sql sorgusu yapmış oluyor for döngüsü ile.

    Yok mu bunun sqle işkence etmeden yapılacak yolu?
  • 23-07-2014, 12:47:24
    #2
    $idler=array('1','2','3');
    $ids = join(',',$idler); 
    $sql = mysql_query("SELECT * FROM TABLO WHERE id IN ($ids)");
    Umarım yardımcı olabilmişimdir.
  • 23-07-2014, 13:18:01
    #3
    Üyeliği durduruldu
    Erden35 adlı üyeden alıntı: mesajı görüntüle
    $idler=array('1','2','3');
    $ids = join(',',$idler); 
    $sql = mysql_query("SELECT * FROM TABLO WHERE id IN ($ids)");
    Umarım yardımcı olabilmişimdir.
    hocam a, b, c sutunlarından oluşuyor diyelim tablo.
    Peki hocam buradaki dizi içindeki 2 numaralı id nin etkilediği satırdaki a sütununda bulunan veriyi nasıl listelerim.
  • 23-07-2014, 13:51:30
    #4
    O zamanda select * from yerine ,select a from yaparak bulabilirsiniz.
  • 23-07-2014, 15:52:20
    #5
    Üyeliği durduruldu
    Kernek adlı üyeden alıntı: mesajı görüntüle
    O zamanda select * from yerine ,select a from yaparak bulabilirsiniz.

    Hocam nasıl listelerim? Sorguda sıkıntı yok.

    etkilenen tüm satır ve sutunlar işime yarayacak.

    ama 1. etkilenen satırın a sutununu
    veya 3. etkilenen satırın c sutununu nasıl yazarım ekrana asıl soru bu

    --R10.NET; Flood Engellendi -->-> Yeni yazılan mesaj 15:52:20 -->-> Daha önceki mesaj 13:59:51 --

    Neyse cevabı vereyim. Gene deneye deneye çıkardık.
    $idler=array('1','2','3'); 
    $ids = join(',',$idler);  
    $sql = mysql_query("SELECT * FROM TABLO WHERE id IN ($ids)");
    Öncelikle şu satıra 2 tırnak ve nokta eklemem gerekti:
    $sql = mysql_query("SELECT * FROM TABLO WHERE id IN ('.$ids.')");
    Arkadaşın verdiği bu kodda join yani implode iş görmüyor. Nedenine gelince virgülü en başa da ekliyor yani çıktısı şu şekil:
    ,1,2,3

    Bu durumda while döngüsüne soktuğumuzda çalışmıyor.
    $ids = ltrim ($ids, ",");
    Bu şekilde 1,2,3 durumuna getiriyoruz baştaki virgülü silip.

    Ardından:
    <?php while($rowed=mysql_fetch_array($sql)){  echo $rowed['sutunadi'];  }; ?>
    vaziyet eziyet ama çalıştı.
  • 23-07-2014, 16:36:49
    #6
    $array1 = array(1,2,3,4,5);
    $array2 = array(1=>'a', 2=>'b',3=>'c',4=>'a',5=>'b',);
    $sorgu = 'WHERE id = ' . implode('OR id = ',$array);
    $query = mysql_query("SELECT * FROM tablo $sorgu");

    while($veri = mysql_fetch_assoc($query)){
    echo $veri[$array2[$veri['id']]];
    }

    ikinci bir array yaratıp içine id numarasının hangi kolon değerini çağıracağını tutarsın. listelenirken o id değerini anahtar olarak tutan ikinci arraydan kolonu çağırırsın.
  • 24-07-2014, 01:24:44
    #7
    Kimlik doğrulama veya yönetimden onay bekliyor.
    digiklan adlı üyeden alıntı: mesajı görüntüle
    $array1 = array(1,2,3,4,5);
    $array2 = array(1=>'a', 2=>'b',3=>'c',4=>'a',5=>'b',);
    $sorgu = 'WHERE id = ' . implode('OR id = ',$array);
    $query = mysql_query("SELECT * FROM tablo $sorgu");

    while($veri = mysql_fetch_assoc($query)){
    echo $veri[$array2[$veri['id']]];
    }

    ikinci bir array yaratıp içine id numarasının hangi kolon değerini çağıracağını tutarsın. listelenirken o id değerini anahtar olarak tutan ikinci arraydan kolonu çağırırsın.
    kodunuzda hata mevcut, burada düzenlenmiş halini bulabilirsiniz.

    <?php
    
    	$array_first = [1, 2, 3, 4, 5];
    	$array_second = [1 => 'a', 2 => 'b', 3 => 'c', 4 => 'd', 5 => 'e'];
    
    	$query_string = 'SELECT * FROM `table` WHERE id = ' . implode(' OR id = ', $array_first);
    
    	$resource = mysql_query($query_string);
    
    	while ($row = mysql_fetch_assoc($resource))
    	{
    		echo $row[$array_second[$row['id']]];
    	}