motore di ricerca su più tabelle

alessandromonti

Utente Attivo
25 Mar 2012
62
0
0
buon dì...
in un database "motorericerca" ho 1 tabella "articoli" con campi "titolo", "descrizione", "url" e "keywords"...ho buttato giù un motore di ricerca....questo è lo script del form di ricerca:

PHP:
<?php
ob_start();
include 'functions/func.inc.php';
if (isset($_POST['keywords'])){
	$keywords = mysql_real_escape_string(htmlentities(trim($_POST['keywords'])));	
	$errori = array();
	if (empty($keywords)){
		$errori [] = 'inserisci un valore'; 
	}else if(strlen($keywords) < 3){
		$errori [] = 'inserisci almeno tre caratteri'; 
	}else if((cerca_risultato($keywords) === false)){
		$errori [] = 'la ricerca per  '.$keywords.' non ha dato esito'; 
	}
	if (empty($errori)){		
	  $_SESSION['keywords'] = $keywords;
	  header("Location: http://localhost/prova/risultati_motore_ricerca.php"); //la pg dove presento l'esito della ricerca
	  exit();
	  ob_end_flush();	
	}else{
	 	$_SESSION['$errori'] = $errori;
		header("Location: http://localhost/prova/no_result.php"); //se la ricerca non dà risultati 
		exit();
		ob_end_flush();
		
	}
	
}
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Documento senza titolo</title>
<link href="css/stili.css" rel="stylesheet" type="text/css" />
</head>

<body>
<div id="wrapper">
<h1>search</h1>
<form action="" method="POST" />
<p>
  <input type"text" name="keywords" />
  <input type="submit" value="cerca" />
</p>
</form>
</div>

</body>
</html>

questo invece il file func.inc.php con il motore di ricerca

PHP:
<?php
session_start();
require_once 'Connections/connessione.php';

function cerca_risultato($keywords){
	$ritorna_risultato = array();
	$where = "";
	$keywords = preg_split('/[\s]+/',$keywords);
	$totale_keywords = count($keywords);
	
	foreach ($keywords as $key=> $keyword){
	
	   $where .="articoli.keywords LIKE '%$keyword%'";
	   if($key != ($totale_keywords -1)){
	      $where .= " OR ";
	    } 
	}
	$db = "motorericerca";    
	$sel = mysql_select_db($db) or die (mysql_error());
	$results = mysql_query("SELECT titolo, LEFT (descrizione, 70) as descrizione, url FROM articoli WHERE $where") or die (mysql_error()); 
	$rows = mysql_num_rows($results);
	if ($rows === 0){
	return false;
	
	}else{
		
	   while ($result_row = mysql_fetch_array($results)){
		   $ritorna_risultato [] = array(
		   'titolo' =>  $result_row['titolo'],
		   'descrizione' =>  $result_row['descrizione'],
		   'url' =>  $result_row['url']		   
		   );		
	   }
	   return $ritorna_risultato;
   }	
}
?>

fin qui tutto bene...il problema: come fare se il database contiene più di una tabella?

grazie
 

Discussioni simili