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:
questo invece il file func.inc.php con il motore di ricerca
fin qui tutto bene...il problema: come fare se il database contiene più di una tabella?
grazie
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