v2.5.2
Giriş yap

Php arama motoru yardım

Anonim
1,487 defa görüntülendi

Arkadaşlar kendi siteme bir arama motoru yapmayı deniyorum php de yeniyim ve arama motoru her ne kadar bilenler için basit olsa da bana karmaşık geliyor. Yapacağım şey site sayfalarını kolayca bulmak için veritabanındaki kayıtlarını sonuc olarak yansıtıp her sonuca da tıklanıldığında o sayfaya atmasını istiyorum bunu nasıl yapabilirim? Yani çıkan sonuca ait sayfa linkini html de bulunan href gibi nasıl ekleyebilirim?

Cevap yaz
Cevaplar (4)
ersiin
1423 gün önce

Veritabanından dönen sonuçları listelerken bu sonuçları linklendirebilirsin. @webdevyusuf arkadaşımızın önerdiği kodu şu şekilde düzenlersek istediğine ulaşmış olacaksın.

<?php

$db = new mysqli("localhost", "root", "password", "veritabani");

$word = @$_GET["q"];

$sql = $db->query("SELECT * FROM veritabani WHERE baslik LIKE '%".$word."%' ");

if ($sql->num_rows) {
    while ($row = $sql->fetch_assoc()) {
        //Linklendirme yapacağın alan
        $baslik = $row["baslik"];
        $url = $row["url"];
        echo "<a href=$url>$baslik</a><br>";
        
        
    }
} else {
    echo "sonuç yok";
}

?>

Tabii bunun için veritabanında içeriklerini tuttuğun bir tablo olmalı. Bu tabloda baslik ve url değerleri de tutulmalı. Merhaba olan başlığın urlsi https://siten.com/merhaba olarak tutulabilir. Url değeri yerine id değeri de girersin ve listeleme kısmında

<a href=https://siten.com/icerikgoster.php?id=$id>$baslik</a>

olarak gösterebilirsin. Nasıl bir çözüm arıyorsan detay verirsen daha da yardımcı olmaya çalışırız.

brkbrk
1424 gün önce

Teşekkür ederim ancak bunlar benim çıkan sonuca link vermemi sağlayamayacak gibi duruyor asıl istediğimse oydu yukarıda da yazdığı gibi :/

qplot
1424 gün önce

  $ara=$_POST['arama']; <-- Post ile veya GET ile --> $ara=$_GET['arama'];

  $sonuc=$db->prepare("SELECT * FROM WHERE baslik LIKE ?");
  $sonuc->execute(["%$ara%"]);
  $say=$sonuc->rowCount();
  

BUDA BI TIK ILERI VERSIYON


  $ara=$_POST['arama']; <-- Post ile veya GET ile --> $ara=$_GET['arama'];

  $sonuc=$db->prepare("SELECT * FROM WHERE CONCAT(baslik, ' ', detay) LIKE ?");
  $sonuc->execute(["%$ara%"]);
  $say=$sonuc->rowCount();
  

buda listeleme


if($say>0){ // burası kayıt var ıse goster

while($row_sonuc=$sonuc->FETCH(PDO::FETCH_ASSOC)){

echo '<a href="'.$row_sonuc['sayfaid'].'">'.$row_sonuc['bas'].'</a>';

}
}else{

echo "kayıt yok";

}


ek olarak $ara degıskenını süzersın strip_tags($ara) veya benzerı ıle

$ara=strip_tags($_POST['arama']);

burada editorde yazdım hata olursa soyle

webdevyusuf
1424 gün önce

index.html

<form action="ara.php" method="get">
    <input type="text" name="q" placeholder="aranacak kelime..." />
    <button type="submit">ara</button>
</form>

ara.php

<?php

$db = new mysqli("localhost", "root", "password", "veritabani");

$word = @$_GET["q"];

$sql = $db->query("SELECT * FROM veritabani WHERE baslik LIKE '%".$word."%' ");

if ($sql->num_rows) {
    while ($row = $sql->fetch_assoc()) {
        echo $row["baslik"]."<br />";
    }
} else {
    echo "sonuç yok";
}

?>