Ausgabe-Fehler ($end)

dermacz

Erfahrenes Mitglied
Hi ich habe meine ersten Scripts geschrieben und Probleme.
Also das erste ist die Ausgabe eines News-Scripts da kommt immer ein Parse-Error: $end
PHP:
<?php
   if(isset($_GET['site']) AND "comments" == $_GET['site']) {        include "news_comments.php";    } else {
    $sql = "SELECT
                COUNT(*) as Anzahl
            FROM
                news";
    $result = mysql_query($sql) OR die(mysql_error());

    $anzahl = mysql_result($result, 0);
    $start  = isset($_GET['page'])?(int)$_GET['page']:1;

    if(!defined('LIMIT_NUM')) {
        die("Benötigte Konstante LIMIT_NUM ist nicht definiert");
    }

    // Anzahl der Pages berechnen.
    $num_pages = ceil($anzahl/LIMIT_NUM);

    // Anzahl auf min. 1 setzen
    if(!$num_pages) {
        $num_pages = 1;
    }

    // Die Start-Page muss zwischen
    // 1 und $num_pages liegen
    if($start > 1) {
        $start = 1;
    }
    if($start > $num_pages) {
        $start = $num_pages;
    }

    // offset für den Query bestimmen
    $offset = ($start - 1) * LIMIT_NUM;
echo " <p align=\"center\"><a href=\"index.php?section=news.php\">[News]</a> <a href=\"index.php?section=guestbook\">[Guestbook]</a> <a href=\"index.php?section=links\">[Links]</a> </p>";
echo '<font size="14pt" style="font-family:Aston-F2, Arial Black, Arial;">News</font>';
    $sql = "SELECT
                news.ID,
                news.Titel,
                news.Inhalt,
                DATE_FORMAT(news.Datum, '".DATE_STYLE."') AS Changedatum,
                users.Name,
                users.Email
            FROM
                news,
                users
            WHERE
                news.Autor = users.ID
            ORDER BY
                news.Datum DESC
            LIMIT
                ".$offset.",".LIMIT_NUM;
    $result = mysql_query($sql) OR die(mysql_error());
    echo "<ul class=\"news\">\n";
    while($row = mysql_fetch_assoc($result)) {
                $sql = "SELECT
                    Link,
                    Beschreibung
                FROM
                    news_links
                WHERE
                    NewsID = '".$row['ID']."'";
echo '	

<table width="80%" border="0" cellspacing="1" cellpadding="3" bgcolor="#000000" align="center">
 	<tr>
  		<td bgcolor="#FFFFFF">
   		<b>'.$row['Titel'].'</b><br> <font size="1" color="blue">'.$row['Changedatum'].' von <font color="red"><a href="mailto:'.$row['Email'].'">'.$row['Name'].'</a></font>  </td>
 	</tr>
 	<tr>
  		<td bgcolor="#FFFFFF">
   		<pre>'.changetext($row['Inhalt']).'</pre>  </td>
 	</tr>
	<tr>
  		<td bgcolor="#FFFFFF">';
		$result5 = mysql_query($sql) OR die(mysql_error());
   		
		if(mysql_num_rows($result5)){
				while($links = mysql_fetch_assoc($result5)) {
                echo "<li>\n";
                echo "    <a href=\"".$links['Link']."\">\n";
                echo $links['Beschreibung']."\n";
                echo "    </a><\n";
                echo "</li>\n";
            }
        } else {
            echo "<li>\n";
            echo "    Keine Links zum Thema\n";
            echo "</li>\n";
        }
echo '</td>
 	</tr>
</table>
<br/>';
        $result2 = mysql_query($sql) OR die(mysql_error());
        if(mysql_num_rows($result2)) {
            
        echo "        </ul>\n";
        echo "    </div>\n";
        echo "    <div class=\"newsfooter\">\n";
        $sql = "SELECT
                    COUNT(*) as Anzahl
                FROM
                    news_comments
                WHERE
                    NewsID = '".$row['ID']."'";
        $result3 = mysql_query($sql) OR die(mysql_error());
        $Anzahl = mysql_result($result3, 0, "Anzahl");
        echo "        <a href=\"index.php?section=news&amp;site=comments&amp;NewsID=".$row['ID']."\">\n";
        echo "            Kommentare (".$Anzahl.")\n";
        echo "        </a>\n";
        echo "    </div>\n";
		echo "    </div>\n";
        echo "</li>\n";
    }
    echo "</ul>\n";

    // Page-Links nur anzeigen, wenn es mehr als eine sind.
    if($num_pages > 1) {
        echo "<p>;\n";
        for($i = 1; $i <= $num_pages; $i++) {
            if($i == $start) {
                // ich bin ja schon auf der Seite. Also
                // Seitenzahl ohne Link erzeugen
                echo $i."\n";
            } else {
                echo "<a href=\"index.php?section=news&amp;page=".$i."\">\n";
                echo $i."\n";
                echo "</a>\n";
            }
        }
        echo "</p>\n";
    }}
?>

Das 2. ist ein Script-Prob: Das ist das Script für eine Ausgabe der Link-Seite. Diese sollte ungefähr aussehen wie http://www.pumpi-online.de unter Links. Ich will 4 Bilder mit Linknamen in einer Reihe haben aber wie mache ich es wenn in der DB mehr als 4 einträge stehen dan soll er eine neue TableRow machen in der dann wieder 4 stehen.

PHP:
<?php
echo " <p align=\"center\"><a href=\"index.php?section=news.php\">[News]</a> <a href=\"index.php?section=guestbook\">[Guestbook]</a> <a href=\"index.php?section=links\">[Links]</a> </p>";
echo '<font size="14pt" style="font-family:Aston-F2, Arial Black, Arial;">Links<br><br></font>'; 
include('login.php');
$sql = "SELECT 
				ID,
				Bild
				Link_Name,
				Link
		FROM 
				links
		ORDER BY
				ID DESC";
				
				
$result = mysql_query($sql) OR die(mysql_error());  

if(mysql_num_rows($result)) {
$anzahl = mysql_num_rows($result);
echo '<table>';
echo '<tr>';
if($anzahl <= 4) {
while($row = mysql_fetch_assoc($result)) {
echo '<td>'.$row['Link_Name'].'<br>'.$row['Bild'].'</td>';
}
}
else{
echo '<tr>';
while($row = mysql_fetch_assoc($result)) {
echo '<td>'.$row['Link_Name'].'<br>'.$row['Bild'].'</td>';
echo '</tr>';
}}
else
{
echo "Keine Links vorhanden";
}
echo '</tr>';
echo '<table>';
?>

Das Problem ist nur das wenn es mehr als 4 sind macht er jedesma ne enue Reihe un dann geht das nicht. Also PLZ help
 
Zu Deinem ersten Problem:

Es fehlt definitiv eine geschweifte Klammer.
Du öffnest hier
PHP:
if(isset($_GET['site']) AND "comments" == $_GET['site']) {
und hier
PHP:
while($row = mysql_fetch_assoc($result)) {
jeweils eine Anweisung.
Am Ende schließt Du aber nur eine wieder. Also fehlt irgendwo ein Ende einer der beiden Anweisungen (ich tippe mal, dass die while-Schleiße irgendwo geschloßen werden muss).

Dein zweites Problem sollte so gelöst werden können:
PHP:
<?php 
echo " <p align=\"center\"><a href=\"index.php?section=news.php\">[News]</a> <a href=\"index.php?section=guestbook\">[Guestbook]</a> <a href=\"index.php?section=links\">[Links]</a> </p>"; 
echo '<font size="14pt" style="font-family:Aston-F2, Arial Black, Arial;">Links<br><br></font>'; 
include('login.php'); 
$sql = "SELECT 
                ID, 
                Bild 
                Link_Name, 
                Link 
        FROM 
                links 
        ORDER BY 
                ID DESC"; 
                 
                 
$result = mysql_query($sql) OR die(mysql_error());   

echo '<table>'; 
echo '<tr>'; 
if(mysql_num_rows($result)) { 
$counter = 0;
while($row = mysql_fetch_assoc($result)) {
$counter = $counter + 1;
if($counter = 5){
echo '</tr><tr>';
$counter = 0;
}
echo '<td>'.$row['Link_Name'].'<br>'.$row['Bild'].'</td>'; 
}} 
else 
{ 
echo "Keine Links vorhanden"; 
} 
echo '</tr>'; 
echo '<table>'; 
?>
 
Jo danke das mit den News geht aber das mit den Links versthe ich ned so ganz da werde ich noch dran arbeiten.
 
das mit den Links versthe ich ned so ganz
Ganz einfach:

Du lässt die Links in ner Schleife ausgeben. Darin lässt Du einen Zähler mitlaufen, der sich bei jedem Schleifendurchlauf um 1 erhöht.
Wenn der Zähler nun größer als 4 (also 5) ist, willst Du eine neue Zeile in der Tabelle starten. Damit der Counter dann wieder bei 0 anfängt (damit die nächste Zeile auch nur 4 Einträge enthält), musst Du den auch noch neu setzen. Also:
PHP:
if($counter > 4){
echo '</tr><tr>';
$counter = 0;
}
Damit wird nach jedem 4. Durchlauf der Schleife eine neue Tabellenzeile angefangen.

Außerdem muss der Start der Tabelle außerhalb jeglicher if-Anweisungen stehen, da Du sonst evtl. keine Tabelle anfängst, aber trotzdem was reinschreiben willst.
Stell Dir vor, es sind keine Links vorhanden... Dann fällt bei Deinem Code der ANfang der Tabelle weg.
PHP:
 if(mysql_num_rows($result)) { 
$anzahl = mysql_num_rows($result); 
// DIES WIRD NUR AUSGEFÜHRT, FALLS MINDESTENS EIN EINTRAG VORHANDEN IST
echo '<table>'; 
echo '<tr>'; 
if($anzahl <= 4) { 
while($row = mysql_fetch_assoc($result)) { 
echo '<td>'.$row['Link_Name'].'<br>'.$row['Bild'].'</td>'; 
} 
} 
else{ 
echo '<tr>'; 
while($row = mysql_fetch_assoc($result)) { 
echo '<td>'.$row['Link_Name'].'<br>'.$row['Bild'].'</td>'; 
echo '</tr>'; 
}} 
else 
{ 
echo "Keine Links vorhanden"; 
} 
// DER TEIL WIRD IMMER AUSGEFÜHRT, OBWOHL OBEN DER TEIL FEHLT
echo '</tr>'; 
echo '<table>';
 
Zurück