PHP: Eine Suche realisieren

Muss man sich in deiner PHP-Applikation durch riesige Listen kämpfen, um den richtigen Eintrag zu finden? Dann wird es höchste Zeit für eine Suche!

Ich setze in diesem Tutorial vorraus, das ihr ein wenig MySQL beherrscht, sowie PHP und ihr HTML im schlaf könnt.

Nehmen wir mal an, wir hätten in der Datenbank eine Tabelle mit Adressen. Wenn wir alle Adressen raussuchen wollen, sieht ja das dann irgendwie so aus (angenommen wir hätten verschiedene Seiten):

SELECT * FROM adresse
LIMIT 0,20

So kriegen wir die ersten zwanzig Einträge der Datenbank (unsortiert). Dieses Resultat wir dan z.B. in eine Liste “umgewandelt”. Wie das geht, werde ich euch hier nicht erklären :P

Nun erstellt doch bitte euer Suchfeld in HTML (Ich setze vorraus, das ihr das könnt).  Fertig? Gut, machen wir weiter :P

Ich habe meinem Suchfeld den Namen “suche” gegeben, mit dem man nach einem Namen in der Datenbank suchen kann. Um eine Sucher zu realisieren, brauchen wir eigentlich nichts anderes zu tun, als die SQL-Abfrage zu verändern:

SELECT * FROM adresse
WHERE name LIKE '%ma%'
LIMIT 0,20

Mit diesem “WHERE” habe ich eigentlich schon meine Suche erstell. Zur Erklärung: Das Prozentzeichen heisst soviel wie “Irgendetwas”. Es nimmt also alle Eiträge die zuerst “irgendwas” (oder nichts) haben, dannach “ma” und dann wieder “irgendwas” (oder eben nichts). Findet z.B. Matthias; Max; Asamat;Oma;…

Das ganze mit PHP sieht dann irgendwie so aus:

if(isset($_POST["suche"]) && $_POST["suche"] != null){
    $sql = "SELECT * FROM adresse
              WHERE name LIKE '%".$_POST["suche"]."%'
              LIMIT ".$_GET["seite"]*20.",20";
}else{
    $sql = "SELECT * FROM adresse
              LIMIT ".$_GET["seite"]*20.",20";
}
 
//Hier verarbeitet ihr eure Daten...

Das Script macht folgendes: Mit der if-Abfrage wird “geschaut”, ob eine Suche ausgeführt wurde. Falls ja, wird das SQL mit der Suche (wie oben beschrieben) “zusammengebastelt”, falls nein, das ganz normale SQL verwendet. Das mit dem “$_GET["seite"]” ist für die verschiedenen Seiten, und hat mit diesem Tutorial nichts zu tun.

Ich hoffe, ich konnte euch eine Idee vermitteln, wie man eine Suche realisiert, und das es euch geholfen hat.

Danke fürs lesen, Fragen wie immer in die Kommentare ;)

  1. Very nice article, thanks! I’ve subscribed to your RSS feed. Please keep up posting.

  1. Noch keine TrackBacks.