Hallo,
ich möchte gern ein Suchformular erstellen. Es sollen Datensätze aus einer Datenbank ausgelesen werden. In den ausgegebenen Datensätzen sollen jeweils die gefundenen Suchwörter markiert werden.
Ich habe es auch schon versucht, aber es wird nur markiert, wenn es ein Suchwort gibt - ab zwei Suchwörtern gar keins. Wenn ich es mit zählen der einzelnen Wörter mache, erfolgt die Ausgabe von Datensätzen doppelt, sobald mehr als ein Suchwort in dem Datensatz gefunden wurde. Kann mir bitte jem. helfen, wie ich das anstellen kann, dass alle Suchwörter im Text markiert werden und der Datensatz nur einmal ausgegeben wird?
Mein bisheriger Code:
ich möchte gern ein Suchformular erstellen. Es sollen Datensätze aus einer Datenbank ausgelesen werden. In den ausgegebenen Datensätzen sollen jeweils die gefundenen Suchwörter markiert werden.
Ich habe es auch schon versucht, aber es wird nur markiert, wenn es ein Suchwort gibt - ab zwei Suchwörtern gar keins. Wenn ich es mit zählen der einzelnen Wörter mache, erfolgt die Ausgabe von Datensätzen doppelt, sobald mehr als ein Suchwort in dem Datensatz gefunden wurde. Kann mir bitte jem. helfen, wie ich das anstellen kann, dass alle Suchwörter im Text markiert werden und der Datensatz nur einmal ausgegeben wird?
Mein bisheriger Code:
PHP:
<?
$search = $_POST["search"];
if(isset($_POST["search"])){
//Suchewörter aufsplitten
$searchstring = $search;
$array = explode(' ',$searchstring);
for($x = 0; $x < count($array); $x++) {
if ($x > 0 && $x < count($array)) {
$sqlsearchstring .= " AND"; //nur Datensätze, in denen alle Suchwörter vorkommen
}
$sqlsearchstring .= " (name LIKE '%".$array[$x]."%' OR strasse LIKE '%".$array[$x]."%' OR ort LIKE '%".$array[$x]."%' OR zweck LIKE '%".$array[$x]."%')";
}
//Daten aus MySql-Datenbank holen
$abfrage = "SELECT id, name, strasse, plz, ort, zweck FROM stiftungsdaten WHERE $sqlsearchstring";
$ergebnis = mysql_query($abfrage) or die (mysql_error());
while($row = mysql_fetch_object($ergebnis)) {
//for($x = 0; $x < count($array); $x++) {
$data_id = $row->id;
$data_name = $row->name;
$data_name = eregi_replace($search, "<font color=red>".$search."</font>", $data_name);
// $data_name = eregi_replace($array[$x], "<b><font color = ".$color[$x].">".$array[$x]."</font></b>", $row->name);
}
}
?>
Zuletzt bearbeitet: