MYSQL suche query klappt nicht!?

silent321

Grünschnabel
Hey, bin noch ein Neuling in PHP, habe folgendes Script und weis nicht wie ich die Ausgabe der Daten schreibe die aus meiner Abfrage hervorgehen.

PHP:
//---> verbindung zu mysql datenbank ect....
  
//-----------------------------------------------
//such eingabe (3 wörter)
$eingabe = 'haus baum insel';

//-----------------------------------------------
//trennt bei leerzeichen und erstellt array
$eingabe_array = explode(' ',$eingabe);


//-----------------------------------------------


	   
    for($i=0; $i<count($eingabe_array); $i++)

		{ 
 		                                 
        $query = "(SELECT ueberschrift, text, author from tabelle where text like '%".$eingabe_array[$i]."%' or ueberschrift like '%".$eingabe_array[$i]."%' or author like '%".$eingabe_array[$i]."%')";  

        if($i<count($eingabe_array)-1)
		{ 
        $query .= ' and '; 
        } 
		

// hier kommt jetzt die nach meiner meinung richtige abfrage zustande:
//(select ueberschrift, text, author from news where text like '%haus%' or ueberschrift like '%haus%' or author like '%haus%') and 
//(select ueberschrift, text, author from news where text like '%baum%' or ueberschrift      like %baum%' or author like '%baum%') and 
//(select ueberschrift, text, author from news where text like '%insel%' or ueberschrift like '%insel%' or author like '%insel%')
        
    }
	
	

	
 $result = mysql_query($query) or die(mysql_error());
    $num_news = mysql_num_rows($result); 
	echo mysql_result($num_news, $i);

//ich weis die ausgabe der daten ist völlig falsch aber ich bekomm das nicht hin... würde mich sehr über hilfe freuen

liebe grüße
 
Bevor Du jetzt irgendwelche Sachen probierst
lese im PHP Handbuch mehr darüber nach.
Dort gibt es auch genügend Beispiele
wie das funktioniert. Hat auch den Vorteil
das man gleichzeitig noch etwas dazu lernt
und sich nicht alles vorkauen lässt, wo wohl möglich
auch noch Fehler mit eingebaut sind.
 
Die Abfrage, die du generierst, ist syntaktisch falsch. Probier mal Folgendes:
PHP:
$eingabe = 'haus baum insel'; 
$eingabe_array = explode(' ',$eingabe);
$query = 'SELECT `ueberschrift`, `text`, `author` FROM `tabelle` ';
if( !empty($eingabe_array) ) {
	foreach( $eingabe_array as $key => $value ) {
		$eingabe_array[$key] = '(`text` LIKE "%'.mysql_real_escape_string($eingabe_array[$key]).'%" OR `ueberschrift` LIKE "%'.mysql_real_escape_string($eingabe_array[$key]).'%" OR `author` LIKE "%'.mysql_real_escape_string($eingabe_array[$i]).'%")';
	}
	$query .= ' WHERE '.implode(' AND ', $eingabe_array);
}
$result = mysql_query($query) or die(mysql_error());
$num_news = mysql_num_rows($result);
echo mysql_result($num_news, $i);
 
habe es jetzt folgendermaßen gelößt, es funktioniert jedoch ist es ja immernoch nach deiner meinung Gumbo syntaktisch falsch... aber wenn es funktioniert kann ich es doch so lassen?

PHP:
$query = 'select * from news where '; //anfang der abfrage 
    for($i=0; $i<count($eingabe_array); $i++){ 
        $query .= "text like '%".$eingabe_array[$i]."%' or ueberschrift like '%".$eingabe_array[$i]."%' or author like '%".$eingabe_array[$i]."%'";  
        if($i<count($eingabe_array)-1)
		{ 
        $query .= ' and '; 
        }     
    }
	

//-----------------------------------------------
	
   $result = mysql_db_query('db_test',$query); //anfrage an die datenbank 
    $num_news = mysql_num_rows($result); //anzahl der zurückgegebenen datensätze 
    for($i=0; $i<$num_news; $i++){ 
        $news_id = mysql_result($result,$i,'id'); //abfrage der news_id von der datenbank 
        $ueberschrift = mysql_result($result,$i,'ueberschrift'); //abfrage der ueberschift 
        $news_text = mysql_result($result,$i,'text'); //abfrage der news 
        $first = array_slice(explode(' ', $news_text), 0, 40); //explode teilt den string wieder 
    }
 
Zurück