

Bir Tablodan Diğer Tabloya Bağlanıp Tarihe Göre Veri Çekme
-
şimdi elimde bi db var içinde konu, cevap tabloları (webwizden bozdum db yi)
şimdi normalde ben konuları konu tablosuna cevapları da cevap tablosuna kaydederim ama webwiz de bu olay biraz karışık.
şöyleki, adam konuların başlığını , konu tablosuna içeriğini cevap tablosuna koymuş.
ben diyelimki 15 idki kategorideki konuları tarihe göre çekecem ama bi türlü nasıl yapacağımı anlamadım :|
yani şöle olacak sanırım, cevap dan tarih sutunun dan diytelim son 20 veriyi çekip
çektiğim veriden id noyu konu tablosunda sorgulatıp başlıkları alacam ama beceremedim biri örnek kod filan yazabilir mi :|
webwizin amk :(
-
ben şöyle bişey yazmıştım;
<% id=request("id")%>
<%Set cevap = sur.Execute("SELECT * From cevap order by tarih desc")%>
<ol>
<%
for i = 1 to 20
if cevap.eof then exit for
%>
<%Set konu = sur.Execute("SELECT * From konu where aid="&id&" and id="&cevap("altid")&"")%>
<li><a href="forum_posts.asp?tid=<%=konu("id")%>"><%=konu("baslik")%></a> </li>
<%
cevap.movenext
Next
cevap.close
set cevap = Nothing
%>ama olmadı yani son konuyu 20 kere üst üste gösteriyor bi sonrakine geçmiyor
-
rs1 = select * from cevaptablosu where konuid=xx order by tarih desc
rs2 = select konubasligi from konutablosu where konuid = xx
rs2("konubasligi") adlı konu :
do while not rs1.eof
rs1("cevap")rs1.movenext
loopanladığım kadarıyla bu şeklinde olmaz mı?
-
ha sen listleme mi istiyon?
onun için de
rs1 = select * from cevaptablosu order by tarih desc
for i=1 to 20
rs2 = select * from konutablosu where id = "& rs1("konuid") &"
response.write rs2("konubaslgi")
rs1.movenext
nextşeklinde olabilir
-
hocam kategoriyi nasıl çekecek peki :|
şöle
kategori.asp?id=15 15 id nolu kategoriyi seçiyorum
buradan cevap tablosunda son tarihden son konularuı çekecem :|
-
rs1 = select * from konutablosu where kategoriid=15
for i = 1 to 20
rs2 = select * from cevaptablosu where konuid=" & rs1("id") & " order by tarih desc
rs3 = select * from konutablosu where id = "& rs2("konuid") &"
for i = 1 to 20
response.write rs3("konu")rs3.movenext
next
rs1.movenext
nextbunu dene
-
hocam ya da neden uğraşıyoruz ki? Senin istediğin yazılan cevaplara göre tarih desc olarak listelemek değil mi?
Bi konuya herhangi bi cvp yazıldığında now() komutuyla aldığın tarihi konutablosunda açacağın bi field'e ekle.. Böylece kişiler cvp yazdığında konu tablosundaki o konuya ait tarih fieldi güncellensin
sonra gir paşa paşa konu tablosunu tarihe göre desc olarak listlele.
-
hocam şöle bişi yaptım
<%
Set rs1 = sur.Execute("select * from konu where aid = "&id&"")
for i = 1 to 11
if rs1.eof then exit for
Set rs2 = sur.Execute("select * from cevap where altid="&rs1("id")&" order by tarih desc")
Set rs3 = sur.Execute("select * from konu where id = "&rs2("altid")&"")
for i = 1 to 10
if rs3.eof then exit for
%>
<%=rs2("baslik")%><br>
<%
rs3.movenext
next
rs1.movenext
nextScript error detected at line 90.
Source line: for i = 1 to 10
Description: Geçersiz 'for' döngüsü denetim değişkenihatası verdi
-
hocam db içinde baya veri var.şimdi eğer yeni bi sütun açsam okadar veri karışır gibime geliyor :/
yani boş db üzerinde dğeil dolu db üzerinde çalışıyorum
-
hocam niye karışsın yahu. Veritabanı bu. elbette yeni field açacaksın.. sadece orda boş olarak durur sen onları güncelledikçe zaten devam eder sen en sonları listeleyeceğin için ilk 20'ye cevap yazılıp güncellendikten sonra boş fieldlerin bi zararı olmaz
-
fox hallettin mi halletmediysen örnek db ver yapalım
biraz mantıken kendim bişeyler oluşturup yaptım olay şu
öncelikle cevaplar tablosuna bağlanıp tarihe göre desc yapıcaksın sıralatacaksın
daha sonra aynı sql içinde konular tablosuna bağlanıp cevaplar tablosundaki üst konu idsini , konular tablosunun idsine göre eşleştirme yapıcaksın aynı zamanda bu sqla kategori idsini de ekliceksin
örneğin
Set cevaplar=sur.Execute("SELECT * From cevaplar order by tarih desc")
do while not cevaplar.eof
Set konu = sur.Execute("SELECT * From konular where id="&cevaplar("basid")&" and katid="&request("katid")&"")
if not konu.eof then
response.write ""&konu("baslik")&"<br/>"
end if
cevaplar.movenext
loop
eof kontrolüylede birden fazla aynı konuyu basmasını engelliyosun işte