Puh det var ikke så lidt da.. Det er lidt svært at finde ud af hvad den skal gøre fordi funktionen er så lang, du kan evt. afkorte den sådan her:
function searchablewords($string, $table=NULL){
$string = strtolower($string);
$string = str_replace(",", "", $string);
$string = strip_tags($string); // var egentlig strip_tags($string, '-'); men der findes vel ikke noget '-'-tag, så den parameter er vel overflødig?
$con = mysql_connect("localhost","","");
if (!$con) {
die('Could not connect: ' . mysql_error());
}
mysql_select_db("search", $con);
$sql = "SELECT * FROM search WHERE id != '' AND banned='0'";
if(!is_null($table)) {
$sql .= " AND WHERE " . $table . " LIKE '%" . $string . "%'";
}
$result = mysql_query($sql);
echo("<table");
while($row = mysql_fetch_array($result)) {
echo("<tr><td>");
echo($row['domain']);
echo("</td></tr>");
}
echo("</table");
}
der er nogle ting jeg ikke helt forstår:
result() - dit id i din table er vel integer (altså et nummer (helst unikt))? Hvorfor skal den så lede efter søgeresultatet i id feltet??? Forstår ikke formålet med funktionen? Hvis du vil udskrive $row['domain'] på alle fundne resultater, så kan du gøre det sådan der --^
preg_match er vel overflødig når databasen kun har fundet de resultater der indeholder $string??
$stringen = explode(" ", str_replace(",", " ", $row['search_words'])); - bedre at bruge $stringen = explode(",", $row['search_words']);
------------
Den funktion der bruger du bare sådan her:
searchablewords("string"); // leder efter string i id og returnere domain
searchablewords("string","company"); // leder efter string i company og returnere domain
bemærk: jeg har slet ikke testet koden, bare lige skrevet det on the fly
Indlæg senest redigeret d. 05.02.2011 02:20 af Bruger #16392