11x bewertet

Suchfunktion

von Nekoji  |  28.04.2008 um 13:53 h
PHP Anwendungen
Typ: PHP Anwendungen
Stufe:Mittel
In diesem Tutorial zeige ich euch, wie ihr mittels PHP eine Suchfunktion, wie hier auf Giatu erstellen könnt. Ihr könnt damit eine beliebige Datenbank nach einem Suchbegriff durchsuchen.

Was Du brauchst:
Vorraussetzung für diese Suchfunktion ist, dass ihr eine Datenbank mit einer Tabelle habt, die ihr durchsuchen lassen wollt.


Als erstes brauchen wir ein kleines Suchformular, dass ihr in eine beliebige Seite einbauen könnt. In diesem Beispiel nehmen wir einfach mal die index.php:

<form action="index.php?action=suchen" method=post name="suche">
<input class="input" type="text" name="suche" value="" id="suche"/>
<input type=submit value="Suchen" class="suchesubmit"/>
</form>


Mit action="index.php?action=suchen" wird auf der index.php die Aktion "suchen" aufgerufen, die wir nun erstellen.

Die Suchfunktion sollte vor dem Formular stehen. Am Besten schreibt ihr sie an den Anfang der Datei:


<?php
    $sqlhost 
"";
    
$sqluser "";
    
$sqlpassword "";
    
$sqldb "";
    
    
mysql_connect($sqlhost,$sqluser,$sqlpassword) or die ("Keine
Verbindung möglich"
); mysql_select_db($sqldb) or die ("Die Datenbank
existiert nicht"
);

    if(
$_REQUEST["action"] == "suchen" && !empty($_REQUEST["suche"])) 
    {
        
$abfrage "SELECT * FROM tutorials WHERE titel LIKE
'%"
.addslashes(strip_tags($_REQUEST["suche"]))."%' OR text LIKE
'%"
.addslashes(strip_tags($_REQUEST["suche"]))."%'";
    }    
    
$ergebnis mysql_query($abfrage);
?>



Als erstes wird die Verbindung zu eurer Datenbank aufgebaut. Dort müsst ihr dann noch die entsprechenden Verbindungsdaten angeben.

Wenn also das Formular abgeschickt wurde (action gegeben ist und suchen aufgerufen wurde) und das Feld, in dem der Suchbegriff eingegeben wird nicht leer ist, wird die Suchabfrage gestartet.

In unserem Beispiel fragen wir die Tabelle "tutorials" ab. Es werden alle Einträge aus der Tabelle gesucht, die im "titel" oder im "text" ein ähnliches Wort wie den Suchbegriff enthalten. Das addslashes(strip_tags($_REQUEST["suche"]) ist unser Suchbegriff (Wichtig: Das addslashes() schützt euch vor einer MySQL Injection!). Das % vor und nach dem Suchbegriff sorgt dafür, dass uns nachher auch Ergebnisse geliefert werden, wo noch etwas davor oder dahinter steht.

Ich hoffe das war soweit verständlich. Falls ihr noch Fragen dazu habt, stellt sie ruhig. ;)



12 Kommentare




Pinoy

wooow geiil !!! hab mal eine frage kann man damit mehrere tabellen absuchen lassen ?? also nicht nur eine ??
am 28.04.2008 um 13:56 Uhr


wow das ging ja schnell gleiche zeit den wunsch gestellt & gleiche zeit den wusch erfüllt muhahaha xD super tut ^.^
am 28.04.2008 um 13:56 Uhr


Nekoji

Danke, ihr beiden!

@Pinoy: Ja, füge ich dann noch im Tutorial hinzu. :)

@Sushi: Lol, habs auch eben gesehen. xD
am 28.04.2008 um 13:58 Uhr


Nekoji

Am besten schreib ich noch ein neues Tutorial über die Abfrage zweier/mehrerer Tabellen. Sehe gerade, dass das auch noch gewünscht wurde.
am 28.04.2008 um 14:07 Uhr


Jaaaaaa Smilie Vielen Dank, dass du meinen Wunsch bearbeitet hast, Nekoji *verbeug* Smilie
am 28.04.2008 um 17:50 Uhr


Xelios

Tolles Tutorial Nekoji! Find's gut, das du gleich mit erwähnst, wie man seine Abfragen sicher machen kann.
Fein fein! Smilie
am 28.04.2008 um 22:42 Uhr


Sasuke

SUPPPPPPPAAA und wen du noch ein suchtutorial für den Scripts Mitglieder von Delite das wer HAMMER
am 29.04.2008 um 07:17 Uhr


Pinoy

@Sasuke: das ist doch das gleiche O.o oda ??
am 29.04.2008 um 13:48 Uhr


Nekoji

Danke fürs Lob! ^^

@Sasuke:
Du durchsuchst in dem Falle einfach die Tabelle "members" nach "name" und/oder "id". Musst mein Beispiel nur anpassen, mehr ist das nicht. ;)
am 29.04.2008 um 14:06 Uhr


stefan

Tolles TuT wirklich ist auch gut erklärt aber anscheinend bin ich zu blöd dafür es hinzu bekommen. Smilie
Mein Problem ist das die angefragten Ergebnisse nicht ausgegeben werden und auch bei der url verändert sich nix.
am 26.04.2010 um 23:24 Uhr


CrazyMoFu

Jo is bei mir auch so :/
am 27.04.2010 um 14:02 Uhr


disturbedmonkey

6 Smilie - find ich supi.

Jedoch ist die einzig richtige Methode sql injections abzufangen

mysql_real_escape_string

am 10.07.2010 um 01:55 Uhr