Site İçi Detaylı Arama

Haziran 7, 2008 tarihinde PHP kategorisine eklendi | Yorum yok

Bol içerikli site ziyaretçilerinin en fazla ihtiyaç duyacağı bölüm şüphesiz site içi aramadır. Farklı seçenekler sunan detaylı arama formları, zaman kazandırdığı gibi doğru içeriğe ulaşılmasınıda sağlayacaktır. Bu tür siteler için örnek bir form ve form sonucunu listelemek üzere yapılacak sorgu biçimini basit şekliyle anlatmaya çalıştım. Örnek forma ait kodlar aşağıdaki gibidir;

<table width=”100%” align=”center” border=”0″ cellpadding=”5″ cellspacing=”5″>
<tr>
<td align=”left” valign=”top”><label for=”kelime”>Aranacak kelimeler</label></td>
<td align=”left” valign=”top”><input type=”text” name=”kelime” id=”kelime” value=”" /></td>
</tr>
<tr>
<td align=”left” valign=”top”><label for=”kategori”>Kategori seçiniz</label></td>
<td align=”left” valign=”top”>
<select name=”kategori”>
<option value=”">Tüm Kategoriler</option>
<option value=”kategori1″>Kategori 1</option>
<option value=”kategori2″>Kategori 2</option>
</select>
</td>
</tr>
<tr>
<td align=”left” valign=”top”><label for=”aramayeri”>Aranacak yerler</label></td>
<td align=”left” valign=”top”>
<input type=”radio” name=”aramayeri” value=”1″ /> Başlıklarda <br />
<input type=”radio” name=”aramayeri” value=”2″ /> Metinde <br />
<input type=”radio” name=”aramayeri” value=”3″ /> Anahtar Kelimelerde <br />
<input type=”radio” name=”aramayeri” value=”4″ checked /> Tümü <br />
</td>
</tr>
<tr>
<td align=”left” valign=”top”><label for=”siralama”>Sonuçları sıralama biçimi</label></td>
<td align=”left” valign=”top”>
<input type=”checkbox” name=”siralama” value=”1″> Yeniden-eskiye sırala <br />
<input type=”checkbox” name=”siralama” value=”1″> Eskiden-yeniye sırala <br />
</td>
</tr>
<tr>
<td align=”left” valign=”top”><label for=”submit”>Aranacak kelimeler</label></td>
<td align=”left” valign=”top”><input type=”submit” id=”submit” value=”Aramaya Başla” /></td>
</tr>
</table>

Forma, aramak istenen kelime veya kelimeler için kategori seçimi, aranacak yere ait seçim kutusu, ve sonuçları sıralma biçimi gibi basit birkaç seçenek ekledim. Bunları artırmak mümkün, site yapısına göre; en çok izlenen/okunan içeriklere göre sıralama, renk/boyut tipi seçimleri vs… eklenebilir.

Formdan aldığımız sonuçları veritabanında bulunan kayıtlarla karşılaştırıp sonuçları göstermek için aşağıdaki kodlar kullanılabilir;

// Arama formundan alınan bilgiler.
$kelime = $_POST[kelime];
$kategori = $_POST[kelime];
$aramayeri = $_POST[aramayeri];
$yenieski = $_POST[yenieski];
$eskiyeni = $_POST[eskiyeni];
// Formda yapılan seçimlere göre sorgu biçimleri.
if (strlen($kelime) >= 1) {
if (is_numeric($kategori)) { $katsorgu = “kategori_id = ‘$kategori’ && “; }
if ($aramayeri == 1) {
$yersorgu = “baslik LIKE ‘%”$kelime”%’ && “;
} elseif ($aramayeri == 2) {
$yersorgu = “metin LIKE ‘%”$kelime”%’ && “;
} ($aramayeri == 3) {
$yersorgu = “anahtar_kelimeler LIKE ‘%”$kelime”%’ && “;
} ($aramayeri == 4) {
$yersorgu = “baslik LIKE ‘%”$kelime”%’ && metin LIKE ‘%”$kelime”%’ && anahtar_kelimeler LIKE ‘%”$kelime”%’ && “;
}
if ($yenieski == 1) { $sirasorgu = ‘ORDER BY addeddate DESC ‘; }
if ($eskiyeni == 1) { $sirasorgu = ‘ORDER BY addeddate ASC ‘; }
// Uyun kayıt durumu.
$sonuc1 = mysql_query(”SELECT * FROM tablo WHERE aktif=’1′ && $katsorgu $yersorgu $sirasorgu”);
if (mysql_num_rows($sonuc1) == 0) {
echo “Aradığınız terimlere uygun içerik bulunamadı.”;
} else {
// Sonuç var ise listeleme.
$sonuc2 = mysql_query(”SELECT * FROM tablo WHERE aktif=’1′ && $katsorgu $yersorgu $sirasorgu”);
while($row = mysql_fetch_array($sonuc2)) {
$row['baslik'];
$row['metin'];
.
.
.
}

Örnek kodları kendi yapılarınıza göre düzenleyerek deneyebilirsiniz. İyi çalışmalar…

Bu yazının Popülerliği: 22% [?]

Yorumlar

Yorum Yapın




Aşagıdaki iki kelimeyi boş olan kutuya yazınız. Bu uygulama zararlı yorumları engellemek için. Anlayışınıza teşekkur ederim.