Seite 1 von 1

Suche auf weitere Tabelle erweitern

Verfasst: 17.05.2009 18:30
von webazubi
Hallo. Ich möchte über die in phpbb eingebaute Suche-Funktion gerne ein weitere Tabelle abfragen, die ich nachträglich eingebaut habe.
Bislang habe ich den einfachen Weg gewählt und schreibe in die search.php eine SQL-Abfrage, die meine Tabelle durchsucht und dabei die phpbb-Konstante §keywords als Kriterium nimmt. Das kann ich mir nun auch in der search_results.html ausgeben lassen. Allerdings wird die search_results.html offenbar nicht aufgerufen, wenn die Suche in den normalen phpbb-Tabellen kein Ergebnis gebracht hat.
Meine Frage also: Wie kann ich dafür sorgen, dass entweder
- die search_results.html auf jeden Fall angezeigt wird, selbst wenn die Suche (über die herkömmlichen Tabellen) kein Ergebnis brachte? Bei dieser Variante würde das Ergebnis meiner eigenen Suche dann zumindest angezeigt werden.
- oder wo müsste ich meine Abfrage über meine Tabelle in der search.php eintragen, damit meine Tabelle bei den Ergbnissen der normalen Suchabfrage mit berücksichtigt wird?
Danke

Re: Suche auf weitere Tabelle erweitern

Verfasst: 18.05.2009 21:33
von Ninos
poste mal dein Skript, dann können wir dir vielleicht helfen.
Das sind zu weniger Infos mom ;)

Re: Suche auf weitere Tabelle erweitern

Verfasst: 18.05.2009 22:23
von webazubi
Hallo. Mein Script ist bislang nur Standardcode.
Ich habe eine Tabelle "beitrag" mit den Feldern "beitrags_id" und "titel". Nach dieser Spalte "titel" möchte ich durchsuchen.
In der search.php wird standardmäßig oben das Keyword abgefragt, also das Wort, dass bei Neuaufruf der Seite gesucht werden soll, mit

Code: Alles auswählen

$keywords = utf8_normalize_nfc(request_var('keywords', '', true));
Dahinter schreibe ich dann meine Abfrage und schicke das Ergebnis ins Template:

Code: Alles auswählen

$sql = 'SELECT * FROM beitrag WHERE beitrag.titel Like ' . "'%" . $keywords . "%'" ;
$result = $db->sql_query($sql);
while ($row = $db->sql_fetchrow($result))
  {
   $beitrags_id = $row['id_beitrag'];
    $beitrags_titel = $row['titel'];
   }
$template->assign_vars(array( 'BEITRAGSTITEL'	=> $beitrags_titel));
In der search_results.html schreibe ich dann die Templatevariabel {BEITRAGSTITEL}, die ich natürlich, wenn es so funktioniert, noch zusammen mit der Übergabe der beitrags_id als Linkadresse usw. formatieren würde.
Ergo: Wenn ich in der Suche-Funktion von phpbb ein Wort eingebe, dass es auch in einem Post gibt, wird die search_result.html aufgerufen und es sind dann auch die Ergebnisse meiner Tabellenabfrage aufgelistet.
Ergibt die Suche in den Posts hingegen kein Ergebnis, wird die search_results.html überhaupt nicht aufgerufen und daher auch nicht die Ergebnisse meiner Tabellensuche.