kostenloser Webspace werbefrei: lima-city


News-System

lima-cityForumProgrammiersprachenPHP, MySQL & .htaccess

  1. Autor dieses Themas

    cam

    cam hat kostenlosen Webspace.

    Hallo!

    Ich sitze seit einigen Tagen an einem News-System und habe hier auch schon die Tutorials durchgearbeitet. Das erste, das ich mir angesehen habe, hat mir die Angregung zu einer Eigenkonstruktion gezeigt. Allerdings hat diese noch einen Haken: Es werden stets alle News angezeigt. Was bei so etwas ja relativ schlecht ist, denn etwas, was vor 10 Wochen etc. geschrieben wurde, ist ja heute nicht mehr wirklich neu. Au?erdem sind 100 News, die angezeigt werden, irendwie auch zu viele.

    Ich hab das ganze so gel?st, dass die News per Lauftext von unten nach oben durchlaufen und per Klick auf "mehr" die eigentliche News angezeigt wird.

    Nun m?chte ich jedoch, dass vielleicht nur 10 bis 20 News durchlaufen und dazu noch eingestellt wird, dass News, die seit so und so vielen Tagen bestehen, nicht mehr in diesem Lauftext angezeigt werden, sondern nur noch per Link "gesamte News" aufgelistet werden. Jedoch habe ich noch nicht so viel mit PHP gemacht, um zu wissen, wie ich das programmiere, dass diese Einschr?nkung auch funktioniert.

    Wie gesagt, ich habe auch die anderen Tutorials zu News-Systemen durchgelesen. Bei dem einen dachte ich, ich h?tte etwas gefunden und wollte das alles mal in einem zweiten News-System ausprobieren. Doch am Schluss zeigt mein Browser immer nur einen Parse error in einer Zeile an, in der ein $ nicht akzeptiert wird. Komischer Weise ist in dieser Zeile nicht mal ein $, sondern nur </html> ... Also suchte ich alle Zeilen noch einmal durch, ob ich vielleicht irgendwo anders einen Fehler gemacht habe, konnte ihn jedoch nicht finden und somit funktioniert es bei mir immer noch nicht und ich kann nicht sagen, ob es das ist, was ich gesucht habe.

    Ich hoffe darum nun hier auf Hilfe. W?re wirklich wichtig!

    Bye bye
  2. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

    lima-city: Gratis werbefreier Webspace für deine eigene Homepage

  3. m**o

    Schreib mal den Code des Scriptes oder die URL der Seite hier rein, warscheinlich kann dir dann jemand weiterhelfen.
  4. Autor dieses Themas

    cam

    cam hat kostenlosen Webspace.

    Welchen Code denn nun genau? Den von meinem News-System, was ich bisher habe? ALLES (sind schlie?lich mehrere Seiten)? Oder von dem News-System aus dem Tutorial?

  5. c*********c



    cam schrieb:
    Welchen Code denn nun genau? Den von meinem News-System, was ich bisher habe? ALLES (sind schlie?lich mehrere Seiten)? Oder von dem News-System aus dem Tutorial?



    Der, bei dem der Fehler auftritt. :biggrin:

    Des Weiteren w?re es interessant zu erfahren, ob Dein News-System auf MySQL basiert.
  6. Du machst einfach in der Datenbankabfrage am Ende ein Limit 10 rein:
    $sqlquery="SELECT * FROM news ORDER by date DESC LIMIT 10";

    so werden nur die letzten 10 Eintr?ge ausgelesen.

    MfG apollo13
  7. Autor dieses Themas

    cam

    cam hat kostenlosen Webspace.

    Okay, hier erst einmal der Code, in dem sich in Zeile 139 ein unakzeptiertes $ befindet soll:

    <?php
    	include("mysql.inc");
    	$counter = mysql_query("SELECT Count(*) as total FROM news");
    	$eintraege = mysql_fetch_array($counter);
    	$Query = "SELECT zeit FROM news WHERE ID = $eintraege[total]";
    	if (!($ergebnis = mysql_query ($Query, $verbindung)))
    	{
    		echo("Die Abfrage ist fehlgeschlagen!<p>");
    		echo("Ihre Abfrage $Qeue war nicht erfolgreich!<p>");
    		exit();
    	}
    	while ($zeile = mysql_fetch_object ($ergebnis))
    	{
    		$time = $zeile->zeit;
    	}
    	if (isset($newsnew))
    	{
    		if ($newsnew == $time)
    		{
    			$vorhanden = "ja";
    		}
    		else
    		{
    			setcookie("newsnew",$time,time()+3600*24*365);
    			$vorhanden = "nein";
    		}
    	}
    	else
    	{
    		setcookie("newsnew",$time,time()+3600*24*365);
    		$vorhanden = "nein";
    	}
    ?>
    <html>
    <head>
    <title>News</title>
    </head>
    <body bgcolor="#E7E7E7">
    <center><font face="Arial" size=3>News</font></center>
    <?php
    	if ($action == "show_detail")
    	{
    		show_detail($id,$verbindung);
    	}
    	else
    	{
    		show_news($verbindung, $eintraege,$start);
    	}
    	function show_news($verbindung, $eintraege,$start)
    	{
    		global $PHP_SELF;
    		$beitraege = 10;
    		echo ("Es sind ". $eintraege[total] ." Eintr&auml;ge vorhanden<p>");
    		if (!isset($start))
    		{
    			$start = 0;
    		}
    	$Query = "SELECT * FROM news ORDER BY ID DESC limit ". $start .",". $beitraege;
    	if (!($ergebnis = mysql_query ($Query, $verbindung)))
    	{
    		echo("Die Abfrage ist fehlgeschlagen!<p>");
    		echo("Ihre Abfrage $Qeue war nicht erfolgreich!<p>");
    		exit();
    	}
    	echo ("<table border=0 cellpadding=0 cellspacing=0 width=70%>");
    	while ($zeile = mysql_fetch_object ($ergebnis))
    	{
    		echo("<tr width=100%>");
    		echo("<td colspan='5' background='newsmenu.jpg'>&nbsp;");
    		echo("<tr>");
    		echo("<td align='left'><b>$zeile->ID.</b>");
    		echo("<td align='left' width=100%>Betreff: <b>$zeile->betreff</b>");
    		if ($vorhanden == "nein")
    		{
    			echo("<td align='center'><img src='newsnew.gif'>");
    		}
    		else
    		{
    			echo("<td>&nbsp;");
    		}
    		echo("<td align='right'>$zeile->datum | $zeile->zeit");
    		if ($zeile->detail == "on")
    		{
    			$message = substr($zeile->message, 0, 200);
    			echo("<td colspan='5' align='left'><br>$message...<br>");
    			echo("<a href=\"$PHP_SELF?action=show_detail&id='$zeile->ID'\">mehr</a><br>");
    		}
    		else
    		{
    			echo("<td colspan='5' align='left'><br>$zeile->message<br>");
    			echo("<tr><td><p>&nbsp;");
    		}
    		echo("</table></p>");
    		if ($start == 0)
    		{
    			echo("<font color='#FFFFFF'>zur&uuml;ck</font>");
    		}
    		else
    		{
    			$zurueck = $start - $beitraege;
    			echo("<a href=\"$PHP_SELF?start=". $zurueck ."\">zur&uuml;ck</a>");
    		}
    		$gesamt = $start + $beitraege;
    		if ($gesamt >= $eintraege[total])
    		{
    			echo("&nbsp;");
    		}
    		else
    		{
    			$weiter = $start + $beitraege;
    			echo("<a href=\"$PHP_SELF?start=". $weiter ."\">weiter</a>");
    		}
    		function show_detail($id,$verbindung)
    		{
    			global $PHP_SELF;
    			$Query = "SELECT * FROM news WHERE ID = $id";
    			if (!($ergebnis = mysql_query ($Query, $verbindung)))
    			{
    				echo("Die Abfrage ist fehlgeschlagen!<p>");
    				echo("Ihre Abfrage $Qeue war nicht erfolgreich!<p>");
    				exit();
    			}
    		echo ("<table border=0 cellpadding=0 cellspacing=0 width=70%>");
    		while ($zeile = mysql_fetch_object ($ergebnis))
    		{
    			echo("<tr>");
    			echo("<td align='left'><b>$zeile->ID.</b>");
    			echo("<td align='left' width=100%>Betreff: <b>$zeile->betreff</b>");
    			echo("<td align='right'>$zeile->datum | $zeile->zeit");
    			echo("<tr>");
    			echo("<td colspan='3' align='left'><br>$zeile->message<br>");
    		}
    		echo("</table><p><a href='javascript:window.history.back()'><- zur&uuml;ck</a><p>");
    	}
    	mysql_close ($verbindung);
    	echo("<p>&nbsp;");
    ?>
    </body>
    </html>


    Ah, mit diesem Limit geht das also, ja? Na, das werde ich doch gleich mal ausprobieren. Vielen Dank daf?r schon mal :smile:!

    EDIT:
    Hm, scheint doch nicht so optimal zu funktionieren. Denn nun zeigt er mir einen Fehler an. Liegt das vielleicht daran, dass ich definiert habe, dass die Datenbank von hinten nach vorne ausgelesen wird? Sprich, dass das Neuste stets oben steht?

    Beitrag ge?ndert am 12.03.2006 12:25 von cam
  8. k?nntest du im Code bitte in der Zeile wo der Fehler auftriit einen Kommentar reinmachen, will nicht 100 Zeilen abz?hlen ^^

    MfG apollo13
  9. Autor dieses Themas

    cam

    cam hat kostenlosen Webspace.

    Upps ... klar, also laut meinen Z?hlk?nsten w?re diese Zeile die letzte, also in der </html> steht ... aber ich glaube, das habe ich bereits im ersten Post erw?hnt, oder?

    Aber wie gesagt, das ist nur der Code, den ich aus dem Tutorial habe. Meiner sieht ganz anders aus. Ich hab das ja nur mal nebenbei erw?hnt, dass ich dort einen Fehler habe. Sollte ich da nicht lieber den Code posten, den ich auf meiner Seite verwende? Ach, ich mach das jetzt einfach mal. Hier ist er ... bereits mit diesem LIMIT, was ich eben eingef?gt habe:

    $db=mysql_connect("","","");
    	mysql_select_db("");
    	$anfrage="SELECT * FROM newssytem ORDER by date DESC LIMIT 10";
    	$ergebnis=mysql_query($anfrage);
    	print("<marquee direction='up' scrolldelay='1' scrollamount='1' height='360' width='200' 				
    
    		onmouseover=this.stop(); onmouseout=this.start();>");
    	mysql_data_seek($ergebnis);
    	$zeile=mysql_fetch_row($ergebnis);
    	print("<p align=justify><b>");
    	print($zeile[3]);
    	print("</b><br>");
    	print(substr($zeile[4], 0, 100));
    	print(" ...");
    	print("<br>");
    	print("<a href='read.php?news_id=");
    	print($zeile[0]);
    	print("' target=_parent>&#187;more&#171;</a>");
    	print("<hr>");
    	mysql_close($db);
    	print("</marquee>");
    ?>


    Beitrag ge?ndert am 12.03.2006 12:29 von cam
  10. ?hm, du verwendest mysql_fetch_row und musst dann so darauf zugreifen $zeile->rowname willst du mit $zeile[3] darauf zugreifen musst du $mysql_fetch_arry verwenden.

    MfG apollo13

    Beitrag ge?ndert am 12.03.2006 12:49 von apollo13
  11. Autor dieses Themas

    cam

    cam hat kostenlosen Webspace.

    Das ist die Fehlermeldung, die mir angezeigt wird:

    Warning: mysql_num_rows(): supplied argument is not a valid MySQL result resource in /home/webpages/lima-city/cam/html/news/index.php on line 16

    Klar, das line 16 in dem Code, den ich gepostet habe, nicht line 16 ist. Aber es geht ja wohl auch eigentlich um mysql_num_rows().
  12. ich w?rde es so schreiben (kA warum du mysql_data_seek($ergebnis); verwendest ^^)

    $db=mysql_connect("","","");
    mysql_select_db("");
    $anfrage="SELECT * FROM newssytem ORDER by date DESC LIMIT 10";
    print("<marquee direction='up' scrolldelay='1' scrollamount='1' height='360' width='200'                 
    
    
    
            onmouseover=this.stop(); onmouseout=this.start();>");
    $erg = mysql_query($anfrage);
    while ($row = mysql_fetch_array($erg))
    {
        print("<p align=justify><b>");
        print($zeile[3]);
        print("</b><br>");
        print(substr($zeile[4], 0, 100));
        print(" ...");
        print("<br>");
        print("<a href='read.php?news_id=");
        print($zeile[0]);
        print("' target=_parent>&#187;more&#171;</a>");
        print("<hr>");
    
    }
    mysql_close($db);
    print("</marquee>");



    Beitrag ge?ndert am 12.03.2006 12:53 von apollo13
  13. Autor dieses Themas

    cam

    cam hat kostenlosen Webspace.

    Hm ... okay, ich werd das dann wohl mal so ausprobieren. Nochmals danke f?r deine Hilfe. Ich werde gleich nochmal posten, ob alles funzt :biggrin:
  14. Autor dieses Themas

    cam

    cam hat kostenlosen Webspace.

    Sorry, dass ich jetzt eine neue Antwort schreibe, aber der Edit-Button wurde gerade irgendwie nicht angezeigt ... irgendwie ist sowieso alles total verschoben ...

    Also, zur?ck zum Thema:

    Es m?chte irgendwie immer noch nicht so wirklich funktionieren. Denn nun erscheint eine weitere Fehlermeldung:

    Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in /home/webpages/lima-city/cam/html/news/index.php on line 17

    Ohje, sowas ist doch echt zum Verzweifeln. Es tut mir auch leid, falls ich damit jemandem auf die Nerven gehe. Bin halt noch am Lernen. Klar, aus Fehlern lernt man. Doch dazu muss frau auch erst einmal wissen, wie diese Fehler zu deuten sind ...
  15. achja statt: $row = mysql_fetch_array($erg)

    geh?rt $zeile = mysql_fetch_array($erg) ^^

    da du auf die ergebnisse mit $zeile[0] zugreifst, w?rde ich es ?berhaupt so verwenden:
    $zeile = mysql_fetch_array($erg, MYSQL_NUM)

    gehen sollte es ^^, gib deinen query mal im phpmyadmin ein und schau was f?r einen Fehler er ausgibt

    MfG apollo13



    Beitrag ge?ndert am 12.03.2006 13:21 von apollo13
  16. Autor dieses Themas

    cam

    cam hat kostenlosen Webspace.

    Sollte ich jetzt nur $erg = mysql_query($anfrage); bei phpMyAdmin eingeben? Dann erscheint folgende Fehlermeldung:

    #1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '$erg = mysql_query($anfrage)' at line 1

    Gebe ich alles ein, erscheint das:

    #1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '$anfrage="SELECT * FROM newssytem ORDER by date DESC LIMIT 10"'
  17. c*********c

    #1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '$anfrage="SELECT * FROM newssytem ORDER by date DESC LIMIT 10"'



    Das reicht schon:
    SELECT * FROM newssytem ORDER by date DESC LIMIT 10
  18. Autor dieses Themas

    cam

    cam hat kostenlosen Webspace.

    Okay, dann kommt der Fehler:

    #1054 - Unknown column 'date' in 'order clause'

    So etwas dachte ich mir schon. Das liegt sicher daran, dass ich datum und nicht date in der Datenbank habe ... denn kaum habe ich das ge?ndert, kommt keine Fehlermeludung mehr. Daf?r sind nun allerdings alle Beitr?ge durcheinander geraten. Und zwar wirklich durcheinander, der zweite steht ganz oben, der erste ganz unten und mittendrin ist auch alles nicht so wie es sein sollte. Ich werde mal alle Beitr?ge l?schen und das ganze noch einmal versuchen. Vielleicht geht es ja dann. Oder kann ich da noch etwas anderes machen? Ich meine, kann ich diesen SQL-Text, den ich nun bei phpmyAdmin eingegeben habe irgendwie wieder entfernen?

    EDIT:
    Na klasse, nun ist es mal wieder so, dass der neuste Beitrag ganz unten steht. Und dabei war ich froh, dass ich es geschafft hatte, dass er oben steht. Das hatte ich eigentlich mit dieser for-Schleife gemacht. Warum sagte man mir doch gleich, dass ich diese nicht nutzen soll?

    Beitrag ge?ndert am 12.03.2006 15:39 von cam
  19. Wenn du das Datum als Timestamp hast m?sste das Order by datum Desc eigentlich ohne Probleme gehen.

    Wie es ist, wenn du z.B. Date (als column type) gew?hlt hast wei? ich nicht.

    MfG apollo13
  20. Autor dieses Themas

    cam

    cam hat kostenlosen Webspace.

    Wie gesagt, das Problem liegt jetzt nur noch darin, dass wieder das neuste unten steht. Kann ich statt dieser while-Schleife nun wieder ... oder zus?tzlich ... die for-Schleife einf?gen, die die Anzeige umdreht, ohne dass wieder Probleme auftauchen?
  21. w?rde ich nicht ^^ versuch mal das DESC wegzulassen dann sollte sich das ganze umdrehen

    MfG apollo13
  22. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

    lima-city: Gratis werbefreier Webspace für deine eigene Homepage

Dir gefällt dieses Thema?

Über lima-city

Login zum Webhosting ohne Werbung!