Such-Tutorial auf dieser Seite hat einen Fehler!

sblaui

Mitglied
Hi, habe mal das Script welches hier im Forum als Tutorial gezeigt wird um etwas in der DB zu suchen, ausprobiert. Ja aber irgendwie zeigt er mir dann nen Fehler an. Liegt das an mir, oder ist das Script falsch!

Hier mein Code:

PHP:
 <?php
$dbserver = "xxx";
$dbuser = "xx";
$dbpass = "xx";
$dbname = "xx";


$conn = mysql_connect($dbserver, $dbuser, $dbpass);
mysql_select_db($dbname);


	 $eingabe_array = explode(' ','Aufbau Beispieltext');
	 $query = "select * from newsdb where "; //anfang der abfrage
    for($i=0; $i<count($eingabe_array); $i++){
        $query .= "artikel like '".$eingabe_array[$i]."' or autor 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,$conn); //anfrage an die datenbank
    $num_news = mysql_num_rows($result) OR die(mysql_error()); //anzahl der zurückgegebenen datensätze
    for($i=0; $i<$num_news; $i++){
        $news_id = mysql_result($result,$i,'artikel'); //abfrage der news_id von der datenbank
        $ueberschrift = mysql_result($result,$i,'artikel'); //abfrage der ueberschift
        $news_text = mysql_result($result,$i,'artikel'); //abfrage der news
        $first = array_slice(explode(' ', $news_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="show_news.php?news_id='.$news_id.'">'.$ueberschrift.'</a><br>'; //links auf die seite show_news.php
        echo $kurze_news.'<br><br>'; //der 40 worte lange anfang des newstextes
    }
?>

Er zeigt mir dann folgenden Fehler an:

PHP:
 Warning: mysql_num_rows(): supplied argument is not a valid MySQL result resource in /home/www/web7/html/suche.php on line 24
Incorrect database name 'select * from newsdb where artikel like 'Aufbau' or autor like 'Aufbau''

Line 24: $num_news = mysql_num_rows($result) OR die(mysql_error());
 
Also die Angaben zur Datenbank stimmen, da sie in meinen anderen Scripten auch gehen. Habe die ja kopiert!

tutorials.de > Intern > Tutorials > Programming-Tutorials

So heißt das: [PHP-MySQL] Suche durch eine Datenbank

Ist auf der 2. Seite

Kann ja keinen Link geben!
 
Wie du sehen kannst habe ich alles richtig bezeichnet. Das verwundert mich ja

PHP:
 $conn = mysql_connect($dbserver, $dbuser, $dbpass);
mysql_select_db($dbname);


	 $eingabe_array = explode(' ','Aufbau');
	 $query = "select * from $db_table where ";
    for($i=0; $i<count($eingabe_array); $i++){
        $query .= "artikel like '".$eingabe_array[$i]."' or autor like '".$eingabe_array[$i]."'";
        if($i<count($eingabe_array)-1){
            $query .= 'and ';
        }
      
    }

	$result = mysql_db_query($query,$conn); //anfrage an die datenbank
    $num_news = mysql_num_rows($result) OR die(mysql_error()); //anzahl der zurückgegebenen datensätze
    for($i=0; $i<$num_news; $i++){
        $news_id = mysql_result($result,$i,'artikel'); //abfrage der news_id von der datenbank
        $ueberschrift = mysql_result($result,$i,'artikel'); //abfrage der ueberschift
        $news_text = mysql_result($result,$i,'artikel'); //abfrage der news
        $first = array_slice(explode(' ', $news_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="show_news.php?news_id='.$news_id.'">'.$ueberschrift.'</a><br>'; //links auf die seite show_news.php
        echo $kurze_news.'<br><br>'; //der 40 worte lange anfang des newstextes
    }
?>

Ich meine der Fehler liegt in der Zeile:

PHP:
 $query = "select * from newsdb where "; //anfang der abfrage
    for($i=0; $i<count($eingabe_array); $i++){
        $query .= "artikel like '".$eingabe_array[$i]."' or autor 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
    }

Das Where bekommt bestimmt falsche Werte Aber weiß nicht was los ist. Oder dann halt in der Zeile:

PHP:
 $num_news = mysql_num_rows($result) OR die(mysql_error()); //anzahl der zurückgegebenen datensätze
    for($i=0; $i<$num_news; $i++){
 
die Reihenfolge ist manchmal wichtig :)

$result = mysql_db_query($conn,$query); //anfrage an die datenbank

Wobei noch richtiger währe sowas:

$result = mysql_query($query); //anfrage an die datenbank

da ja die db schon ausgewählt wurde
 
Zuletzt bearbeitet:

Neue Beiträge

Zurück