Keyword Search.

kne

Mitglied
Hallo.
Ich habe wieder ein kleines Problemchen.
Ich habe nochimmer ein Script laufen, das nach mehreren Kriterien sucht, mit Hilfe von Comboboxen. Wenn dann zB eine Combobox ausgewählt ist erweitere ich die Query, wie hir Zb :
Code:
$query=$query." AND `SEGMENT`='".$Segment."'";

Jetzt steht mir als Aufgabe, dass man auch mit Hilfe einer Textsearch suchen kann. Diese Textsearch, bezieht sich auf 3 Felder in der Tabelle. Diese lauten : MARK,MODELL,MOTOR/UNDRIFF.

Ich habe nach mehreren Stunden googlen, und Searchen, nichts herausgefunden.
Ich hoffe ihr habt mein Problem verstanden.

//kne
 
Ja, genau das meine ich.
Ich gebe in das Textfeld, etwas ein.
Setze es mit $_POST in eine Variable.

Und dann kommt das Problem
 
Es kommt darauf an, wie die Worter eingeben werden. Das Beste wäre vll getrennt durch ein Sonderzeichen. Ein Semikolon z.B.. Dann kannst du einfach anhand des Semikolons den String trennen und dann deine Suchquery aufbauen.
 
Der Benutzer gibt einfach etwas ein. Als beispiel "Audi FSI" . dann sollen alle Autos die von Audi mit einem FSI Motor angezeigt werden. Bei diesem Beispiel befindet sich "Audi" in der Zelle : MARK , und FSI ist ein Teil des Eintrags von MOTOR/UNDRIFF...
 
Das wird ja schon fast unmöglich. Du weist nie, ob er es richtig eintippt und in der richtigen Reihenfolge. Außer du gibst vor, dass es eine feste Reihenfolge geben muss.

Wiso belasst du es nicht bei den Dropdowns?
 
Fast unmöglich, aha. hab ich mir auch gedacht. Ich habe hier ein Tutorial gefunden, der irgendsowas in der Art macht. Ich verstehe aber nicht ganz was, da alles auf englisch erklärt ist. http://www.plus2net.com/sql_tutorial/search-keyword.php

Wenn ich eine feste Reihenfolge geben möchte, dann kann ich es ja bei den Comboboxen belassen. Das mit der Textsearch war eine Idee von einem mit dem ich zusammenarbeite.
 
Der Code, den du da findest, sucht aber nur in einer Spalte. Wenn du in allen suchen willst und du keine feste Reihenfolge hast, bleibt dir nichts anderes übrig, als alle Spalten mit allen Wörtern aus dem Suchtext zu durchsuchen.
Ich wüsste jetzt nicht, wie du herausbekommst, mit welchem Wort der Suchanfrage du welche Spalte durchsuchen musst.

PHP:
<?
$search_text=ltrim($_POST['suchtext']);
$search_text=rtrim($search_text);
$search_text = explode(' ',$search_text);

$q = '';

while(list($key,$val)=each($kt))
{
	if($val<>" " and strlen($val) > 0)
	{
		$q .= " MARK like '%".$val."%' or ";
		$q .= " MODELL like '%".$val."%' or ";
		$q .= " MOTOR like '%".$val."%' or ";
		$q .= " UNDRIFF like '%".$val."%' or ";
 	}
}
$q=substr($q,0,(strLen($q)-3));
// this will remove the last or from the string.
$query="select * from student where ".$q;
} // end of if else based on type value
echo $query;
echo "<br><br>";
$nt=mysql_query($query);
echo mysql_error();
while($row=mysql_fetch_assoc($nt))
{
	print_r($row);
	echo "<hr>";
}
?>

Damit bekommst du alle durchsucht. (Ist der Code von der Seite etwas abgeändert) Aber da wird beim Ergebnis wahrscheinlich eine Menge Schrott dabei sein.
 
Zuletzt bearbeitet:
Ich danke für die Hilfe.
Entweder mach ichs so, dass man in ner weiteren combobox auswählen kann, wo die textsearch stattfinden soll.
Oder man lässt sie ganz einfach ganz weg. Ist wohl am besten.

Danke für die Hilfe

+//Ken
 
Zurück