Zoque.Forum
Dirsek Teması:
Geri Dön Zoque.Forum » Webmaster Kaynaklari » Sunucu Tabanlı Programlama (Server Side) » Veritabanları » Random Recordseti Hafızada Tutmak


Veritabanları MySQL , MSSQL, SQL, Access, Oracle

Yanıt
 
LinkBack Seçenekler
Old 13.04.2007   #1 (permalink)
Creepy
 
Ü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())"
Fakat bu kayıtlardan birine tıklandığında sayfa yenileniyor doğal olarak da rastgele oluşan recordset değişiyor. Bu recordseti request.querystring le veya form la yeni sayfaya gönderip hep aynı rastgele sonucun çıkmasını nasıl sağlayabilirim.

Umarım anlatabilmişimdir.
Creepy şu an çevrimdışı  
Add Post to del.icio.usBookmark Post in TechnoratiFurl this Post!Spurl'e kaydet! http://reddit.com/submit?url=%url%&title=%title%Wong'e kaydet!Yahoo'ya kaydet!Google'a kaydet!MSN'e kaydet!Facebook'e kaydet!
Mesajdan alıntı yaparak yeni bir cevap ekleyin
Old 13.04.2007   #2 (permalink)
65kb
 
65kb's Avatar
 
Üyelik Tarihi: 09.04.2007
Yer: İstanbul
Mesaj: 18
Re: Random Recordseti Hafızada Tutmak

Sorgudan gelen sonuçta eşsiz bir id (kimlik) numarası var, bununla ulaşabilirsiniz.
65kb şu an çevrimdışı  
Add Post to del.icio.usBookmark Post in TechnoratiFurl this Post!Spurl'e kaydet! http://reddit.com/submit?url=%url%&title=%title%Wong'e kaydet!Yahoo'ya kaydet!Google'a kaydet!MSN'e kaydet!Facebook'e kaydet!
Mesajdan alıntı yaparak yeni bir cevap ekleyin
Old 13.04.2007   #3 (permalink)
Creepy
 
Üyelik Tarihi: 03.06.2001
Yer: Denizli
Yaş: 28
Mesaj: 216
Re: Random Recordseti Hafızada Tutmak

Teşekkür ederim mantığı anladım ama nasıl yapacağımı bulamadım kod olarak örnek verirseniz çok memnun kalırım.
Creepy şu an çevrimdışı  
Add Post to del.icio.usBookmark Post in TechnoratiFurl this Post!Spurl'e kaydet! http://reddit.com/submit?url=%url%&title=%title%Wong'e kaydet!Yahoo'ya kaydet!Google'a kaydet!MSN'e kaydet!Facebook'e kaydet!
Mesajdan alıntı yaparak yeni bir cevap ekleyin
Old 13.04.2007   #4 (permalink)
65kb
 
65kb's Avatar
 
Ü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:
SQLbaslik ="SELECT top 50 baslik, id, csayi FROM baslik where id between " rastgele &" and  " rastgeleb &" and onay="" order by Rnd(-(1000*id)*Time())";

$sonuc mysql_db_query($vtisim,SQLbaslik);

$rastgele_baslik mysql_fetch_array($sonuc); 
Buradan dönen sonucun id numarası şu dizi değişkendedir:

PHP Code:
$rastgele_baslik['id']; 
Bunu istediğiniz yere koyabilirsiniz.

Mesela bir bağlantıya GET metoduyla eklemek için

PHP Code:
echo '<a href="sayfa.PHP?kimlik='.$rastgele_baslik['id'].">; 
65kb şu an çevrimdışı  
Add Post to del.icio.usBookmark Post in TechnoratiFurl this Post!Spurl'e kaydet! http://reddit.com/submit?url=%url%&title=%title%Wong'e kaydet!Yahoo'ya kaydet!Google'a kaydet!MSN'e kaydet!Facebook'e kaydet!
Mesajdan alıntı yaparak yeni bir cevap ekleyin
Old 14.04.2007   #5 (permalink)
Creepy
 
Üyelik Tarihi: 03.06.2001
Yer: Denizli
Yaş: 28
Mesaj: 216
Re: Random Recordseti Hafızada Tutmak

Özür dilerim yazmayı unutmuşum ASP dilinde olacaktı.
id'yi arrayla değişkene atayıp daha sonra nasıl sorgulatacağımı bulamadım aslına bakarsanız.
Creepy şu an çevrimdışı  
Add Post to del.icio.usBookmark Post in TechnoratiFurl this Post!Spurl'e kaydet! http://reddit.com/submit?url=%url%&title=%title%Wong'e kaydet!Yahoo'ya kaydet!Google'a kaydet!MSN'e kaydet!Facebook'e kaydet!
Mesajdan alıntı yaparak yeni bir cevap ekleyin
Old 14.04.2007   #6 (permalink)
65kb
 
65kb's Avatar
 
Üyelik Tarihi: 09.04.2007
Yer: İstanbul
Mesaj: 18
Re: Random Recordseti Hafızada Tutmak

id`nin bu dizi değişkende olduğunu varsayarsak
PHP Code:
$rastgele_baslik['id']; 
bunun sizin tablonuza göre MySQL sorgusu

PHP Code:
 SQLbaslik =" SELECT * FROM baslik where id='$rastgele_baslik[id]' LIMIT 1 "
şeklinde olur. Tek sonuc görünmesini istiyorsanız LIMIT 1 kullanın.
65kb şu an çevrimdışı  
Add Post to del.icio.usBookmark Post in TechnoratiFurl this Post!Spurl'e kaydet! http://reddit.com/submit?url=%url%&title=%title%Wong'e kaydet!Yahoo'ya kaydet!Google'a kaydet!MSN'e kaydet!Facebook'e kaydet!
Mesajdan alıntı yaparak yeni bir cevap ekleyin
Old 14.04.2007   #7 (permalink)
Passion
 
Passion's Avatar
 
Ü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
Passion şu an çevrimdışı  
Add Post to del.icio.usBookmark Post in TechnoratiFurl this Post!Spurl'e kaydet! http://reddit.com/submit?url=%url%&title=%title%Wong'e kaydet!Yahoo'ya kaydet!Google'a kaydet!MSN'e kaydet!Facebook'e kaydet!
Mesajdan alıntı yaparak yeni bir cevap ekleyin
Old 14.04.2007   #8 (permalink)
Passion
 
Passion's Avatar
 
Üyelik Tarihi: 12.06.2000
Yer: ankara
Mesaj: 1,977
Re: Random Recordseti Hafızada Tutmak

Alıntı:
65kb tarafından gönderilen mesaj: Mesajı Görüntüle
.. Tek sonuc görünmesini istiyorsanız LIMIT 1 kullanın.
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
Passion şu an çevrimdışı  
Add Post to del.icio.usBookmark Post in TechnoratiFurl this Post!Spurl'e kaydet! http://reddit.com/submit?url=%url%&title=%title%Wong'e kaydet!Yahoo'ya kaydet!Google'a kaydet!MSN'e kaydet!Facebook'e kaydet!
Mesajdan alıntı yaparak yeni bir cevap ekleyin
Old 14.04.2007   #9 (permalink)
Creepy
 
Ü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.
Creepy şu an çevrimdışı  
Add Post to del.icio.usBookmark Post in TechnoratiFurl this Post!Spurl'e kaydet! http://reddit.com/submit?url=%url%&title=%title%Wong'e kaydet!Yahoo'ya kaydet!Google'a kaydet!MSN'e kaydet!Facebook'e kaydet!
Mesajdan alıntı yaparak yeni bir cevap ekleyin
Old 14.04.2007   #10 (permalink)
Passion
 
Passion's Avatar
 
Üyelik Tarihi: 12.06.2000
Yer: ankara
Mesaj: 1,977
Re: Random Recordseti Hafızada Tutmak

Alıntı:
Creepy tarafından gönderilen mesaj: Mesajı Görüntüle
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.
merhaba,

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);
tabi burda parantez içerisindeki kısma elinizdeki id'leri virgülle ayırarak -toplam 50 tane- yazdırmanız gerekecektir. bu sayede daha önceden belirlediğiniz rastgele 50 kayda tekrardan ulaşabilirsiniz.

array'in yapısı aşağıdaki gibi olabilir:
Kod:
[array] => 
(
  [0] => 5
  [1] => 7
  .
  .
  .
  [49] => 3345
)
kullanıcı siteden çıkıp başka bir gün girdiğinde ya da başka bilgisayardan eriştiğinde de aynı recordset'e ulaşmasını isterseniz bu sefer array'i başka bir yerde saklamanız gerekecektir. mesela array'i serialize edip kullanıcılara ait tablonun bir field'ında tutabilirsiniz ya da basitçe bir txt dosyasına yazıp, yine kendiniz parse edebilirsiniz.

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
Passion şu an çevrimdışı  
Add Post to del.icio.usBookmark Post in TechnoratiFurl this Post!Spurl'e kaydet! http://reddit.com/submit?url=%url%&title=%title%Wong'e kaydet!Yahoo'ya kaydet!Google'a kaydet!MSN'e kaydet!Facebook'e kaydet!
Mesajdan alıntı yaparak yeni bir cevap ekleyin
Yanıt

Etiketler
tutmak , hafizada , recordseti , random



 
Zoque'a hoşgeldiniz!
Zoque 27.02.1999 tarihinde yayın hayatına başlamış, paylaşıma dayalı bir oluşumdur. Tasarım, teknoloji, web, kültür ve sanat ana başlıkları altında bilgi paylaşımı ve benzer değerlere sahip katılımcıların birbirleriyle iletişime girmelerine imkan sağlar. "Az ama Öz" sloganından yola çıkarak, kaliteli ve nitelikli katılımı temel alır.

Saygın ve ciddi bir ortamda yardımlaşmak, haberleşmek, kendi bildiklerini diğer katılımcılarla paylaşmak isteyen, oluşumumuza düzenli katılımda bulunacağı inancını taşıyan konuklarımızı üye olmaya davet ediyoruz. [ » ]


Üye Girişi:

UslanmaM baktabul.com TEKplatform TEKplatform

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