Bin ich blöd? Warum funktioniert meine Funktion nicht?

Kalma

Erfahrenes Mitglied
Hey,

habe wieder mal ein problem mit meiner funktion, die einträge außer db ausliest.

ich habe 2 funktionen:
db_query();
display_news();

in db_query wird ausgelesen. und zwar so, wie meine blätterfunktion es verlangt. dann rufe ich diese funktion mit den wichtigen parametern auf. herauskommt jedoch:

PHP:
Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in /home/www/web245/html/news.php on line 19

ich weiß zwar, was die Meldung bedeutet, und ich glaube auch, ich weiß wo mein fehler ist. Ich habe in der funktion db_query(); eine $result die den query ausführt. Ich weiß jedoch nicht, wie ich diese aus der Funktion herausgeben kann :rolleyes:


Hier einmal die beiden funktionen:
db_connect:
PHP:
<?php
	function db_query($table_name, $items)
	{
		@ $result	= mysql_query("select * from $table_name order by id desc");
		
		//tell error
		if (!$result) {
			echo 'Es konnten keine Einträge gefunden oder ausgelesen werden!';
		}
		
		//define important variables for the "turn-page" function
		@ $itemCount 		= mysql_num_rows($result);
			$itemsPerPage	= $items;
		@ $pageCount 		= ceil($itemCount/$itemsPerPage);
		
		if (!isset($_GET['page'])) {
			@ $read_entrys			= "select * from $table_name order by id desc LIMIT 0, ".$itemsPerPage.";";
		} else {
			@ $abeintrag 				= $_GET['page'] * $itemsPerPage - $itemsPerPage;
			@ $read_entrys 			= "select * from $table_name order by id desc LIMIT ".$abeintrag.", ".$itemsPerPage.";";
		}
		$result 			= mysql_query($read_entrys);
	}
?>


display_news
PHP:
<?php
	function display_news()
	{
		//display function db_query to read entrys from db
		$table_name	= "news";
		$items			= 5;
		db_query($table_name, $items);
			
		//create page_title with div-tag <h1>
		echo '<h1>News</h1>';
		
		//display the funktion to turn the page
		//display_blaettern($itemCount, $itemsPerPage, $pageCount);
		
		//create content background with div-tag <p>
		echo '<div class="story">';	
		
		//set $i for background-color of row
		while ($news = mysql_fetch_array($result))
		{
			//define variables for the news
			$news_id				= $news['id'];
			$news_author_id	= $news['author_id'];
			$news_title			= $news['title'];
			$news_text			= $news['news'];
			$news_date			= $news['date'];
			
			//form the date into 2 strings: day, time
			$news_day				= date("d.m.Y", $news_date);
			$news_time			= date("H:i", $news_date);
				
			//select the author of this news
			@ $author_result	= mysql_query("select * from user where `id`='$news_author_id'");
			
			//tell error for reading author
			if (!$author_result) {
				echo '';
			}
			
			//fetch author with fetch_array and define author variable
			@ $author						= mysql_fetch_array($author_result);
			$author_nickname	= $author['nickname'];

			//now public the news
			echo '<div class="news_title">'.$news_day.' - '.$news_title.'</div>
							<br>
							
						'.nl2br($news_text).'
							<br><br>
						<div align="right"><a href="#top">top</a></div>';
		
			echo '<hr>';
		}
		
		echo '</div>'; //close content tag
	}
?>


Hoffe ihr könnt mir helfen
David
 
Hi,

wenn Du den Rückgabewert meinst:
PHP:
return $result;
Am Ende der Funktion db_query und
PHP:
$result = db_query($table_name, $items);
Beim Aufruf der Funktion. Näheres erfährst Du aus der PHP-Referenz.

Gruß
.
 
Nimm erst mal die vielen Fehlermeldungsunterdrückungsoperatoren raus, dann bekommst du auch mögliche Fehlermeldungen ausgegeben.
 
:offtopic:
Tobi, was machst Du denn hier im PHP-Forum? Ich hoff Du hast die Schuhe abgeputzt! :D

Zum Thema: Manchmal ist es wirklich sinnvoll sich mit entsprechenden Themen der PHP-Doku zu befassen bevor man loslegt. :rolleyes:
 
Hey,

@Gumbo, Das hab ich schon probiert, aber er sagt nix

@Tobi, danke :D jetzt funktioniert es :D


P.s.: weiß einer von euch, warum das Wort f-u-n-z-t nicht geht?

Kalma
 
Doch noch ein Problem.

So, ich will nun alle Einträge zählen, weiß jedoch nicht, wie ich das anstellen soll:

PHP:
		$table_name	= "news";
		$result = db_query($table_name);  
		
		//display the funktion to turn the page
		$itemCount 		= mysql_num_rows($result); //errechnet alle einträge

is ja eigentlich logisch das das nicht geht, aber wie geht es dann?

D:nospam:
 
Zurück