MyDesign | Kod Arşivi - Anasayfaya Dön   No banner in farm
Anasayfa Araştır Forum Gelişmiş Arama Siteniz İçin En Hit İçerikler RSS İçerik Ekle Scriptler Destekleyenler Kadromuz Reklam İletişim Giriş Sayfası Yap  Sık Kullanılanlara Ekle
Bu Kategorinin En Yeni Makaleleri:


Bu Kategorinin En Çok Okunan Makaleleri:






Arama:
Gelişmiş Arama


No banner in farm



En Çok Görüntülenen Kodlar:


Üye Girişi:
 Üye Ol



Anasayfa > Asp > Makaleler

Gelişmiş Arama Sayfası Mantığı

Veritabanında, farklı kriterlere göre farklı alanlarda arama yapma örneği

Arama  search  Like 

Kategori: Asp
Gönderen: mYavuz
Tarih: 30 Mayıs 2007
Okunma Sayısı: 27787
Puan: 8,8 / 15 Oy
Puan Ver:
Google Bookmarks  del.icio.us  Digg  Yahoo! MyWeb  Windows Live  Furl

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)
OzetNot
Haber_MetniNot

Gerekli 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")

%>

<form method="get" action="ara.asp">

<table>

<tr>

<td>Anahtar Kelime</td>

<td><input type="text" name="kelime" /></td></tr>

<tr>

<td>Aranacak Yer</td>

<td><select name="yer">

<option value="hepsi">-Hepsi-</option>

<option value="baslik">Başlıklar</option>

<option value="ozet">Özetler</option>

<option value="haber">Haber Metni</option>

</select></td></tr>

<tr>

<td>Kategori</td>

<td><select name="kategori">

<option value="0">-Hepsi-</option><%

rs.Open "SELECT * FROM Kategoriler ORDER BY Kategori ASC", Bag, 1, 3

If Not rs.Eof Then

Do While Not rs.Eof %>

<option value="<%=rs("Kategori_ID")%>"><%=rs("Kategori")%></option><%

rs.Movenext

Loop

End If

rs.Close %>

</select></td></tr>

<tr>

<td>&nbsp;</td>

<td><input type="submit" value="Ara" /></td></tr>

</table>

</form>

<%

Set rs = Nothing

Bag.Close

Set Bag = Nothing

%>

Arama formumuz hazır. Bu kodları, arama_form.asp adıyla kaydedin.

Dikkat ederseniz, form yollama metodunu get yaptı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 metotget'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 <>"" 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 %>

<p><%=rs("Baslik")%><br />

<%=rs("Ozet")%></p><%

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.

Murat Yavuz
http://www.mydesign.gen.tr

Gelişmiş Arama Sayfası Mantığı için yazılan yorumlar

Yüksel Akgül  { 26 Nisan 2015 }
Gerçekten çok işime yarayan bir kod oldu bu. Çok teşekkür ediyorum. Elinize sağlık...

Mehmet Ali  { 11 Mart 2013 }
Olay şu ki, sql cümleciğini değişkene atıyorsunuz. İf ile kontrol edip, ekstra koşullar ekliyorsunuz.

oray54   { 18 Mart 2009 }
karekter sorununu çözdükten sonra da do olmadan loop sorunu çıkıyor lütfen ilgilenir ve düzeltirmisiniz

Alper Alpveren   { 04 Mart 2009 }
Hocam Kopyalayamıyorumki Buradan, Kopyalayıp Yapıştır Yapınca extra karakterler Çıkıyor.

Yorum ekleyin

Bu sayfaya link verin:
Anasayfa > Asp > Makaleler > Gelişmiş Arama Sayfası Mantığı
Kategoriler:


Forum:



Bağlantılar:


Murat Yavuz | Site Haritası | Gizlilik Bildirimi | 54.92.158.65 | 0,12 Saniye
© Copyright 2004-2017 MyDesign | Kod Arşivi. Tüm Hakları Saklıdır.
MyDesign | Kod Arşivi, en iyi görünüm için, 1024x768 ve üzeri çözünürlük tavsiye eder.