Hallo,
ich suche jetzt schon seit fast zwei Tagen nach einer Möglichkeit, für meine (funktionierende) Volltextsuche erweiterte Funktionen hinzuzufügen, wurde aber nicht fündig.
Ich habs mir so vorgestellt, dass über mehrere Suchfelder Suchbegriffe gefiltert werden können. Wenn es also in jeweils fünf Einträgen in meiner DB das Wort Alpha (Spalte1) gibt und in dreien davon das Wort Beta (Spalte2), dann soll bei der Suche nach den Begriffen Alpha und Beta, eben diese drei Einträge als Ergebnisse auftauchen.
Ich habe hier mal was probiert:
PHP-Code:
<?php
$seite = $_GET["seite"]; //Abfrage auf welcher Seite man ist
//Wenn man keine Seite angegeben hat, ist man automatisch auf Seite 1
if(!isset($seite))
{
$seite = 1;
}
// Verbindung zur Datenbank herstellen
$link = require("dbconnect.php");
$suchwort1 = mysql_real_escape_string($_GET['suche1']);
$suchwort2 = mysql_real_escape_string($_GET['suche2']);
$suchwort3 = mysql_real_escape_string($_GET['suche3']);
//Einträge pro Seite: Hier xx pro Seite
$eintraege_pro_seite = 50 ;
//Ausrechen welche Spalte man zuerst ausgeben muss:
$start = $seite * $eintraege_pro_seite - $eintraege_pro_seite;
$abfrage = "SELECT * FROM tabelle WHERE MATCH (spalte1) AGAINST ('%$suchwort1' IN BOOLEAN MODE) AND MATCH (spalte2) AGAINST ('%suchwort2' IN BOOLEAN MODE)
AND MATCH (spalte3) AGAINST ('%$suchwort3' IN BOOLEAN MODE) LIMIT $start, $eintraege_pro_seite";
$ergebnis=mysql_query($abfrage) ;
echo mysql_error();
echo "<p><h3>Suchergebnisse</h3></p>";
while($row = mysql_fetch_object($ergebnis))
{
echo "<fieldset>";
echo "<p><b>abc:</b></td><td>".htmlspecialchars ($row->spalte1)." </p>"; // Hier die Ausgabe der Einträge
echo "<p><b>abc:</b></td><td>".htmlspecialchars ($row->spalte2)." </p>";
echo "<p><b>abc:</b></td><td>".htmlspecialchars ($row->spalte3)." </p>";
echo "</fieldset>";
}
$result = mysql_query("SELECT * FROM tabelle WHERE MATCH (spalte1) AGAINST ('%$suchwort1' IN BOOLEAN MODE) AND MATCH (spalte2) AGAINST ('%suchwort2' IN BOOLEAN MODE) AND MATCH (spalte3) AGAINST ('%$suchwort3' IN BOOLEAN MODE)");
$menge = mysql_num_rows($result);
//Errechnen wieviele Seiten es geben wird
$wieviel_seiten = $menge / $eintraege_pro_seite;
//Ausgabe der Seitenlinks:
echo "<div align=\"center\">";
echo "<b>Seite:</b> ";
//Ausgabe der Links zu den Seiten
for($a=0; $a < $wieviel_seiten; $a++)
{
$b = $a + 1;
//Wenn der User sich auf dieser Seite befindet, keinen Link ausgeben
if($seite == $b)
{
echo " <b>$b</b> ";
}
//Aus dieser Seite ist der User nicht, also einen Link ausgeben
else
{
echo "<a href=\suchen.php?suche=".$_GET['suche']."&seite=$b\">$b</a> ";
}
}
echo "</div>";
echo "<p></p>" ;
echo "<fieldset></fieldset>" ;
$menge2 = mysql_num_rows ( $result );
echo '<b>' . $menge2 . ' Ergebnisse gefunden</b><br>';
?>
HTML-Code:
<form id="suche" name="suche" action="suchen.php" method="GET" enctype="text/html" onsubmit="return ">
<p></p>
<p>Suche nach abc </p>
<input type="text" name="suche1" value="" size="15" maxlength="20" />
<p></p>
<p>Suche nach abc</p>
<input type="text" name="suche2" value="" size="15" maxlength="20" />
<p></p>
<p>Suche nach abc</p>
<input type="text" name="suche3" value="" size="15" maxlength="20" />
<input type="submit" name="" value="Los" />
</form> Allerdings bekomme ich so keine Ergebnisse.
Suche ich nur nach einem Begriff, funktionierts einwandfrei. Hat da vllt jemand eine Idee? Zum dem Thema hab ich bei Google und in anderen einschlägigen Foren nichts finden können.
Es handelt sich hier um einen Beitrag, den ich am 23.05. schon hier (
http://www.traum-projekt.com/forum/1...unktionen.html) verfasst habe, allerdings konnte mir dort wohl niemand weiterhelfen. (Thema Crossposting).
Danke schonmal.