Frage von gollerxd, 9

Hejo ist es möglich dass ich in mysql bzw php mit einen suchfeld in dem ich mehrere begriffe hineinschreibe zu filtern?

z.B angenommen ich habe eine tabelle in phpmyadmin mit den Spalten 'id', 'blatt' und 'cont.nr' wie bekomme ich es hin mit einem Suchfeld indem filteranfragen für id sowohl als auch für blatt und container nummer stehen die jenigen Tabellenzeilen ausgeben die auf alle 3 wörter bzw filteranfragen passen ? vielen dank schonmal im voraus ^^

Hilfreichste Antwort - ausgezeichnet vom Fragesteller
von phpspace, 8

Um dein Problem zu lösen, müsstest du deine Request mit explode() verarbeiten. Danach die Arrays auf schadhaften Code untersuchen und dir dein SQL Statement zusammenbauen und die Anfrage bei der SQL oder MySQL Datenbank stellen. Ein Beispiel für explode: http://www.php-space.info/php-tutorials/21-zeichenkette,aufgrund,eines,selbst,de...

Antwort
von mastema666, 7

Du willst in dem Suchfeld einen Wert eingeben, der in einem der 3 Felder stehen muss oder der in allen 3 Feldern steht?

Oder willst du mehrere Suchbegriffe eingeben und davon soll jeweils einer in einem der Felder stehen?

Du kannst natürlich den Suchbegriff durch irgendwas trennen (Leerzeichen, Komma...) und den dann "auseinanderpflücken", aber wenn du nach 3 verschiedenen Begriffen suchen willst, würde ich je ein Suchfeld für jedes Feld in der DB machen, sonst gibt ein User die in der falschen Reihenfolge ein und schon passt nichts mehr...

Oder was meinst du genau? Also was willst du eingeben (einen Begriff, mehrere in einem Suchfeld oder mehrere in verschiedenen Feldern) und wonach soll gesucht werden (nur Datensätze, wo alles 3 übereinstimmt, wo eines davon übereinstimmt, soll die Reihenfolge eine Rolle spielen etc)?

Möglich ist das ziemlich sicher, wie das geht, bzw wie aufwändig das ist, hängt aber davon ab, was du ganz genau erreichen willst.

Kommentar von gollerxd ,

Sorry ich meinte eigentlich dass man mit einen suchfeld z.b nach der id 13 und 15 suchen kann ich will also erreichen dass die eingaben durch leerzeichen getrennt werden und somit 2 verschiedene variablen erzeugt werden mit denen ich beide in der query die id filtern kann.

Kommentar von mastema666 ,

Also du gibst z.B. "13 15" ein und dann wird in der DB sowohl nach 13 als auch nach 15 gesucht?

Das ist prinzipiell kein Problem, du kannst die Eingabe ja z.B. nach dem Leerzeichen "exploden" und hast dann die beiden Zahlen in einem Array und kannst das Query entsprechend aufbauen.

http://php.net/explode

Antwort
von kuechentiger, 3

Ungetestet ins Blaue...

$such = $_GET['suche'];

$abfrage = "SELECT * FROM tabelle WHERE (id like '%".$such."%' AND blatt like '%".$such."%' AND cont.nr like '%".$such."%')"; $ergebnis = mysql_query($abfrage); while($row = mysql_fetch_assoc($ergebnis)) { echo $row['id'].' '.$row['blatt'].' '.$row['cont.nr']; }
Kommentar von phpspace ,

Bitte dieses Beispiel nicht eins zu eins übernehmen! Eine GET-Anfrage muss vorher überprüft werden, bevor dies im SQL Statement verwendet wird. Ansonsten läufst du Gefahr, dass schadhafter Code in deiner Datenbank eingefügt wird.

Kommentar von kuechentiger ,

Ja doch. Es ging hier bloß um ein Beispiel für die WHERE-Abfrage an sich.

Kommentar von phpspace ,

Ist o. k. und ich möchte es dennoch hierzu erwähnen, frage nicht, was ich in den letzten 13 Jahren alles gesehen habe. Daher muss ich hier mal den Schlaumeier spielen.

Kommentar von kuechentiger ,

Ist ja richtig - Vorsicht ist die Mutter der Porzellankiste...

Keine passende Antwort gefunden?

Fragen Sie die Community

Weitere Fragen mit Antworten