Asp Yardım
-
Selam arkadaşlar..Asp ile ilgili bir sıkıntım var ve ne yaptımsa çözemedim.Kırmızı ile yazılan satırda hata alıyorum.Heralde querystring hem id için hem de sayfalama için getirirken çakışıyor.Yardımcı olabilirseniz sevinirim.
<%
veritabaniyolu = "a.mdb"
Set baglantimiz = Server.CreateObject("ADODB.Connection")
baglantimiz.open "DRIVER={Microsoft Access Driver (*.mdb)};DBQ=" & server.mappath("a.mdb")
id = request.querystring("id")
Session("id") = id
Set rs = Server.CreateObject("ADODB.Recordset")
sql="select * from tbforum where kat_id="& id &" order by id desc" //BU SATIRDA HATA ALIYORUM
rs.Open sql, baglantimiz,1,3
if rs.eof or rs.bof then
response.write ".."
else
end if
Toplam = rs.RecordCount
If Toplam = 0 Then
Response.Write "Tabloda Kayıt Yok"
Else
intGecerliSayfa = Request.Querystring("sayfa")
If intGecerliSayfa = "" OR IsNumeric(intGecerliSayfa) = False Then intGecerliSayfa = 1
rs.PageSize =30
intSayfaSayisi= rs.PageCount
rs.AbsolutePage =intGecerliSayfa
Aralik = 2
intSayfaAltSiniri = intGecerliSayfa - Aralik
intSayfaUstSiniri = intGecerliSayfa + Aralik
intSolGrupSayisi = 1 + Aralik
intSagAltSinir = intSayfaSayisi - Aralik
If (intSayfaUstSiniri >intSayfaSayisi) Then
intSayfaAltSiniri = intSayfaSayisi - (2 * Aralik)
intSayfaUstSiniri = intSayfaSayisi
End If
If (intSayfaAltSiniri <= 0) Then
intSayfaAltSiniri = 1
intSayfaUstSiniri = intSayfaAltSiniri + (2 * Aralik)
If intSayfaUstSiniri >= intSayfaSayisi Then intSayfaUstSiniri = intSayfaSayisi
End If
If intSolGrupSayisi >= intSayfaAltSiniri Then intSolGrupSayisi = intSayfaAltSiniri - 1
If intSagAltSinir <= intSayfaUstSiniri Then intSagAltSinir = intSayfaUstSiniri + 1
%>
<% for k=1 to rs.pagesize %>
<% if rs.eof or rs.bof then exit for %>
<a href="x.asp?id=<%=rs("id")%>"><%=rs("icerik")%></a>
<%
rs.movenext : next
%>
<%
If intGecerliSayfa >1 Then %>
<a href="" title="ilk Sayfa">[««]</a> <a href="" title="Önceki Sayfa">[«]</a>
<%
End If
%>
<%
For i = 1 to intSolGrupSayisi
If CInt(i) = (intGecerliSayfa) Then
Response.Write " <b>"
Else %>
<a href="" title="<%=i%>. Sayfa">
<%
End If
Response.Write i &".</a></b>"
Next
%>
<%
If (intSayfaAltSiniri - intSolGrupSayisi >1 ) Then Response.Write "<b>. . .</b>"
%>
<%
For i = intSayfaAltSiniri to intSayfaUstSiniri
If CInt(i) = CInt(intGecerliSayfa) Then
Response.Write " <b>"
Else %>
<a href="?sayfa=<%=i%>" title="<%=i%>. Sayfa">
<%
End If
Response.Write i &".</a></b>"
Next
%>
<%
If (intSagAltSinir - intSayfaUstSiniri >1) Then Response.Write "<b>. . .</b>"
%>
<%
For i = intSagAltSinir to intSayfaSayisi
If CInt(i) = CInt(intGecerliSayfa) Then
Response.Write " <b>"
Else %>
<a href="?sayfa=<%=i%>" title="<%=i%>. Sayfa">
<%
End If
Response.Write i &".</a></b>"
Next
%>
<%
If CInt(intGecerliSayfa) <>CInt(intSayfaSayisi) Then %>
<a href="?sayfa=<%=intGecerliSayfa+1%>" title="Sonraki Sayfa">[»]</a> <a href="" title="Son Sayfa">[»»]</a>
<%
End If
%>
<% end if %>
-
ne hatası alıyorsun, hata mesajını yazar mısın
-
Aşağıdaki hatayı alıyorum
Microsoft OLE DB Provider for ODBC Drivers error '80040e14'
[Microsoft][ODBC Microsoft Access Driver] Syntax error (missing operator) in query expression 'kat_id='.
-
id = request.querystring("id") 'den id değişkenine veri bekliyor olmasın veri gelmezse hata alıyor olabilirsin .
ayrıca baglandığın veritabanını ve tablolarını kontrol et müridim
-
bir önceki sayfadan gelen değerin id olduğuna emin misin hocam? msn pm at yardım edeyim.
-
id ye göre link sayfaya gidiyor,orada da sayfalama yapıyorum.sayfa ilk açıldığında sorun yok,1. sayfa olarak açılıyor.ama 2. sayfayı tıklayınca veya 3 4 vs. bu hatayı alıyorum.Çünkü sayfa için de querystring den sayfa geliyor,bu sefer ilk querystringden gelen id kayboluyor ve yerine sayfa=2 vs geliyor.ya sayfalama için başka bir sayfa açıp include edicem ki denedim beceremedim, ya da querystrigdeki çakışmayı önleyicek bir kodlama yapmalıyım.nasıl olcak çözemedim
Uygulamalı göstereyim.
mesela:
a sayfasında başlığa tıkladım şuraya gitti: www.site.com/kategori.asp?id=1
yeni açılan sayfada sayfalama var, rs.PageSize =1 ise ve 10 veri varsa 10 sayfa oluyor
diyelimki 2. sayfayı tıkladık ve şuraya gidiyor: wwwkategori.asp?sayfa=2 görüldüğü gibi id=1 kayboldu yerini sayfa=2 aldı
ve şu hatayı veriyor
Microsoft OLE DB Provider for ODBC Drivers error '80040e14'
[Microsoft][ODBC Microsoft Access Driver] Syntax error (missing operator) in query expression 'kat_id='.
-
kat_id'nin db'deki tipi ne hocam? int olduğuna emin misin?
-
db deki karşılığı: kategori tablosundaki id ye karşılık geliyor.yani id yazmadım da kat_id yazdım.
db(yani a.mdb) deki tablolar-burada paylaştığım gibi yazıyorum
tbforum:burada başlık, içerik, kat_id var
tbforumkat:burada kat_id,kat var bu kısım kategori tablosu
tbforum dan verileri a sayfasına çıkartıyorum. orada link verip kat_id ye göre başka bir sayfaya gönderiyorum,mesela b sayfası olsun.
<a href="b.asp?id=<%=rs("kat_id")%>"><%=rs("kat")%></a>
b sayfasında da o kategoride ne kadar veri varsa çıkartıyorum ve pagesize=1 ise ve 10 veri varsa sayfalama yapıyorum
B SAYFASININ KODLAMASI:
<%
veritabaniyolu = "a.mdb"
Set baglantimiz = Server.CreateObject("ADODB.Connection")
baglantimiz.open "DRIVER={Microsoft Access Driver (*.mdb)};DBQ=" & server.mappath("a.mdb")
id = request.querystring("id")
Session("id") = id
Set rs = Server.CreateObject("ADODB.Recordset")
sql="select * from tbforum where kat_id="& id &" order by id desc" //BU SATIRDA HATA ALIYORUM
rs.Open sql, baglantimiz,1,3
if rs.eof or rs.bof then
response.write ".."
else
end if
Toplam = rs.RecordCount
If Toplam = 0 Then
Response.Write "Tabloda Kayıt Yok"
Else
intGecerliSayfa = Request.Querystring("sayfa")
If intGecerliSayfa = "" OR IsNumeric(intGecerliSayfa) = False Then intGecerliSayfa = 1
rs.PageSize =30
intSayfaSayisi= rs.PageCount
rs.AbsolutePage =intGecerliSayfa
Aralik = 2
intSayfaAltSiniri = intGecerliSayfa - Aralik
intSayfaUstSiniri = intGecerliSayfa + Aralik
intSolGrupSayisi = 1 + Aralik
intSagAltSinir = intSayfaSayisi - Aralik
If (intSayfaUstSiniri >intSayfaSayisi) Then
intSayfaAltSiniri = intSayfaSayisi - (2 * Aralik)
intSayfaUstSiniri = intSayfaSayisi
End If
If (intSayfaAltSiniri <= 0) Then
intSayfaAltSiniri = 1
intSayfaUstSiniri = intSayfaAltSiniri + (2 * Aralik)
If intSayfaUstSiniri >= intSayfaSayisi Then intSayfaUstSiniri = intSayfaSayisi
End If
If intSolGrupSayisi >= intSayfaAltSiniri Then intSolGrupSayisi = intSayfaAltSiniri - 1
If intSagAltSinir <= intSayfaUstSiniri Then intSagAltSinir = intSayfaUstSiniri + 1
%>
<% for k=1 to rs.pagesize %>
<% if rs.eof or rs.bof then exit for %>
<a href="x.asp?id=<%=rs("id")%>"><%=rs("icerik")%></a>
<%
rs.movenext : next
%>
<%
If intGecerliSayfa >1 Then %>
<a href="" title="ilk Sayfa">[««]</a> <a href="" title="Önceki Sayfa">[«]</a>
<%
End If
%>
<%
For i = 1 to intSolGrupSayisi
If CInt(i) = (intGecerliSayfa) Then
Response.Write " <b>"
Else %>
<a href="" title="<%=i%>. Sayfa">
<%
End If
Response.Write i &".</a></b>"
Next
%>
<%
If (intSayfaAltSiniri - intSolGrupSayisi >1 ) Then Response.Write "<b>. . .</b>"
%>
<%
For i = intSayfaAltSiniri to intSayfaUstSiniri
If CInt(i) = CInt(intGecerliSayfa) Then
Response.Write " <b>"
Else %>
<a href="?sayfa=<%=i%>" title="<%=i%>. Sayfa">
<%
End If
Response.Write i &".</a></b>"
Next
%>
<%
If (intSagAltSinir - intSayfaUstSiniri >1) Then Response.Write "<b>. . .</b>"
%>
<%
For i = intSagAltSinir to intSayfaSayisi
If CInt(i) = CInt(intGecerliSayfa) Then
Response.Write " <b>"
Else %>
<a href="?sayfa=<%=i%>" title="<%=i%>. Sayfa">
<%
End If
Response.Write i &".</a></b>"
Next
%>
<%
If CInt(intGecerliSayfa) <>CInt(intSayfaSayisi) Then %>
<a href="?sayfa=<%=intGecerliSayfa+1%>" title="Sonraki Sayfa">[»]</a> <a href="" title="Son Sayfa">[»»]</a>
<%
End If
%>
<% end if %>
-----------------------------------------
2. sayfa ile beraber Aldığım hata:
Microsoft OLE DB Provider for ODBC Drivers error '80040e14'
[Microsoft][ODBC Microsoft Access Driver] Syntax error (missing operator) in query expression 'kat_id='.
-
id = request.querystring("id")
Session("id") = id
ne yapmaya çalışıyosun yavrum sen makinenin aklı karışacak.
-
alp in demek istedigi veri tabanın da kat_id tipi sayımı ? demos un dedıgı de mantıklı bır degıskene atayıp cagırabılırsın kanımca
-
sql="select * from tbforum where kat_id="& id &" order by id desc" //BU SATIRDA HATA ALIYORUM
-----------------------------
Yerine;
sql="select * from tbforum where kat_id='"& id &"' order by id desc"
kullan. Yani: kat_id='id' bu problem çok olur.