• 17-02-2009, 15:41:07
    #1
    Üyeliği durduruldu
    Selam;

    Elimde şu kod var,

    $indexson = $veridb->get_results("SELECT * FROM mp3 where onay='evet' order by id desc Limit 0,30");

    bu kod yeni eklenen verileri listeliyor. bu kodda nasıL bir değişikle rastgele veri çekebilirim? Yardımcı olurmusunuz..
  • 17-02-2009, 15:49:34
    #2
    Kimlik doğrulama veya yönetimden onay bekliyor.
    SELECT RAND() olmasi lazim.
  • 17-02-2009, 16:05:53
    #3
    $indexson = $veridb->get_results("SELECT * FROM mp3 where onay='evet' order by rand() Limit 30");
  • 17-02-2009, 16:16:03
    #4
    Üyeliği durduruldu
    teşekkürler arkadaşlar.
  • 17-02-2009, 23:13:58
    #5
    Üyeliği durduruldu
    Arkadaşlar böyle çağırmak sanırım databeseyi çok kasıyor. Bunu kasmadan nasıl yapabilirim..
  • 17-02-2009, 23:29:52
    #6
    Erol adlı üyeden alıntı: mesajı görüntüle
    Arkadaşlar böyle çağırmak sanırım databeseyi çok kasıyor. Bunu kasmadan nasıl yapabilirim..
    evet doğrudur. önce rastgele listeler sonra baştan 30 tanesini veya kaçtanesini istediysen okadarını alır.

    az veride sorun değil ama çoklu veride şişmeye neden olabilir.

    id lerden rastgele x adet birbirinden farklı sayı üretip ürettiğin sayılara denk gelen idleri select ile veritabanından almayı deneyebilirsin

    şurayada bakabilirsin:
    SQL RANDOM Fonksiyonu Performans Problemleri | Ahmet Alp Balkan : Bugün Ne Öğrendim?
  • 17-02-2009, 23:38:10
    #7
    Kimlik doğrulama veya yönetimden onay bekliyor.
    veya mysqli ile daha performanslı hale getirilebilir
    örnek :
    $stmt = mysqli_prepare($baglan,"SELECT * FROM mp3 WHERE onay='evet' GROUP BY RAND() limit 30");
    mysqli_stmt_execute($stmt);
    sonra kullanmak istediğin değişkenleri

    mysqli_stmt_bind_result
    ile çekersin
  • 18-02-2009, 13:05:29
    #8
    Üyeliği durduruldu
    kasmayacak şekilde veri almak istiyorsan şöyle bir işlem olabilir. İlk başta php ile verisayısını ögrenip bu aralıkta rastgele sayı üretirsin.

    $result = mysql_query("select count(id) from tablo");
    while($row = mysql_fetch_array($result)){
             $adet = $row[0];
    }
    $rastgele=rand(0,$adet);
    mysql_free_result($result);
    
    $result = mysql_query("select *from tablo limit $rastgele,1");
    while($row = mysql_fetch_array($result)){
          // datayla yapılacak ivir zivir
    }
    mysql_free_result($result);
    ama bir test etmek lazim en azin şöyle 400 000 - 500 000 data ile bu mu daha hizli yoksa direk sql ile işlem yapmak mi hizli. sonuçta rastgele sıralarken limit veriliyorsa bunun gibi bir algoritma arka planda calisiyor olabilir