Online kullanıcıları rastgele göstermek

Başlatan yavuz21, 30 Ocak 2014 - 23:39:47

« önceki - sonraki »

0 Üyeler ve 1 Ziyaretçi konuyu incelemekte.

yavuz21

Merhaba arkadaşlar sitede online  durumda olan kullanıcılardan rastgele 20 tanesini göstermek istiyorum yardımcı olacak varmı?

sem

Çok ucu açık...

Kullanıcılar nerede tutuluyor, online olanlar için ayrıca bir bayrak mı tutuyorsunuz (flag), bunları nerede göstermek istiyorsunuz, denediğiniz ve yapamadığınız nokta nedir...

Yardım edilemeyecek kadar ucu açık...
".NET çemberinden geçen lirisist etkisi bir 'Volcano', bir yüzüm Java bir yüzüm Badalamenti Don Tano"
----------------------------------------------------------------------------------------------------------------------
"Her yer ölüm yine, burası dünya
Derken ölüm bile bu nasıl dünya?
Benden ölüm dile, batıyor gün yine
Burası dünya?

yavuz21

basitce sistem şu şekile hocam mysqlede uye tablosu var online oldugunda jqery ile son online oldugu anı sürekli güncel tutuyorum online listesini de çekebiliyorum ama diyelimki 50000 kullanıcı var o zaman ben içlerinden 20 tanesini çekmek istediğimde rastgele olarak nasıl yaparım.

sem

Online olan 50000 kullanıcının rastgele 20 tane çekmek istiyorsunuz yanılmıyorsam. 

SQL aslında standart olarak rastgele verileri çeker. Bir tabloya order by vermeden select attığınız zaman, aynı selecti üst üste aynı veri için gönderdiğinizde, aynı sıra ile gelme garantisi yoktur. Yani MySQL'deki LIMIT ifadesi ile istediğiniz sayıda sınır getirip (sizin örneğiniz için 20)  select attığınızda aslında rastgele getirmiş olursunuz ya da standartlara göre en azından öyle olması gerekir.

Tabi pratikte her şey standartlara ya da teorilere uymuyor. Bu nedenle MySQL konfigürasyonu gereği ya da kendi iç ayarları ile belki de aynı sıra ile alabilirsiniz. Bilemiyorum denemek lazım. Ama bu durumda da order by ifadesini kullanabilirsiniz;

order by ifadesi kolon adı destelediği gibi kolon indeksini de desteklemektedir;


select col1
,         col2
,         col3
....
...
,        col20
from users
order by X;


Bu şekilde 20 sütunluk veri aldığınız düşünün kullanıcılar tablosundan. order by X ifadesindeki X'i parametre gibi düşünürsek;

X = col1 ya da col2  ya da col3 ya da ...... col20 olabileceği gibi;
X = 1 ya da 2 ya da 3 ya da... 20 de olabilir.

order by 1 ifadesi 1 kolona göre, order by 2. kolona göre sıralama yapacaktır.

Bu şekilde PHP tarafında rastle X tam sayısını üreterek, rast gele bir kolona göre sıralama yapabilir ve rastgele veri elde edebilirsiniz. order by ifadesinin ASC |DESC anahtarını da parametreye bağlayarak bunu da rastgele gönderirseniz; aynı kolona göre dizilim olacağı zaman bir farklı veri seti elde edebilirsiniz.

Soruyu doğru anladıysam eğer bu bir yöntem olabilir, yanlış anladıysam belirtirsiniz. Kolay gelsin.
".NET çemberinden geçen lirisist etkisi bir 'Volcano', bir yüzüm Java bir yüzüm Badalamenti Don Tano"
----------------------------------------------------------------------------------------------------------------------
"Her yer ölüm yine, burası dünya
Derken ölüm bile bu nasıl dünya?
Benden ölüm dile, batıyor gün yine
Burası dünya?

empax

بسم الله الرحمن الرحيم
|ACEMİLER İÇİN İLK DURAK|Çözüldü|Kod etiketi|

sem

Hem de daha şık duruyor çözüm olarak.
".NET çemberinden geçen lirisist etkisi bir 'Volcano', bir yüzüm Java bir yüzüm Badalamenti Don Tano"
----------------------------------------------------------------------------------------------------------------------
"Her yer ölüm yine, burası dünya
Derken ölüm bile bu nasıl dünya?
Benden ölüm dile, batıyor gün yine
Burası dünya?