Ich stehe mal wieder vor einem Problem, diesmal vor einem ohne Fehlermeldung. Und zwar versuche ich mittels PHP eine Tabelle in einer MySQL-Datenbank zu durchsuchen. Dabei sollen die Spalten Titel und Beschreibung durchsucht werden. Soweit komme ich zurecht. Damit, falls mehrere Suchbegriffe eingegeben werden, nach jedem Suchbegriff einzeln gesucht wird lasse ich den übermittelten String in ein Array übertragen und jetzt wird es schwierig: Mit einer foreach() Funktion möchte ich zu jedem einzelnen Wert im Array die jeweiligen Spalten durchsuchen lassen. Wenn ich nun aber zwei Suchbegriffe eingebe und einer von diesen in der Spalte 'Titel' und der andere in der Spalte 'Beschreibung' gefunden wird, wird das Ergebnis doppelt ausgegeben. Wenn der erste Suchbegriff gar nicht gefunden werden kann, der zweite aber, wird erst "Keine Einträge gefunden" ausgegeben und im Anschluss der gefundene Datensatz. Wie kann ich das verhindern, dass ein Datensatz doppelt ausgegeben wird oder, wenn mindestens ein Suchbegriff richtig war, trotzdem noch die Error-msg ausgegeben wird?
Hier mal der Code:
<?php
}
else {
$keyword = empty($_GET['keyword']) ? die ("ERROR: Kein Suchbegriff eingegeben! [url='index.php']Zurück[/url]") : mysql_escape_string($_GET['keyword']);
$arrkey = explode(' ', $keyword);
//Variablen bestimmen
$host = "localhost";
$user = "stl";
$pass = "******";
$db = "stl";
// open connection
$connection = mysql_connect($host, $user, $pass) or die ("Verbindung zur Datenbank kann nicht hergestellt werden!");
// select database
mysql_select_db($db) or die ("Datenbank kann nicht ausgewählt werden!");
foreach($arrkey as $key) {
$select= "SELECT DISTINCT Titel, Beschreibung FROM eintragen WHERE Titel LIKE '%$key%' OR Beschreibung LIKE '%$key%'";
$query= mysql_query($select);
if (mysql_num_rows($query) > 0) {
while($row=mysql_fetch_array($query))
{
echo $row[Titel];
echo $row[Beschreibung];
}
}
else {
echo "Keine Einträge gefunden!";
}
}
// free result set memory
mysql_free_result($query);
// close connection
mysql_close($connection);
}
?>
Alles anzeigen