PDO ile Site İçi Arama Motoru Yapımı

Php pdo ile site içi arama motoru yapımını kendin yaptığım bir blog sayfasından paylaşmak istiyorum. Kodladığım sitede arama input’una gelen değer boş ise direk anasayfaya yönlendiriyor  , diğer ihtimallerde ise yazılar adlı tablomda başlıkları filtreliyordum. Buraya gelen değeri bir sql sorgusundan geçirdikten sonra gelen değer ile verileri çekip listeliyordum. Şimdi öncelikle veritabanı vs. kodların var olduğunu varsayalım.

Html Kodları

<form method="post" action="arama.php" id="searchform" class="search-form" _lpchecked="1">
<h3>Arama Motoru</h3>
<fieldset>

<input name="arama" Placeholder="Ne Aramıştınız?" type="text">
<input id="search-image" class="sbutton" src="images/search.png" style="border: 0px none; vertical-align: top;" type="image">
</fieldset>
</form>

Şimdi ise action kısmındaki arama.php sayfasının kodlamasını yapalım ve gelen değeri alıp işleyelim. Burada önemli olan bir komuttan bahsetmek istiyorum ki o da like komutudur. Bu komut sayesinde veritabanında arama yapabiliriz. Sağ ve soluna konan % işaretleri ise başta ve sonda başka karakterlerinde olabileceğini  gösterir.

Arama.php sayfası

$gelen = $_POST["arama"];
if($gelen == null){
header("location:index.php");
}
$cek = $db->query("select * from yazilar where yazi_baslik like '%$gelen%' ",PDO::FETCH_ASSOC);

Bu kısımlar gerekli olan kısımlar… Kodların tamamını en sonda paylaşacağım. Burada yapılmak istenen çok açık. Bir input’a gelen değeri post ile alıyoruz. Ondan sonra yeni sayfamız olan arama.php de bu değeri ile bir sql sorgusu yazıyoruz. Gelen değişkenindeki değeri yazılar tablomdaki başlıklar ile eşleştiriyorum. Yani eğer böyle bir yazı başlığı var ise onu listele. Artık listeleme sizin tasarımınıza kalmış ama ben kendi kodlarımı paylaşmak istiyorum.

————————————HTML KODLARI———————————

<form method="post" action="arama.php" id="searchform" class="search-form" _lpchecked="1">
<h3>Arama Motoru</h3>
<fieldset>

<input name="arama" Placeholder="Ne Aramıştınız?" type="text">
<input id="search-image" class="sbutton" src="images/search.png" style="border: 0px none; vertical-align: top;" type="image">
</fieldset>
</form>

 

———————————– PHP KODLARI————————————–

<?php

$gelen = $_POST["arama"];
if($gelen == null){
header("location:index.php");
}
$cek = $db->query("select * from yazilar where yazi_baslik like '%$gelen%' ",PDO::FETCH_ASSOC);
if($cek->rowCount()){
foreach($cek as $kayit){
echo '
<div class="post excerpt ">
<header>
<div class="bubble"><a href="#">'.$kayit['yazi_hit'].'</a></div>
<h2 class="title">
<a href="detay.php?id='.$kayit['yazi_id'].'" rel="bookmark">'.$kayit['yazi_baslik'].'</a>
</h2>
<div class="post-info">
<br><br>
<time> <b>Okunma Sayısı :</b> '.$kayit['yazi_hit'].'</time>
<span class="thecategory"><a href="sayfa.php?al='.$kayit['yazi_kategori'].'"><b>Kategori :</b>'.$kayit["yazi_kategori"].' | </a></span>
</div>
</header><!--.header-->
<div class="post-content image-caption-format-1">
<a href="#" rel="nofollow" id="featured-thumbnail">
<div class="featured-thumbnail"><img src="admin/'.$kayit['yazi_resim'].'" class="oval" height="150px" width="150px"></div> </a>
<p>'.$kayit['yazi_icerik'].'</p>
<p class="more"><a href="detay.php?id='.$kayit["yazi_id"].'">Devamını Oku…</a>
</p>
</div>
';
}
}

?>

 

AuthorHarun ALP

Bu adam , bilgi sahibi olduğu konularda makalelerini daha bilgilendirici hale getirip görseller ile süslüyor ve seo uyumlu makaleler ortaya çıkarıyor. Güncel webmaster konularını işlemekten keyif alıyor ve genelde her makale aslında bir sorunun çözümü niteliğinde.

9 thoughts on “PDO ile Site İçi Arama Motoru Yapımı

  1. Orada kısalt değişkeni kalmış
    orası hataya sebep oluyor
    ya değişkeni de ekleyin
    yada kaldırın
    belki çözemeyen olabilir.
    ‘.kisalt($kayit[‘yazi_icerik’],300).’
    bu kod buzoyr

    • Yorum için teşekkürler, hata oluşursa diğer okurlar sizin sayenizde hatalarını giderebilirler 🙂

  2. Merhaba,
    PDO da kişileri aramak istiyorum ama arama yapan kişinin sonuçlarda görünmesini istemiyorum.
    Ben kişi araması yapmayı başardım ama aramada benim de adım çıkıyor. Kendi adımın görünmesini istemiyorum. Bu konuda yardım edebilir misin?

    • Where cümleciğinde kendi idnizi hariç tutacaksınız bu kadar. Select…. Where id!=$benimidim.. Bu cümle ile kendi idniz dışında olanları alabilirsiniz. operatörleri iyi öğrenmenizi tavsiye ederim.

  3. Teşekkürler, sonunda doğru düzgün bir arama kodu bulabildim. Bizim gibi acemilerin kafasını fazla karıştırmamak lazım 😛

  4. peki eğer arama sonucu hatalı yada sonuç yoksa nasıl bir ekrana uyarı basabiliriz.birde bunu anlık olarak nasıl sorgulayabiliriz ?

    • Merhabalar , rowcount ile bu arama ile ilgili veritabanındaki satır sayısını buluruz. Burada ilk koşulda bir satır varsa sonuç varsa işlem yaptırıyorduk. Oraya yazacağın bir else komutu istediğini yapar. if($cek->rowCount()){ bu if için bir de else açıp echo yazdırarak test edebilirsin.

      Anlık veri işlemleri için de , jQuery Ajax ile Anlık Veri Listeleme
      buraya bakabilirsin. Yorumlara da bakmalısın. Mantık yanı veritabanı işlemlerin farklı bir dosya içerisinde gerçekleşecek. sen çıktıyı bir div içerisine yazdıracaksın.

  5. merhabalar ben php bilmiyorum fakat ki site yazıyorum sadece aram kısmı kaldı ben verdiğiniz

    (query(“select * from yazilar where yazi_baslik like ‘%$gelen%’ “,PDO::FETCH_ASSOC);
    if($cek->rowCount()){
    foreach($cek as $kayit){
    echo ‘

    kodunu nereye koyacağımı anlayamadım

    • Dostum instagramdan yanıt verildi , önce veri tabanı dersleriyle haşir neşir ol biraz kodları okuman daha kolaylaşacak. (Yorumunun bir kısmını kaldırdım)

Bir yanıt yazın

E-posta adresiniz yayınlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir