Gönderen Konu: ASP'de Site İçi Arama Motoru  (Okunma sayısı 5659 defa)

0 Üye ve 1 Ziyaretçi konuyu incelemekte.

Çevrimdışı burajan

  • Web Programcısı
  • Administrator
  • *
  • İleti: 5109
  • Puan: 334
  • Cinsiyet: Bay
  • Web Programcısı
    • Burak ŞİMŞEK - Kişisel İnternet Sitesi
ASP'de Site İçi Arama Motoru
« : Ekim 08, 2006, 14:45:08 ÖS »
Günümüzde neredeyse tüm web siteleri içerik olarak veritabanına dayanan bir tasarımla hazırlanıyor. Bunun için ASP ve PHP dilleri kullanılıyor. ASP ile hazırlanan tasarımlarda da ağırlıklı olarak MS Access veritabanı dosyaları kullanılıyor.

Hazırlamış olduğunuz web sitesi böyle bir siteyse, site içine bir arama motoru hazırlayabilirsiniz. Böylece, ziyaretçileriniz veritabanında bulunan kayıtlarda, istedikleri bir veya birkaç sözcüge göre arama yapıp, bulunan kayıtları listeleyebilir ve istedikleri kaydı seçerek ekranda görüntüleyebilirler. Bu yazımızda ayrıntılı olarak bir site içi arama motoru tasarımını anlatacağız. ASP bilginizin olduğunu varsayarak ayrıntılı bilgi verilmeyecektir.

Öncelikle veritabanı dosyamızı hazırlayalım; MS Access ile yeni bir dosya oluşturun, adı "kayitlar.mdb" olsun, bu veritabanı dosyasının içinde "icerik" adında bir tablo bulunsun, tablomuzdaki alanlar ise,

ID : Otomatik sayı (Birincil Anahtar)
baslik : String (255 karakter)
metin : Not

şeklinde olsun. Bu veritabanında ID, kayıtlarımızın kimlik numarasını tutacak ve otomatik sayı olacak, "baslik" alanında, ilgili bölümün başlığı olacak, "metin" alanında ise ilgili sayfanın içeriğine ait kodlar bulunacak. Arama motorumuz bu tablonun "metin" alanını kullanacak.

Kodlarımızda SQL dilinin "LIKE" komutu ve VBScript' in "Replace" komutu anahtar olarak görev yapacak.

Veritabanına ait kayıtların görüntülendiği sayfaların hazır olduğunu varsayarak, "arama.asp" adında bir sayfa hazırlayacağız, bundan önce, "arama.inc" adında bir kod dizisi yazacağız ve bu kod dizisini "#include file" metoduyla, arama motorunun kullanılmasını istediğimiz sayfamıza dahil edeceğiz.

"arama.inc" Kodları

<form name="arama" action="arama.asp" method="get">
<table border="1" cellpadding="3" cellspacing="0" width="120">
<tr><th colspan="2">Site Içi Arama</th></tr>
<tr><td align="right">Aranacak Sözcük :</td><td>
<input type="text" size="20" name="aranan"></td></tr>
<tr><td> </td><td><input type="submit" value="Gönder"></td></tr>
</table>
</form>

Bu kodlar bize aşağıdaki görüntüyü sağlayacaktır, ve metin kutusuna yazılan metin (örneğin Deneme), Gönder düğmesine tıklandığında "arama.asp" sayfamıza "arama.asp?aranan=Deneme" şeklinde gönderilecektir.

Şimdi arama.asp sayfamızın kodlarını hazırlayalım;

"arama.asp" Kodları "_" işareti satırın devam ettiğini göstermektedir.

<% aranan = Request.QueryString("aranan") %>
<html>
<head>
<meta http-equiv="content-type" content="text/html; charset=ISO-8859-9">
<meta http-equiv="content-type" content="text/html; charset=windows-1254">
<title>Arama Sayfasi : "<% =aranan %>" Sözcügü Arama Sonuçlari</title>
</head>
<body>
<h4>Sonuçlar</h4>
<%If Request.QueryString("aranan") = "" Then

Response.Write "<h5>Aranacak sözcügü girin</h5>"
Response.Write "
<a href=""javascript:window.history.back()""><h6>Geri</h6>[/url]"
Response.End

Else

aranan = Request.QueryString("aranan")End If %>
<% veritabani = Server.MapPath("databases/kayitlar.mdb")
baglantim = "DRIVER={Microsoft Access Driver (*.mdb)}; DBQ="_ & veritabani
Set baglanti = Server.CreateObject("ADODB.Connection")baglanti.Open baglantim
Set kayitlar = Server.CreateObject("ADODB.RecordSet")
aramasql = "SELECT * FROM icerik WHERE metin LIKE '%" & aranan & "%'_ ORDER BY id ASC"
kayitlar.Open aramasql, baglanti, 1, 3
If kayitlar.RecordCount =< 0 Then
Response.Write "<h4>Site içeriginde uygun kayit bulunamadi...</h4>"
Response.Write "<h5>Aranan Sözcük : " & aranan & "</h5>"
Response.Write "
<a href=""javascript:window.history.back()""><h6>Geri</h6>[/url]"
Response.End
End If
%>
<%
kayitlar.PageSize = 20
SayfaSayisi = kayitlar.PageCount
Kayitlar.AbsolutePage = sayfano
%>
<table width="740" border="0" cellpadding="0 cellspacing="0" align="left">
<tr><td valign="top" width="150">
Bulunan kayit:
<% =kayitlar.RecordCount %>


<%
If kayitlar.RecordCount > 20 Then %>

Her sayfada <font color="#ff0000"><% =kayitlar.PageSize %></font>_
sonuç görüntülenmektedir.

<% End If %>


</td>
<td valign="top" width="590">
<%
' Buradaki fonksiyon, aranan sözcügü kirmizi renkte görüntüleyecek
' sekilde degistirmektedir.

Function degistir(karakter)
duzelt = karakter
duzelt = Replace(duzelt, aranan, "<font style='color:#ff3333'>_
" & aranan & "
</font>")
degistir = duzelt
End Function
%>
<table border="0" cellpadding="5" cellspacing="0" width="500">
<tr><td width="360" valign="top">Metin</td></tr>
<%
For i = 1 To kayitlar.PageSize
If kayitlar.EOF Then Exit For
%>
<tr><td valign="top"><% =degistir(kayitlar("metin")) %></td></tr>
<%
kayitlar.MoveNextNext
%>
</table>
</td></tr>
<tr><td> </td><td>
<%
' asagidaki kodlar, bulunan kayitlar bir sayfadan fazla ise, diger
' sayfalara link olusturmaktadir.
<%
If SayfaSayisi <> 1 Then
%>


 Diger Sayfalar :
<%
For i = 1 To SayfaSayisiIf i <> SayfaNo Then
%>
>[<a href="arama.asp?sa=<% =i %>&aranan=<% =aranan %>"> <% =i %> [/url]]
<% Else %>
[ <% =i %> ]<%End IfNextEnd If%></td></tr></table>
</td></tr>
</table>



<%
kayitlar.Close
Set kayitlar = Nothing
baglanti.Close
Set baglanti = Nothing
' temizlik yapalim, olusturdugumuz sunucu nesnelerini kapatalim ki
' sunucumuz yorulmasin.
%>
</body>
</html>

Bu kısa kodlar ile sayfanızda kayıtları alt alta görüntüleyebilirsiniz. Kısa metinler içeren kayıtlar için uygun olan bu tasarımda, uzun metinler içeren kayıtların olduğu sayfaların görüntülenmesi hoş olmayacaktır, bu durumda aşağıdaki satırları, altındakilerle değiştirerek kayıtlarınız için linkler oluşturabilir ve normalde kayıtlarınızı görüntülemek için kullandığınız sayfaya kayıtla ilgili bağlantı verebilirsiniz.

Görüntüleme sayfanızın kodlarını da yazın, dosya adı "goster.asp" olsun.

<tr><td valign="top"><% =degistir(kayitlar("metin")) %></td></tr>
<a href="goruntule.asp?id=<% =kayitlar("id") %>"><% =kayitlar("baslik")_ %>[/url]

Kodların işinize yaraması dileğiyle, çalışmalarınızda başarılar.

Ekleyen: admin
« Son Düzenleme: Ekim 08, 2006, 23:43:33 ÖS Gönderen: burajan »
Konuyu Paylaş:
  delicious  facebook  twitter  google
Kişisel İnternet Sitem => buraksimsek.com.tr - http://www.buraksimsek.com.tr

Lütfen özel mesaj ile destek istemeyiniz. Önce forumda arama yapınız daha sonra forumda ilgili bölüme konu açınız.

Çevrimdışı Ozgur Hicyilmaz

  • Süper Moderatör
  • *
  • İleti: 1131
  • Puan: 106
  • Cinsiyet: Bay
    • Kişisel İnternet Sitem
-ASP'de Site İçi Arama Motoru
« Yanıtla #1 : Şubat 20, 2009, 17:47:18 ÖS »
İlerleyen zamanlarda işime yarayacak :)

Çevrimdışı crocus

  • İleti: 13
  • Puan: 0
  • Cinsiyet: Bayan
-ASP'de Site İçi Arama Motoru
« Yanıtla #2 : Ocak 19, 2010, 18:34:48 ÖS »
verdiğiniz kodlarla anladığım kadarıyla veritabanında sadece metin sütununda arama yapılabiliyor .. veritabanındaki tüm sütunlarda arama yapmak için nasıl bir döngü kurmalıyız. sorumu kendi arama.asp'nin içinde daha iyi anlatabilirim galiba .

benim veritabanımdaki sütun isimleri: urun_adi, kategori, fiyatlandirma_ tipi, fiyat, kullanim_alani

koyu renkle yazdığım gibi bir döngü kurulabilir mi ama döngüyü tamamlıyamadım :(

<a href="anasf.asp"> ANA SAYFA[/url]
<%
set baglanti = Server.CreateObject("adodb.Connection")
baglanti.open "Provider=Microsoft.Jet.Oledb.4.0;Data Source=" & Server.Mappath("celik.mdb")

Set aranan = Server.CreateObject("adodb.RecordSet")

'if request.form("ara")=urun_adi then
sql="SELECT * From urunler WHERE urun_adi like '%" & Request.Form("ara") & "%' "

'elseif request.form("ara")=fiyat then
'sql="SELECT * From urunler WHERE fiyat like '%" & Request.Form("ara") & "%' "

'end if

aranan.open sql, baglanti, 1, 3

%>

<div align="center">
  <center>
  <table border="1" cellspacing="0" width="800" bordercolor="#000000" style="border-collapse: collapse" cellpadding="0" height="70">
   
<tr>
      <td width="200" bgcolor="FFFF99" height="24">
      <p align="left"><font face="Tahoma">
      <span style="font-size: 8pt; font-weight: 700">&nbsp;
   Bulunan ürün:</span></font></td>

<td width="140" bgcolor="CCFFFF" height="24" align="center">
      <font face="Tahoma"><span style="font-size: 8pt; font-weight: 700">&nbsp;
   kategori:</td>

<td width="100" bgcolor="CCFFFF" height="24" align="center">
      <font face="Tahoma"><span style="font-size: 8pt; font-weight: 700">&nbsp;
   fiyat:</td>


      <td width="350" bgcolor="CCFFFF" height="24" align="center">
      <font face="Tahoma"><span style="font-size: 8pt; font-weight: 700">&nbsp;
   ürünün kullanıldığı yerler:</td>

<td width="150" bgcolor="CCFFFF" height="24" align="center">
      <font face="Tahoma"><span style="font-size: 8pt; font-weight: 700">&nbsp;
   fiyatlandırma şekli:</td>

    </tr>

    <% Do While Not aranan.eof %> </span></font>
   
<tr>

      <td width="200" bgcolor="#FAEBD7" height="35"><font face="Tahoma">
      <span style="font-size: 8pt">&nbsp;
<%=aranan("urun_adi")%></span></font></td>

<td width="140" bgcolor="#FAEBD7" height="26" align="center">
<font face="Tahoma"><span style="font-size: 8pt">&nbsp;
<%=aranan("kategori")%></span></font></td>

<td width="100" bgcolor="#FAEBD7" height="26" align="center">
<font face="Tahoma"><span style="font-size: 8pt">&nbsp;
<%=aranan("fiyat")%></span></font></td>

      <td width="350" bgcolor="#FAEBD7" height="26" align="center">
      <font face="Tahoma"><span style="font-size: 8pt">&nbsp;
<%=aranan("kullanim_alani")%></td>

<td width="150" bgcolor="#FAEBD7" height="26" align="center">
      <font face="Tahoma"><span style="font-size: 8pt">&nbsp;
<%=aranan("fiyatlandirma_tipi")%></td>

 </tr>

    </span>
<span style="font-size: 8pt; font-weight: 700">
    <%
aranan.MoveNext
Loop
%> </span></font>
  </table>
  </center>
</div>


inşallah anlatabilmişimdir

Çevrimdışı Ozgur Hicyilmaz

  • Süper Moderatör
  • *
  • İleti: 1131
  • Puan: 106
  • Cinsiyet: Bay
    • Kişisel İnternet Sitem
-ASP'de Site İçi Arama Motoru
« Yanıtla #3 : Ocak 19, 2010, 20:09:22 ÖS »
Klavyenize sağlık  ;D

Çevrimdışı crocus

  • İleti: 13
  • Puan: 0
  • Cinsiyet: Bayan
-ASP'de Site İçi Arama Motoru
« Yanıtla #4 : Ocak 19, 2010, 21:56:17 ÖS »
teşekkür ederim ama  :ag
bu komutlar sadece urun_adi sütununda arama yapıyor tüm sütunlarda nasıl arama yapabilirim yani bu komutlarımı nasıl değiştirmem gerekiyor ?

Çevrimdışı burajan

  • Web Programcısı
  • Administrator
  • *
  • İleti: 5109
  • Puan: 334
  • Cinsiyet: Bay
  • Web Programcısı
    • Burak ŞİMŞEK - Kişisel İnternet Sitesi
-ASP'de Site İçi Arama Motoru
« Yanıtla #5 : Ocak 20, 2010, 16:26:41 ÖS »
Kod: [Seç]
sql="SELECT * From urunler WHERE urun_adi like '%" & Request.Form("ara") & "%' "
Bu sütunda WHERE urun_adi like kısmını şu şekilde değiştirmelisin:

Kod: [Seç]
sql="SELECT * From urunler WHERE urun_adi,fiyat,urun_aciklamasi,urun_resmi like '%" & Request.Form("ara") & "%' "
Hatırladığım kadarıyla yukarıdaki gibi bir değişiklik yaparsan sorunu çözebilirsin. urun_adi kısmından sonra hangi verilerde arama yaptıracaksan onun tablo adını girmelisin. Ben örnek olarak fiyat, urun_aciklamasi ve urun_resmi sütunlarını yazdım. Kendine göre değiştirmelisin.
Kişisel İnternet Sitem => buraksimsek.com.tr - http://www.buraksimsek.com.tr

Lütfen özel mesaj ile destek istemeyiniz. Önce forumda arama yapınız daha sonra forumda ilgili bölüme konu açınız.

Çevrimdışı crocus

  • İleti: 13
  • Puan: 0
  • Cinsiyet: Bayan
-ASP'de Site İçi Arama Motoru
« Yanıtla #6 : Ocak 21, 2010, 15:04:35 ÖS »
burajan sizin dediğiniz gibi yaptığımda sorgu ifadesi içinde söz dizimi hatası veriyor. birden fazla alan adı yazınca biyerlerde takılıyor. tanımıyor galiba

hataları yollayım size: ilk olarak arama texti boşken arattırdığımda tüm listeyi yazdırması gerekir ama gelen hata şöyle:
 Microsoft JET Database Engine (0x80040E14)
'urun_adi,kategori,kullanim_alani,fiyat like '%%'' sorgu ifadesi içindeki Sözdizimi hatası (virgül)
 /arama.asp, line 16


arama textine şimdi de bir fiyat girdiğimde çıkan hatayı yolluyorum gerçi pek farkı yok ama:
 
Microsoft JET Database Engine (0x80040E14)
'urun_adi,kategori,kullanim_alani,fiyat like '%564%'' sorgu ifadesi içindeki Sözdizimi hatası (virgül)
/arama.asp, line 16

bir fikri olan varmı arkadaşlar kodlarımı biliyorsunuz yukarıda var

Çevrimdışı burajan

  • Web Programcısı
  • Administrator
  • *
  • İleti: 5109
  • Puan: 334
  • Cinsiyet: Bay
  • Web Programcısı
    • Burak ŞİMŞEK - Kişisel İnternet Sitesi
-ASP'de Site İçi Arama Motoru
« Yanıtla #7 : Ocak 21, 2010, 15:54:25 ÖS »
Kod: [Seç]
sql="SELECT * From urunler WHERE urun_adi,fiyat,urun_aciklamasi,urun_resmi like '%" & Request.Form("ara") & "%' "
Yukarıdaki verdiğim kodu yanlış hatırlamışım. Daha önceki scriptlerime bakarak çözümü buldum. Arama metinlerindeki tabloları ve sorgulamaları "or" kelimesi ekleyerek ayrı ayrı yapıyormuşuz. Yani örnek kod aşağıda:

Kod: [Seç]
sql="SELECT * From urunler WHERE urun_adi like '%" & Request.Form("ara") & "%' or fiyat like '%" & Request.Form("ara") & "%' or urun_aciklamasi like '%" & Request.Form("ara") & "%' or urun_resmi like '%" & Request.Form("ara") & "%' "
Kişisel İnternet Sitem => buraksimsek.com.tr - http://www.buraksimsek.com.tr

Lütfen özel mesaj ile destek istemeyiniz. Önce forumda arama yapınız daha sonra forumda ilgili bölüme konu açınız.

Çevrimdışı crocus

  • İleti: 13
  • Puan: 0
  • Cinsiyet: Bayan
-ASP'de Site İçi Arama Motoru
« Yanıtla #8 : Ocak 21, 2010, 16:45:37 ÖS »
 ;D süpersin çok teşekkür ederim burajan  :"5

Çevrimdışı maraton17

  • İleti: 1
  • Puan: 0
-ASP'de Site İçi Arama Motoru
« Yanıtla #9 : Nisan 12, 2011, 19:01:48 ÖS »
faydalı ve öz bir paylaşım
Teşekkürler
« Son Düzenleme: Nisan 14, 2011, 10:06:58 ÖÖ Gönderen: maraton17 »

 

Benzer Konular

  Konu / Başlatan Yanıt Son İleti
4 Yanıt
3194 Gösterim
Son İleti Haziran 22, 2010, 21:44:21 ÖS
Gönderen: alex15617
5 Yanıt
4108 Gösterim
Son İleti Haziran 24, 2010, 15:51:55 ÖS
Gönderen: carello
0 Yanıt
301 Gösterim
Son İleti Ocak 28, 2011, 17:56:26 ÖS
Gönderen: burajan
0 Yanıt
593 Gösterim
Son İleti Nisan 15, 2011, 20:49:20 ÖS
Gönderen: parazit0531
0 Yanıt
237 Gösterim
Son İleti Ağustos 05, 2011, 08:44:26 ÖÖ
Gönderen: yolcumustafa