Muradiye Forum
Would you like to react to this message? Create an account in a few clicks or log in to continue.

Aşağa gitmek
BaRaN
BaRaN

Gelişmiş Arama Sayfası Mantığı 1210
Erkek Yay
Yılan
Mesaj Sayısı : 873
Doğum tarihi : 02/12/89
Yaş : 34
Nerden : güneşin doğduğu yer(DOĞUBEYAZIT)
İş/Hobi : cep telefonu
Bilgi : <center><font color="blue"><marquee direction="left" style="background:white">Muradiye Forum Bilgi Paylaşım Platformu</marquee></font></center
Rep Gücü : 0
Rep Puan : 8
Kayıt tarihi : 20/12/08
http://muradiyeforum.net

Gelişmiş Arama Sayfası Mantığı Empty Gelişmiş Arama Sayfası Mantığı

C.tesi Ocak 31, 2009 12:32 pm












Veritabanında kayıt sayısının artmasıyla, istediğimiz kaydı bulmak için arama yapmamız gerekebilir.
Sitemizde arama hizmeti sunarken,


  • Başlığında "E-Posta" kelimesi geçen kodlar
  • Sadece "Asp" kategorisindeki içerikler
  • Son 15 gün içinde eklenen kayıtlar
gibi arama seçenekleri sunabiliriz.
Kodları inceledikten sonra, bu tür seçenekleri sitenizi yapısına göre dilediğiniz kadar arttırabilirsiniz.
Örneğimizde kategorilere göre haber kaydı tutan bir veritabanı üzerinde arama işlemini göreceğiz.
Öncelikle veritabanımızı hazırlayalım.

Kategoriler tablosu alanları
Kategori_IDOtomatik SayıKategoriMetin (255)
Haberler tablosu alanları
Haber_IDOtomatik SayıKategori_IDSayıBaslikMetin (255)OzetNotHaber_MetniNotGerekli alanları ve tabloları oluşturup
veritabani.mdb olarak kaydedelim.

arama_form.asp
Öncelikle arama yapılacak formu hazırlıyoruz.
Arama sayfamıza ziyaretçi, anahtar kelime girecek, bu kelime isterse
sadece başlıkta, isterse sadece özet metinde, isterse sadece haber
metninde, isterse her üç bölümde de aranacak. Ayrıca istediği
kategorideki haberler içinde arama gibi bir seçeneği de olacak.
<%
Set Bag = Server.CreateObject(�Adodb.Connection�)
Bag.Open �Provider=Microsoft.Jet.Oledb.4.0; Data Source=�& Server.MapPath(�veritabani.mdb�) &�;�
Set rs = Server.CreateObject(�Adodb.Recordset�)
%>














Anahtar Kelime
Aranacak Yer
Kategori
 

<%
Set rs = Nothing

Bag.Close
Set Bag = Nothing
%>
Arama formumuz hazır. Bu kodları, arama_form.asp adıyla kaydedin.
Dikkat ederseniz, form yollama metodunugetyaptık.
Çünkü arama sonucunun gösterildiği sayfada, sayfalama sistemi
gerekebilir. Ve diğer sayfalara geçerken, arama kriterlerini de diğer
sayfaya aktarmak için bunları QueryString ile taşımamız gerekir. Bunun
için de gerekli olan metot get�tir.


ara.asp
Şimdi de arama sonucunun gösterildiği sayfayı hazırlayalım.
<%
Set Bag = Server.CreateObject(�Adodb.Connection�)
Bag.Open �Provider=Microsoft.Jet.Oledb.4.0; Data Source=�& Server.MapPath(�veritabani.mdb�) &�;�

Set rs = Server.CreateObject(�Adodb.Recordset�)

strKelime = Request. Querystring (�kelime�)
strYer = Request.Querystring(�yer�)
intKategori = Request.Querystring(�kategori�)

SQL = �SELECT * FROM Haberler WHERE Haber_ID >0 �
�Eğer anahtar kelime yazılmışsa, ilgili yerde arama yapalım
If strKelime <>�� Then
If strYer = �baslik� Then SQL = SQL & �AND Baslik LIKE �%�& strKelime &�%� �
If strYer = �ozet� Then SQL = SQL & �AND Ozet LIKE �%�& strKelime &�%� �
If strYer = �haber� Then SQL = SQL & �AND Haber LIKE �%�& strKelime &�%� �
If strYer = �hepsi� Then SQL = SQL & �AND (Baslik LIKE �%�&
strKelime &�%� OR Ozet LIKE �%�& strKelime &�%�OR Haber
LIKE �%�& strKelime &�%�)�
End If
�Eğer bir kategori seçilmişse, sadece o kategorideki haberlerde arama yapalım
If intKategori <>�0� AND IsNumeric(intKategori) Then
SQL = SQL & �AND Kategori_ID = �& CInt(intKategori) &� �
End If

Rs.Open SQL, Bag, 1, 3
If rs.Eof Then
� Bir sonuç bulunmadıysa, sayfaya uygun bir mesaj yazalım
Response.Write �Aradığınız kriterlere uygun sonuç bulunamadı.�
Else
Do While Not rs.Eof %>

<%=rs(�Baslik�)%>

<%=rs(�Ozet�)%>

<%
rs.Movenext
Loop
End If
Rs.Close
Set rs = Nothing

Bag.Close
Set Bag = Nothing
%>
Bu sayfayı da ara.asp olarak kaydedin. Özellikle SQL değişkeninin
oluşturulduğu satırlara dikkat ederseniz, bu tür arama sayfalarının
nasıl oluşturulduğunu kolayca anlayabilir, kendi sitelerinizde
uygulayabilirsiniz.
Sayfa başına dön
Bu forumun müsaadesi var:
Bu forumdaki mesajlara cevap veremezsiniz