Datenbanksuche mit mehreren Stichwörtern

splat

Erfahrenes Mitglied
Hi,
ich habe bereits eine Suchfunktion die so funktioniert:

PHP:
<?
$search = trim(strtolower(nvl($_REQUEST["suche_artikel"])));
if ($search) {
	$qid_artikel = get_products($search);
} else {
	$url = match_referer() || empty($_SERVER["HTTP_REFERER"]) ? "$CFG->wwwroot/.admin" : $_SERVER["HTTP_REFERER"];
	header("Location: $url");
	die;
}

$DOC_TITLE = "Suchergebnisse";
include("templates/header.php");
include("templates/suche_artikel.php");
include("templates/footer.php");

/******************************************************************************
 * FUNCTIONS
 *****************************************************************************/

function get_products($search, $max_results=5000) {
/* get all the products under this category */

	$qid = db_query("
	SELECT
		 p.id
		,p.name
		,p.artikelnr
		,p.preis
		[...]
	FROM products p
	WHERE (lower(p.name) LIKE '%$search%' OR lower(p.artikelnr) LIKE '%$search%')
	LIMIT 0, $max_results
	");

	return $qid;
}
?>

Mein Problem ist jetzt, das ich immer nur nach einem exakten String suchen kann. Angenommen ich suche nach "shirt blau", dann finde ich einen Artikel der in der Datenbank unter "shirt größe L blau" steht, nicht. Die Suchbegriffe sollten also nicht "zusammenhängen". Kann mir jemand einen Tip geben wie ich das realisieren kann?

Gruß, Marc
 
Hallo German!
Danke für deine schnelle Hilfe! ;-)

Ich habe das ganze mal so abgeändert, um zu schauen ob es geht:

PHP:
line 4:   $search1 = trim(strtolower(nvl($_REQUEST["suche_artikel"])));
line 5:   $search = '%'.str_replace(' ', '%', $search1)'%';

Bekomme aber nun folgenden Fehler:

Parse error: parse error, unexpected T_CONSTANT_ENCAPSED_STRING in /web/.admin/suche_artikel.php on line 5

Was soll denn daran noch falsch sein? :confused:
 
PHP:
line 4:   $search1 = trim(strtolower(nvl($_REQUEST["suche_artikel"])));
line 5:   $search = '%'.str_replace(' ', '%', $search1).'%';
Sorry, da fehlte der 2. Punkt ...

Ach ja m.W. kannst Du strtolower bleiben lassen, da die Gaudi eh nicht case sensitive ist.
 
oh, man danke dir! :-)
Hab echt zuerst viel zu kompliziert gedacht...

Jetzt klappts wunderbar!

Gruß, Marc
 
Zurück