Suchskript

  • Themenstarter Themenstarter ba2
  • Beginndatum Beginndatum
B

ba2

Guest
Moin ich möchte ein Such Skript machen und habe es folgender maßen gemacht.

PHP:
<?php
//SuchSkript
if ($seite == "suche")
{
$suche = ($_POST["suche"]);

$abfrage = "SELECT * FROM lexikon WHERE name LIKE '%".$suche."%' OR text LIKE '%".$suche."%' ORDER BY name ASC";
$ergebnis = mysql_query($abfrage);
while($row = mysql_fetch_object($ergebnis))
   {
   $text = $row->text;  
   $text = eregi_replace("$suche", "<b></i><big><span style=\"background-color: #FFFF00\">$suche</span></big></b>", $text);
   echo $text;
   }
}
else
{
echo "
<form action=\"suche.php?seite=suche\" method=\"post\">
<input type=\"text\" size=\"15\" maxlength=\"50\"
name=\"suche\" value=\"SUCHE\">
<input type=\"submit\" value=\"LOS\">
</form>\n";
}
?>

Jetzt ist das Problem
zbsp.
$row->text = "HALLO ich bin Benjamin"

und ich suche "Hallo",
das funktioniert jetzt

suche ich aber zbsp Hallo Benjamin, werden keine resultate mehr angezeigt, wie muss ich das angehen das nicht nur zusammenhengende Wörter ausgegeben werden?

mfg und frohe Ostern by BA2
 
OK, dan ersetze ich alle leerzeichen durch %

aber dan funktioniert die einfärbung nicht mehr

siehe zeile 12
 
Im kleinen geht das gut, wenn Du aber nen größeren Text (zb. Forumsdatenbank) durchsuchen magst geht das nicht mehr, da Du zu lange suchen wirst.

Abhilfe schaffen da verschiedene Mechanismen wie zb. die Vektorielle Suche
ich hab n bissl danach gegoogled gerade und so gut wie nichts brauchbares gefunden, außer diese wiki artikel:
http://de.wikipedia.org/wiki/Information-Retrieval
http://de.wikipedia.org/wiki/Vektorraum_Retrieval
vielleicht schreib ich bei zeiten mal n Tutorial dazu.

Hendrik
 
Ich habe auch ziemlich lange gegoogled und nix brauchbares gefunden, wäre toll wenn du mal nen Tutorial schreiben würdest!

Muss ich mich jetzt mal intensiv mit auseinnander setzen.

EDIT
Ich hab mir gedacht das ich die Variable $suche in wörter auf splitte, abe wie macht man sowas???
ich möchte schon das das hervorheben der suchwörter bleibt, wenn ich jetzt aber von $suche die leerzeichen in % umwandle funktioniert das nicht mehr, ich vermute mal das ich das ganze dann gesplitten im array legen müssste oder?


mfg ba2
 
PHP:
<?php
$teilesuche = explode(" ", $suche);
?>

OK das funktioniert soweit sehr gut

jetzt ist mein Problem woher weiss ich wie viele werte der array hat?

EDIT:

habs rausgefunden

PHP:
<?php
$teilesuche = explode(" ", $suche);
echo count($teilesuche);
?>

EDIT
PHP:
$a=0;
$suche = ($_POST["suche"]);
$teilesuche = explode(" ", $suche);
$teilsucheanzahl =  count($teilesuche);
$zahl = $teilsucheanzahl - 1; 
$suchbegriff = "(text LIKE '%".$teilesuche[0]."%'";


while($a < $zahl)
   {
   $a++;
   $suchbegriff .= " AND text LIKE '%".$teilesuche[$a]."%'";
   }
$suchbegriff .=")";

ich hab das ganze jetzt so realesiert
 
Zurück
Oben