Suchfuktion!

Dönerman

Gesperrt
Problme bei der Suchfunktion!

Ich möchte eine Suchfunktion machen in einer Bildergallerie!

Jedem Bild ist min. ein Stichwort hinzugefügt, nachdem ich suchen will!

Nach dem Stichwörtern kann ich suchen, aber wenn ich bei einen Bild mehrere Stichwörter habe, und nach den Stichwörtern suchen, dann kommt das Bild mehrmals vor!

Wie kann ich das unterbinden, dass das Bild nur einmal vorkommt?

Das ist das Script:

$eintraegen sind die Stichwörter, nachdem ich suche! Sie sind in einen Array drinnen, die durch einen | getrennt sind.

PHP:
   $eintraege=explode("|",$zusammenfassung); 
   for ($x=0;$x<count($eintraege);$x++)
   {	if($eintraege[$x] !=""){
   
   	$abfrag = "SELECT * FROM catchword where name = '$eintraege[$x]' AND file_id !='1'";
   	 $ergebni = mysql_query($abfrag);
   	  while($row = mysql_fetch_object($ergebni))
   	{	
   		$abfrage = "SELECT * FROM file where id = $row->file_id";
   		 $ergebnis = mysql_query($abfrage);
   		  while($row = mysql_fetch_object($ergebnis))
   		{
 		echo"<a href='picture/$row->name'><img src=\"thumbs/$row->name\" border='1'> <br></a>"; 	
   		}
   	  }
   }
   }
 
Zuletzt bearbeitet:
Ich dachte eigentlich, wir hätten dir schon geholfen. Und wieder ist es nur ein SQL Problem!

Der Aufbau deines Scriptes ist sehr inperformant.

Ich würde den SQL so lösen:


PHP:
 $eintraege=explode("|",$zusammenfassung);
for ($x=0;$x<count($eintraege);$x++)
{    if($eintraege[$x] !=""){
            $AND .= " AND name like '%".$eintraege[$x]."%' ";
     }
}
$sql = "SELECT * FROM catchword
LEFT JOIN file ON catchword.file_id=file.id
WHERE catchword.file_id<>1 ".$AND;

Dann führst du das Query aus und bekommst alle Files dazu, wenn du jetzt noch FIles doppelt bekommst verwende im SQL die Funktion GROUP BY !
 
Jetzt habe ich:

PHP:
 $eintraege=explode("|",$zusammenfassung); 
 for ($x=0;$x<count($eintraege);$x++)
 {	if($eintraege[$x] !=""){
 	$AND .= " AND name like '%".$eintraege[$x]."%' ";
 	$sql = mysql_query("SELECT * FROM catchword LEFT JOIN file ON catchword.file_id=file.id WHERE catchword.file_id<>1 ".$AND);
 	  while($row = mysql_fetch_object($sql))
 	{	
 		echo $row->name;
 	  }
 }
 }

Und das bekomme ich:

Warning: mysql_fetch_object(): supplied argument is not a valid MySQL result resource in C:\apachefriends\xampp\htdocs\banp\admin1\search_1_admin1.php on line 8

line 8:
PHP:
 while($row = mysql_fetch_object($sql))


Ich denke es bezieht dich auf das sql!
 
PHP:
 $eintraege=explode("|",$zusammenfassung);
for ($x=0;$x<count($eintraege);$x++)
{    if($eintraege[$x] !=""){
    $AND .= " AND catchword.name like '%".$eintraege[$x]."%' ";
    $sql = mysql_query("SELECT * FROM catchword LEFT JOIN file ON catchword.file_id=file.id WHERE catchword.file_id<>1 ".$AND);
      while($row = mysql_fetch_object($sql))
    {    
        echo $row->name;
      }
}
}

so sollte es gehen.

Habe vergessen bei name die Tabelle davor zu schreiben.

Es muss also heißen: catchword.name
 
Zurück