Suchfunktion in PHP

jackie05

Erfahrenes Mitglied
Hallo,
könnt ihr mir vieleicht erklären wie ich eine Suchfunktion in PHP machen kann?
Also wenn ich nach einem Wort suche und dann auf Button klicke, dann sollen die Einträge angezeigt werden, die dieses Wort beinhaltet.
Die einträge sind in der MySQL Datenbank gespeichert und ich möchte nach den Namen suchen.

so lese ich ja alle einträge aus:

PHP:
$abfrage = "SELECT * FROM test";
$result = mysql_query($abfrage);
while ($row = mysql_fetch_object($result))
{

  echo "$row->name";
}

es sollen dann nur die einträge angezeigt werden, die dieses Wort beinhaltet von dem Textfeld das ich eingegeben habe.

Ich wäre euch sehr dankbar, wenn ihr mir helfen könnt.

MfG Chris
 
Hey,
versuch mal folgendes:

PHP:
$abfrage = "SELECT * FROM test WHERE (name LIKE '%suchbegriff%')";

den suchbegriff gibst du ja über ein formular weiter also anstatt "suchebegriff" setzt du folgendes ein:
$suchbegriff = $_REQUEST["suchbegriff"];

...(name LIKE '%$suchbegriff%')...
und dann muss das klappen ;)
 
Zuletzt bearbeitet:
Danke Dir.
Irgendwie wird nix angezeigt, also wenn ich auf suchen klicke, dann kommt nix.
Gibt es vieleicht eine andere möglichkeit?

EDIT: Jetzt geht es, hab nur den Dollar zeichen vergessen gehabt.

Vielen Dank für deine hilfe.

EDIT: Noch eine frage und zwar, wenn ich im Editfeld nix eingebe und auf den Button klicke, dann werden alle Einträge angezeigt und das möchte ich verhindern.
Kann ich das vieleicht mit der Else machen oder so?

MfG
 
Zuletzt bearbeitet:
Danke, aber auch wenn ich diese Seite öffne, stehen alle einträge drin.
Ich weiss nicht, wie ich das jetzt machen soll.
 
Hier werden doch die einträge ausgelesen:

$suchbegriff = $_REQUEST["search"];
$abfrage = "SELECT * FROM test WHERE (name LIKE '%$suchbegriff%')";
$result = mysql_query($abfrage);
while ($row = mysql_fetch_object($result))
{

}

wenn ich meine seite öffne, dann werden gleich alle angezeigt, wieso eigentlich?
 
Du prüfst ja gar nicht, ob die Eingabe Verwertbares enthält.
PHP:
if( trim($_REQUEST['search']) === "" ) {
	echo 'Bitte geben Sie einen Suchbegriff ein.';
} else {
	$abfrage = "SELECT * FROM test WHERE (name LIKE '%".mysql_real_escape_string($_REQUEST['search'])."%')";
	$result = mysql_query($abfrage);
	while( $row = mysql_fetch_object($result) ) {
		// …
	}
}
Zusätzlich sollten vielleicht noch die Zeichen „%“ und „_“ maskiert werden, da diese Platzhalter bei einem LIKE-Vergleich sind.
 
Danke Dir.
Ich habe das jetzt anderst gemacht, also noch eine Datei angelegt search.php und hab noch alles überarbeitet, jetzt geht das ohne probleme.

Vielen Dank.

MfG
 
Zurück