Zoque.Forum
»
Random Recordseti Hafızada Tutmak
|
| Veritabanları MySQL , MSSQL, SQL, Access, Oracle |
![]() |
|
|
LinkBack | Seçenekler |
|
|
#1 (permalink) |
|
Üyelik Tarihi: 03.06.2001
Yer: Denizli
Yaş: 28
Mesaj: 216
|
Random Recordseti Hafızada Tutmak
Merhaba,
Aşağıdaki şekilde bir SQL sorgum var. Kullanıcılar rastgele tuşuna bastığında rastgele 50 başlık getiriyor. Kod:
SQLbaslik ="SELECT top 50 baslik, id, csayi FROM baslik where id between " & rastgele &" and " & rastgeleb &" and onay="& 1 & " order by Rnd(-(1000*id)*Time())" Umarım anlatabilmişimdir. |
|
|
|
|
|
#4 (permalink) |
|
Üyelik Tarihi: 09.04.2007
Yer: İstanbul
Mesaj: 18
|
Re: Random Recordseti Hafızada Tutmak
Oraya yazdığınız kod sadece sorgu olduğu için yardım etmem çok zor.
Kodunuzun şöyle olduğunu varsayarsak: PHP Code:
PHP Code:
Mesela bir bağlantıya GET metoduyla eklemek için |
|
|
|
|
|
#7 (permalink) |
|
Üyelik Tarihi: 12.06.2000
Yer: ankara
Mesaj: 1,977
|
Re: Random Recordseti Hafızada Tutmak
sanıyorum creepy'nin yapmak istediği şey ile 65kb'ın verdiği örnek arasında epey fark var.
creepy anladığım kadarıyla rastgele 50 kayıtlık bir tablo oluşturup buna daha sonra da ulaşmak istiyor. yapmak istediğinizi biraz daha detaylandırırsanız daha iyi bir çözüm yolu önerebiliriz. örneğin, oluşturduğunuz bu 50 kayıtlık recordset'in ne kadar süreyle geçerli olmasını istiyorsunuz? kullanıcı sayfada kaldığı sürede mi? yoksa o üyeye ait olarak sürekli mi? bu recordset sayfayı çağıran her kullanıcı için tekrar mı oluşturulacak, yoksa bir kez oluşturulup saklanacak mı? bu gibi bilgiler vererek açıklarsanız yardımcı olabilirim. ha bir de kullandığınız veritabanı nedir? access mi? 65kb'ın verdiği ilk örnekte ise rastgele seçilen bir kaydın id'si tutuluyor. zannediyorum ki bu da istenilen şey değil. zaten SQL cümlesi de hatalı olmuş. MySQL'de "SELECT TOP .." diye bir kalıp yok, gözünüzden kaçmış olmalı. benzer şekilde rnd() diye bir fonksiyon da yok. kolay gelsin..
__________________
bet3 ~izlenimsel betimlemeler blog kardeşliği ~blogger en asil duygunun insanıdır fotoğrafya |
|
|
|
|
|
#8 (permalink) |
|
Üyelik Tarihi: 12.06.2000
Yer: ankara
Mesaj: 1,977
|
Re: Random Recordseti Hafızada Tutmak
ee zaten id'nin bu tabloda primary key olduğunu düşünürsek normal şartlarda ya 1 kayıt döndürecektir ya da hiç kayıt döndürmeyecektir. tabi SQL injection ve güvenlik gibi sebeplerden dolayı beklediğimiz recordset'in eleman sayısını -her şart için- biliyorsak "LIMIT 1" eklemek akılcı olacaktır. diğer taraftan access için LIMIT kalıbı yok hatırladığım kadarıyla, onun yerine SELECT TOP kullanmak gerekiyor.
__________________
bet3 ~izlenimsel betimlemeler blog kardeşliği ~blogger en asil duygunun insanıdır fotoğrafya |
|
|
|
|
|
#9 (permalink) |
|
Üyelik Tarihi: 03.06.2001
Yer: Denizli
Yaş: 28
Mesaj: 216
|
Re: Random Recordseti Hafızada Tutmak
Yardımlarınız için teşekkürler. En iyisi daha detaylı bilgi vereyim. ASP ve veritabanı olarak da access kullanıyorum.
SQL sorgumla şu an rastgele 50 tane kayıt döndürüyorum. Kullanıcı bu dönen kayıtlardan birine tıkladığında o kaydın ayrıntılarını görüyor. Ben session("rastgele")=rastgele gibi bir değişken yardımıyla kullanıcı başka bir yere tıklayana kadar rastgele sonuç göstermeye devam ediyorum ama doğal olarak her seferinde başka rastgele sonuçlar gösteriyor. Ben bir şekilde ya get metodu ya da sessionla bu rastgele recordseti bir değişkene atayıp yeni sayfada tekrar göstermek istiyorum. Kullanıcı rastgele modundan çıkana kadar da aynı rastgele sonuçların gösterilmesini istiyorum. Umarım anlatabilmişimdir. |
|
|
|
|
|
#10 (permalink) | |
|
Üyelik Tarihi: 12.06.2000
Yer: ankara
Mesaj: 1,977
|
Re: Random Recordseti Hafızada Tutmak
Alıntı:
MySQL olsa size temporary table (geçici tablo) yaratmanızı önerebilirdim ama access kullanmayalı epey zaman oldu. bildiğim kadarıyla access bu tür şeyler desteklemiyor. bu durumda size tavsiyem SQL komutunuz ile oluşturduğunuz 50 kaydın id'lerini tercihinize göre bir array'de tutun ve bunu da session ya da cookie ile saklayın. daha sonra eğer kullanıcı halen rastgele modunda ise tekrar aynı sayfaya geldiğinde aynı recordset'i gösterebilirsiniz. bunun için aşağıdaki gibi bir SQL kullanmanız gerekir: Kod:
SELECT * FROM tabloAdi WHERE id IN (5,7,9,21,44,56,78,...,3345); array'in yapısı aşağıdaki gibi olabilir: Kod:
[array] => ( [0] => 5 [1] => 7 . . . [49] => 3345 ) umarım anlatabildim merak ettiğiniz başka bir konu varsa yardımcı olabilirim.kolay gelsin.
__________________
bet3 ~izlenimsel betimlemeler blog kardeşliği ~blogger en asil duygunun insanıdır fotoğrafya |
|
|
|
|
Zoque'a hoşgeldiniz!|
En popüler ilk 100 etiket
Tag Cloud
|
| acil adsl ajax almak arama araniyor ariyorum ariyoruz asp bilen bilgi bilgisayar blog calisma canon css dijital div domain dosya eleman film firefox flash font form forum fotograf freelance google gore grafik grafiker hakkinda hangi hata hatasi hosting html ilgili ilk image internet istanbul istiyorum java javascript karakter kayit kisisel kullanimi link logo mac mail menu muzik mysql nasil neden nedir online photoshop php problemi program programi reklam resim satilik sayfa script server ses sistemi site |