# PHP & MySQL Volltextsuche



## sugar (8. Juli 2004)

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"? 

Kann mir jemand vielleicht helfen? Hier der Code:


```
<?
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 
    } 
}
?>
```


----------



## Chino (8. Juli 2004)

> _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"? *


 Vielleicht liegt es daran, dass bei Dir register_globals deaktiviert sind. Versuchs deswegen mal mit:


```
$_POST['eingabe']
```


----------



## sugar (8. Juli 2004)

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.


----------



## Mirko D (8. Juli 2004)

Chino meinte eigentlich das du in dne PHP Zeilen den $_POST['eingabe'] nehmen sollst. 

Also 
anstatt 


```
if($eingabe=="")
```

so 


```
if($_POST['eingabe']=="")
```

Gruß Mirko


----------



## sugar (8. Juli 2004)

Oh na klar bin ich doof! Bin eben ein Anfänger tut mir leid! Geht aber trotzdem nicht!


----------



## Sven Petruschke (8. Juli 2004)

> <input type='text' length=40 name='none'  ...


 Dein Eingabefeld heisst ja auch "none" und nicht "eingabe".

snuu


----------



## sugar (8. Juli 2004)

Oh ja du hast Recht! Jetzt kommt immerhin die zweite Fehlermeldung: Leider keine Treffer. Bitte geben Sie einen anderen Suchbegriff ein!


----------



## m0rb (8. Juli 2004)

Lass die mal $query ausgeben und schau, ob da das drinsteht, was du willst...


----------

