Sucheschleife will nicht ganz klappen

Shinzo

Mitglied
Hallo,
hab mir aus dem Tutorial eine Suche gebaut. Leider funktioniert dies nicht so, wie es sollte. Ich habe beispielsweise 2 Newseinträge. In einem ist das Wort test irgendwo drin, in dem anderen Eintrag ist geplant drin. Wenn ich per Formular suche. Sieht der Link dann ja so aus: blabla/search.php?q=test+geplant

Normalerweise sollte er mir 2 verschiedene Einträge zeigen. Funktioniert aber nicht. Bei einem Suchwort klappt dies ansonsten.
Wäre toll wenn ich einen Tipp kriegen könnte, danke!

PHP:
<?php 
$eingabe_array = explode(' ',$_GET['q']);

    $query = 'SELECT * FROM news WHERE ';
    for($i=0; $i<count($eingabe_array); $i++){
    $query .= "(nachricht like '%".$eingabe_array[$i]."%' or topic like '%".$eingabe_array[$i]."%' or keywords like '%".$eingabe_array[$i]."%')"; 

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

    }

    $result = mysql_query($query);
    $num_news = mysql_num_rows($result);
    for($i=0; $i<$num_news; $i++)
	{
        $news_id = mysql_result($result,$i,'id');
        $ueberschrift = mysql_result($result,$i,'topic');
        $news_text = mysql_result($result,$i,'nachricht');
        $first = array_slice(explode(' ', $news_text), 0, 40); 
        $kurze_news = join(' ', $first) . '...&nbsp;';

        echo '<a href="show_news.php?news_id='.$news_id.'">'.$ueberschrift.'</a><br>';
        echo $kurze_news.'<br><br>';
    }
?>
 
Ich tippe, dass Du den Suchstring falsch zerlegst...
Lass dir den Suchstring mal ausgeben und Zerleg dann nach dem wirklich Verwendeten delimiter.

also wenn der Suchstring lautet: q="test+geplant"
Dann muss der explode so aussehen:

PHP:
 $eingabe_array = explode('+',$_GET['q']);

MfG
Hans
 
Hab den Fehler selber gefunden. So müsste der Code richtig aussehen:

PHP:
    $query = 'SELECT * FROM news WHERE ';
    for($i=0; $i<count($eingabe_array); $i++){
    $query .= "(nachricht LIKE '%".$eingabe_array[$i]."%') OR (topic LIKE '%".$eingabe_array[$i]."%') OR (keywords LIKE '%".$eingabe_array[$i]."%')"; 

            if($i<count($eingabe_array)-1)
	{
            $query .= ' AND ';
        }
    }
 
Zurück