PHP & MySQL Volltextsuche

sugar

Erfahrenes Mitglied
Ich habe folgendes Problem, ich würde gern meine News Datenbank durchsuchen, ich habe eine Tabelle "news" und dort die Spalten "ID", "text" und "header". Die $eingabe wird von einem Formular übergeben. Leider scheint irgendetwas nicht zu funktionieren, denn obwoh ich einen Suchbegriff eingegeben habe, erscheint immer die Fehlermeldung "Bitte geben Sie ein Suchwort ein"? :confused:

Kann mir jemand vielleicht helfen? Hier der Code:

PHP:
<?
if($eingabe=="") 
{ 
    echo "<b>Bitte geben Sie ein Suchwort ein.</b>"; 
} 
else 
{ 

 $eingabe_array = explode(' ',$eingabe); 


    $query = 'select * from news where '; //anfang der abfrage 
    for($i=0; $i<count($eingabe_array); $i++){ 
        $query .= "(text like '%".$eingabe_array[$i]."%' or header like '%".$eingabe_array[$i]."%' )"; 
            //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($query); //anfrage an die datenbank 
    if(mysql_num_fields($result) < 1) 
    { 
        echo "Leider keine Treffer. Bitte geben Sie einen anderen Suchbegriff ein"; 
    } 
    else 

    for($i=0; $i<$num_news; $i++){ 
        $id = mysql_result($result,$i,'id'); //abfrage der news_id von der datenbank 
        $header = mysql_result($result,$i,'header'); //abfrage der ueberschift 
        $text = mysql_result($result,$i,'text'); //abfrage der news 
        $first = array_slice(explode(' ', $text), 0, 40); //explode teilt den string wieder an der ' ' und array_slice erstellt einen neuen array mit den ersten 40 elementen = worten der news 
        $kurze_news = join(' ', $first) . '...&nbsp;'; //join verbindet die elemente des arrays wieder zu einem string. am ende werden noch drei punkte angehängt... 
        echo '<a href="news_show.php?id='.$id.'">'.$header.'</a><br>'; //links auf die seite show_news.php 
        echo $kurze_news.'<br><br>'; //der 40 worte lange anfang des newstextes 
    } 
}
?>
 
Original geschrieben von sugar
Die $eingabe wird von einem Formular übergeben. Leider scheint irgendetwas nicht zu funktionieren, denn obwoh ich einen Suchbegriff eingegeben habe, erscheint immer die Fehlermeldung "Bitte geben Sie ein Suchwort ein"? :confused:
Vielleicht liegt es daran, dass bei Dir register_globals deaktiviert sind. Versuchs deswegen mal mit:

PHP:
$_POST['eingabe']
 
Ich habe ein Formular das also folgendermaßen aussieht:

<form action='news_suche3.php' method=POST>
None of these words: <input type='text' length=40 name='none' value="<? echo $_POST['eingabe']?>"><br>
<input type='submit' value='Search'>
</form>

geht aber trotzdem nicht. :(
 
:-) Chino meinte eigentlich das du in dne PHP Zeilen den $_POST['eingabe'] nehmen sollst.

Also
anstatt

PHP:
if($eingabe=="")

so

PHP:
if($_POST['eingabe']=="")

Gruß Mirko :-)
 
Oh na klar bin ich doof! Bin eben ein Anfänger tut mir leid! Geht aber trotzdem nicht! :rolleyes:
 
Oh ja du hast Recht! Jetzt kommt immerhin die zweite Fehlermeldung: Leider keine Treffer. Bitte geben Sie einen anderen Suchbegriff ein!
 
Zurück