|
|
|
Günümüzde neredeyse tüm web siteleri içerik olarak veritabanina dayanan bir tasarimla hazirlaniyor. Bunun içIn ASP ve PHP dilleri kullaniliyor. ASP ile hazirlanan tasarimlarda da agirlikli olarak MS Access veritabani dosyalari kullaniliyor. Hazirlamis oldugunuz web sitesi böyle bir siteyse, site içine bir arama motoru hazirlayabilirsiniz. Böylece, ziyaretçileriniz veritabaninda bulunan kayitlarda, istedikleri bir veya birkaç sözcüge göre arama yapip, bulunan kayitlari listeleyebilir ve istedikleri kaydi seçerek ekranda görüntüleyebilirler. Bu yazimizda ayrintili olarak bir site içi arama motoru tasarimini anlatacagiz. ASP bilginizin oldugunu varsayarak ayrintili bilgi verilmeyecektir. Öncelikle veritabani dosyamizi hazirlayalim; MS Access ile yeni bir dosya olusturun, adi "kayitlar.mdb" olsun, bu veritabani dosyasinin içinde "icerik" adinda bir tablo bulunsun, tablomuzdaki alanlar ise, <b>ID : Otomatik sayi (Birincil Anahtar) baslik : String (255 karakter) metin : Not</b> eklinde olsun. Bu veritabaninda ID, kayitlarimizin kimlik numarasini tutacak ve otomatik sayi olacak, "baslik" alaninda, ilgili bölümün basligi olacak, "metin" alaninda ise ilgili sayfanin içerigine ait kodlar bulunacak. Arama motorumuz bu tablonun "metin" alanini kullanacak. Kodlarimizda SQL dilinin "Like" komutu ve VBScript' In "Replace" komutu anahtar olarak görev yapacak. Veritabanina ait kayitlarin görüntülendigi sayfalarin hazir oldugunu varsayarak, "arama.asp" adinda bir sayfa hazirlayacagiz, bundan önce, "arama.inc" adinda bir kod dizisi yazacagiz ve bu kod dizisini "#include file" metoduyla, arama motorunun kullanilmasini istedigimiz sayfamiza dahil edecegiz. "arama.inc" Kodlari <b><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></b> Bu kodlar bize asagidaki görüntüyü saglayacaktir, ve metin kutusuna yazilan metin (örnegin Deneme), Gönder dügmesine tiklandiginda "arama.asp" sayfamiza "arama.asp?aranan=Deneme" seklinde gönderilecektir. Simdi arama.asp sayfamizin kodlarini hazirlayalim; "arama.asp" Kodlari "_" isareti satirin devam ettigini göstermektedir. <b><% 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></a>" 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></a>" 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: <b> <% =kayitlar.RecordCount %></b> <% 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'><b>_ " & aranan & "</b></font>") degistir = duzelt End Function %> <table border="0" cellpadding="5" cellspacing="0" width="500"> <tr><td width="360" valign="top"><b>Metin</b></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 %> <b>[<a href="arama.asp?sa=<% =i %>&aranan=<% =aranan %>"> <% =i %> </a>]</b> <% Else %> <b>[ <% =i %> ]</b><%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></b> Bu kisa kodlar ile sayfanizda kayitlari alt alta görüntüleyebilirsiniz. Kisa metinler içeren kayitlar içIn uygun olan bu tasarimda, uzun metinler içeren kayitlarin oldugu sayfalarin görüntülenmesi hos olmayacaktir, bu durumda asagidaki satirlari, altindakilerle degistirerek kayitlariniz içIn linkler olusturabilir ve normalde kayitlarinizi görüntülemek içIn kullandiginiz sayfaya kayitla ilgili baglanti verebilirsiniz. Görüntüleme sayfanizin kodlarini da yazin, dosya adi "goster.asp" olsun. <b><tr><td valign="top"><% =degistir(kayitlar("metin")) %></td></tr> <a href="goruntule.asp?id=<% =kayitlar("id") %>"><% =kayitlar("baslik")_ %></a></b>
Okunma : 296 |
|