Datenbanksuche

asupp

Grünschnabel
Hallo Leute,
habe ein kleines Problem mit meinem Script der die DB durchsuchen soll.
Wenn ich nur ein Suchbegriff eingebe funktoniert es. Gebe ich aber 2 an
kommt folgender Fehler.
Warning: mysql_num_rows(): supplied argument is not a valid MySQL result resource

Hier ist mein Code
PHP:
			  	$suchbegriff = $_POST['suchbegriff'];
				$eingabe_array = explode(' ',$suchbegriff); 

				$query = 'select * from daten where '; //anfang der abfrage 
				for($x=0; $x<count($eingabe_array); $x++){ 
					$query .= "(suchwoerter like '%".$eingabe_array[$x]."%' or datum like '%".$eingabe_array[$x]."%')"; 
						//ob der $i-te begriff in einer der drei spalten enthalten ist (mit oder verknüpft) 
					if($i<count($eingabe_array)-1){ 
						$query .= ' and '; 
					} 
					//verknüpfung der einzelnen worte mit und 
				} 
				$result = mysql_db_query('dateimanagement',$query); //anfrage an die datenbank 
					$num_search = mysql_num_rows($result); //anzahl der zurückgegebenen datensätze 
				if ($num_search > 0)
				{	
					for($i=0; $i<$num_search; $i++){ 
						$datname = mysql_result($result,$i,'datname'); //abfrage der news_id von der datenbank 
						echo $datname."<br>";
						#echo '<a href="show_news.php?news_id='.$news_id.'">'.$ueberschrift.'</a><br>'; //links auf die seite show_news.php 
					} 
				}
				else
				{
				echo "Es wurden keine Eintr&auml;ge gefunden.";
				}

Ich hoffe Ihr könnt mir helfen.
 
Ich nehme an in dieser Abfrage
PHP:
if($i<count($eingabe_array)-1){ 
  $query .= ' and '; 
}
sollte die Variable $i durch $x ersetzt werden.
PHP:
if($x<count($eingabe_array)-1){ 
  $query .= ' and '; 
}

Lass dir einfach mal die generierte Query ausgeben, dann siehst du ja was falsch ist.
 
Hallo Deluxe,

danke für die schnelle Antwort.
Jetzt tritt der Fehler nicht mehr auf, aber
die Suche sagt jetzt mir das er keine Daten finden kann.
Wenn ich wieder einen einzelnen Suchbegriff eingebe findet man die Daten.
 
Die Frage ist willst du bei der Suche wirklich mit AND verknüpfen oder willst du nach allen Einträge suchen bei denen entweder Suchbegriff 1 oder / OR Suchbegriff 2 gefunden wird

//ob der $i-te begriff in einer der drei spalten enthalten ist (mit oder verknüpft)

Du schreibst hier 'oder' benützt aber in der Abfrage 'and'.

Gruß Thomas
 
Er soll entweder nach einem oder mehreren Suchbegriffe in der spalte suchwoerter oder nach Datum in der spalte datum suchen.
Das sollte er dann auch ausgeben.
z.B.
Suchbegriff: Haus Canon
in der Spalte suchwoerter gibt verschieden Einträge mit Haus,
und ein anderen mit Canon.
Jetzt sollte er mir alle drei Einträge anzeigen.
 
Zurück