Lange ist's her, seit ich bei euch war und ich komme jetzt zu euch, weil ich ein (wahrscheinlich logisches) Problem habe und es einfach nicht hinkriege, dieses Problem zu lösen.
Wie schon im Titel erwähnt, geht es um mein selbstgeschriebenes News-Script und dort um die Kommentar-Funktion(en) und das News-Archiv.
Ich habe auf der News-Seite die aktuellsten News aufgelistet und bei jeder News steht rechts oben "Comments (<Anzahl>)" und "Comments" ist ein anklickbarer Link zur Datei "comments.php" (Was für eine Überraschung...

Das Problem ist eigentlich nicht nur eins, sondern 2:
1. Wie kriege ich es hin, dass das Script nur die Anzahl an Kommentaren für die entsprechende News zählt und anzeigt?!?
Code: Alles auswählen
News.php:
$connection = mysql_connect($host, $user, $pass)
$database = mysql_select_db($database);
$query = mysql_query("SELECT *
FROM news
ORDER BY nid DESC
LIMIT 0,5");
while ($news = mysql_fetch_array($query))
{
list ($comments) = mysql_fetch_row(mysql_query("SELECT
COUNT(*)
FROM comments"));
echo "<table width=\"500px\" border=\"0px\" cellPadding=\"3px\" cellSpacing=\"0px\" align=\"left\">
<tr>
<td class=\"newsheader1\" align=\"left\"> " . $news['genre'] . " » " . $news['title'] . " </td>
<td class=\"newsheader2\" align=\"right\"> <a href=\"" . $nsp . 'comments.' . $phpEx . '?id=" . $news['nid'] . "' . "\" target=\"_top\">Comments</a> (" . $comments . ") </td>
</tr>
<tr align=\"left\" valign=\"middle\">
<td class=\"newsbody\" colspan=\"2\">
" . nl2br(bbc($news['text'])) . "
</td>
</tr>
<tr>
<td class=\"newsfooter1\" align=\"left\">
Written By: " . $news['poster'] . "
</td>
<td class=\"newsfooter2\" align=\"right\">
[ " . date($date, $news['postdate']) . " (CET) ]
</td>
</tr>
</table>
<br clear=\"all\">
<br />\n";
}
2. Wie kriege ich es hin, dass beim Anklicken des "Comments-Links" nur die Kommentare angezeigt werden, die auch zu dieser News gehören?!?
Code: Alles auswählen
Comments.php:
$connection = mysql_connect($host, $user, $pass);
$database = mysql_select_db($database);
$query1 = mysql_query("SELECT *
FROM news
WHERE $id = nid");
echo "<table width=\"500px\" border=\"0px\" cellPadding=\"3px\" cellSpacing=\"0px\" align=\"left\">
<tr>
<td class=\"newsheader1\" colspan=\"2\" align=\"left\"> " . $news['genre'] . " » " . $news['title'] . " </td>
</tr>
<tr align=\"left\" valign=\"middle\">
<td class=\"newsbody\" colspan=\"2\">
" . nl2br(bbc($news['text'])) . "
</td>
</tr>
<tr>
<td class=\"newsfooter1\" align=\"left\">
Written By: " . $news['poster'] . "
</td>
<td class=\"newsfooter2\" align=\"right\">
[ " . date($date, $news['postdate']) . " (CET) ]
</td>
</tr>
</table>
<br clear=\"all\">
<br />\n
\n
<hr width=\"80%\" align=\"center\" />\n";
$query2 = mysql_query("SELECT *
FROM comments
WHERE cid = nid");
while ($comments = mysql_fetch_array($query2))
{
echo "<table width=\"500px\" border=\"0px\" cellPadding=\"3px\" cellSpacing=\"0px\" align=\"left\">
<tr><td class=\"newsheader1\" colspan=\"2\" align=\"left\"> " . $comments['title'] . " </td></tr>
<tr align=\"left\" valign=\"middle\">
<td class=\"newsbody\" colspan=\"2\">
" . nl2br(bbc($comments['text'])) . "
</td>
</tr>
<tr>
<td class=\"newsfooter1\" align=\"left\">
Written By: " . $comments['poster'] . "
</td>
<td class=\"newsfooter2\" align=\"right\">
[ " . date($date, $comments['postdate']) . " (CET) ]
</td>
</tr>
</table>
<br clear=\"all\">
<br />\n";
}
?>
<hr width="80%" align="center" />
<?php
switch ($mode)
{
default:
echo "
<form method=\"post\" name=\"post\" action=\"comments.php?action=post\">
<table class=\"news\" width=\"390\" border=\"0\" cellPadding=\"0\" cellSpacing=\"0\" align=\"center\">
<tr><td> Kommentar: </td><td><textarea rows=\"15\" name=\"comment\" cols=\"50\"></textarea> </td></tr>
<tr><td> </td></tr>
<tr><td> Poster: </td><td> <input type=\"text\" name=\"poster\" size=\"30\" maxlength=\"30\" /> </td></tr>
<tr><td> </td></tr>
<tr><td colspan=\"2\" align=\"center\">
<input type=\"submit\" value=\"Posten\" name=\"Send\">
<input type=\"reset\" value=\"Löschen\" name=\"Reset\">
</td></tr>
</table>
</form>\n";
break;
case "post":
// Keine Poster-Name => Fehler
if ($poster == "")
{
echo "
<div align=\"center\">
Du hast deinen Namen vergessen ...<br />
» <a href=\"javascript:history.back();\">Zum Post-Formular</a> «
</div>\n";
}
// Kein Kommentar => Fehler
if ($comment == "")
{
echo "
<div align=\"center\">
Du hast deinen Kommentar-Text vergessen ...<br />
» <a href=\"javascript:history.back();\">Zum Post-Formular</a> «
</div>\n";
}
// Alles OK => Speichern
if ($poster != "" && $comment != "")
{
$query = "INSERT INTO comments
(id,title,text,poster,postdate)
VALUES('','$title','$comment','$poster','" . time() . "')";
$result = mysql_query($query);
echo "
<div align=\"center\">
Kommentar erfolgreich eingetragen!<br />
[ <a href=\"" . $_SERVER['PHP_SELF'] . "\" target=\"_self\">Zurück zu den Kommentaren</a> ]
</div>";
}
}
Und ich habe ein Problem mit dem Archiv. Ich möchte eine "blätter-Funktion" einbauen - man soll auf die erste, letzte, vorherige und nächste Seite "blättern" können.
Code: Alles auswählen
Archive.php:
$connection = mysql_connect($host, $user, $pass)
$database = mysql_select_db($database);
$query = mysql_query("SELECT *
FROM news
ORDER BY id DESC
LIMIT 1,99");
while ($news = mysql_fetch_array($query))
{
list ($comments) = mysql_fetch_row(mysql_query("SELECT COUNT(*) FROM comments"));
echo "<table width=\"500px\" border=\"0px\" cellPadding=\"3px\" cellSpacing=\"0px\" align=\"left\">
<tr>
<td class=\"newsheader1\" align=\"left\"> " . $news['genre'] . " » " . $news['title'] . " </td>
<td class=\"newsheader2\" align=\"right\"> <a href=\"" . $nsp . 'comments.' . $phpEx . '?id=" . $comments . "' . "\" target=\"_top\">Comments</a> (" . $comments . ") </td>
</tr>
<tr align=\"left\" valign=\"middle\">
<td class=\"newsbody\" colspan=\"2\">
" . nl2br(bbc($news['text'])) . "
</td>
</tr>
<tr>
<td class=\"newsfooter1\" align=\"left\">
Written By: " . $news['poster'] . "
</td>
<td class=\"newsfooter2\" align=\"right\">
[ " . date($date, $news['postdate']) . " (CET) ]
</td>
</tr>
</table>
<br clear=\"all\">
<br />\n";
}
Ist der Code in den Dateien richtig (Bestimmt nicht, oder?!?)
Kann mir da jemand helfen, wie ich alle diese Probleme gelöst bekomme?!?

Danke schon mal für all eure nette Hilfe!


MfG, Martin
P. S.: Könnte jemand mal meinen Nickname in "Eagle" ändern, weil ENW habe ich als Ex-Leader aufgelöst... - Danke!
