Veri tabanı olmadan php kodu ile site içi arama

laboustasarim (693) 10 yıl önce sordu

merhaba yapmış olduğum bir siteye site içi arama kodu entegre ediceğim fakat veri tabanı yok buna uygun bir php kodu paylaşabilirmisiniz ? hiç biyerde bulamadım yardımcı olursanız sevinirim..

Toplam 1 cevap


cemphp (651) 10 yıl önce cevapladı

Aşağıda veritabansız bir sitede nasıl arama yapılır örnek var. Bir klasörün içerisindeki tüm text tabanlı dosyalar aranıyor. Notepad ile düzenledim hatalar olabilir. Fakat size bir fikir verir.

 

arama.php

<?
function get_param($name, $type="post", $default = "")
{
$returnee = "";

if(isset($_POST[$name]) && (($type == "post") || ($type == "both")))
$returnee = $_POST[$name];
else if(isset($_GET[$name]) && (($type == "get") || ($type == "both")) )
$returnee = $_GET[$name];
else
$returnee = $default;

if (1 == get_magic_quotes_gpc())
$returnee = stripslashes($returnee);

return trim($returnee);
}

function get_dir($name){

$temp = array();
$cnt = 0;
if($dh = opendir($name)) {
while(($file = readdir($dh)) !== false){

if($cnt >= 2)
array_push($temp, $file);

$cnt++;
}
$cnt = 0;
closedir($dh);
}

return $temp;
}

function arama($text_arama, $dir="arama_docs/"){

$text_arama = explode(" ", $text_arama);

$files = get_dir($dir);

$buffer = array();
foreach($files as $i => $v)
if(is_file($dir.$v))
array_push($buffer, array($dir.$v, file_get_contents($dir.$v)));

$found = array();
foreach($buffer as $i => $v)
foreach($text_arama as $ti => $tv)
if(strpos($v[1], $tv) !== false && !in_array($v[0], $found))
array_push($found, $v[0]);

return $found;
}

$index = array();
$index["arama_docs/iletisim.txt"] = array("iletisim.php", "iletisim sayfası");
$index["arama_docs/urunler.txt"] = array("urunler.php", "urunler sayfası");
$index["arama_docs/hakkimizda.txt"] = array("hakkimizda.php", "hakkımızda sayfası");


$user_input = get_param("arama", "get");

if($user_input != "" && $user_input != "Type arama text here")
$found = arama($user_input);
?>


HTML TARAF

<?
if($user_input != "" && $user_input != "aranacak kelime"){
?>

<span style="font-size:18px;">arama sonucları: <span style="color:#01a4a6;">"<?=$user_input;?>"</span></span><br/><br/>
<?
if(count($found) == 0)
{?>
Sonuc bulunamadı
<?}
else{
foreach($found as $i => $v)
echo "<a href='".$index[$v][0]."'>".$index[$v][1]."</a><br/>";
}
}
else{?>
arama kutusuna deger girin.
<?}?>