Kommentare im News zählen!

cille

Erfahrenes Mitglied
Hi ho,
ich habe ein News Script programmiert was auch Kommentare beinhaltet.
Die News werden nach 500 Zeichen gebrochen und ein [more read] Link hingesetzt.
Wenn man auf den Link klickt, kommt man auf eine Seite wo das einzelne News steht und die Kommentare bezüglich der News stehen.

Soweit so gut:
Aber ich will jetzt, wo die ganzen News aufgelistet werden,
ein Link und Kommentarzähler hinsetzten.
z.B.:

1.
News von Max Musterman | 10 Kommentare
Seite Entlich Online wohooo | geschrieben am 10.10.2006 um 15:00 Uhr
----------------------------------------------------------------------------------------------------------
Jeahr leute jetzt ist die Seite Online...
[more read]

2.
3.
4......



Das was Rot gekennzeichnet ist will ich machen.
Aber irgendwie fällt mir nicht ein wie ich dett machen soll.

Die news sind in der SQL Tabelle "tagebuch"
Die Kommentare in der SQL Tabelle "comments"

Um die comments zuzuordnen habe ich in der SQL Tabelle "comments" eine zelle eingefügt die "comid" heißt.
Die wird abgeglichen mit der "ID" vom Tagebucheintrag.

Hoffe Ihr könntet mir vielleicht helfen.
Hier ist einfach mal der code:
PHP:
<?php
include("config.php");
$sql = "SELECT * FROM tagebuch ORDER BY id DESC LIMIT 0, 10";
$result = mysql_query($sql);


while($row = mysql_fetch_assoc($result)) {
	echo "<table border=\"0\" cellspacing=\"4\">".
			 "<tr>".
			 "<td>".
			 "<br><small>Tagebucheintrag von ".htmlspecialchars($row['name'])."</small><br>".
		   "<b>".htmlspecialchars($row['titel'])."</b> | <small>geschrieben am ".htmlspecialchars($row['datum'])." um ".htmlspecialchars($row['time'])."</small>".
			 "<div id=\"rahmen2\"><div algin='left'>".substr($row['eintrag'],0,500)."<br><a href=\"index.php?main=news&id=".$row['id']."\">[read more]</a></div></div><br>".
			 "</td>".
			 "</tr>".
			 "</table";
}
?>

Danke euch schonmal für eure Hilfe.

mfg,
cille
 
PHP:
<?php
include("config.php");
$sql = "SELECT * FROM tagebuch ORDER BY id DESC LIMIT 0, 10";
$result = mysql_query($sql);


while($row = mysql_fetch_assoc($result)) {

$ergebnis = mysql_query("SELECT * FROM comments WHERE comid='".$row['id']."'");
$anzahl_comments=mysql_num_rows($ergebnis);

    echo "<table border=\"0\" cellspacing=\"4\">".
             "<tr>".
             "<td>".
             "<br><small>Tagebucheintrag von ".htmlspecialchars($row['name'])." | ".$anzahl_comments." Kommentare</small><br>".
           "<b>".htmlspecialchars($row['titel'])."</b> | <small>geschrieben am ".htmlspecialchars($row['datum'])." um ".htmlspecialchars($row['time'])."</small>".
             "<div id=\"rahmen2\"><div algin='left'>".substr($row['eintrag'],0,500)."<br><a href=\"index.php?main=news&id=".$row['id']."\">[read more]</a></div></div><br>".
             "</td>".
             "</tr>".
             "</table";
}
?>


mfg,
blount
 
Hallo

Einfach in der While Schleife eine neue SQL-Abfrage starten z.B.
Code:
$sql = "SELECT count(`id`) AS comanz FROM `comments` WHERE `comid` = '$tagebuchid';";

Eigentlich ist das eine Mysql Abfrage, die du nur noch auswerten musst und einbinden.

mfg
 
Zuletzt bearbeitet:
Danke euch beiden,
ist ja eigentlich einfach,
aber ich dummerchen wieder kann nicht nachdenken.

Danke vielmals :)

mfg,
cille
 
Regel lieber alles in einer Abfrage:
Code:
SELECT
        `t`.`id`,
        `t`.`name`,
        `t`.`titel`,
        `t`.`datum`,
        `t`.`time`,
        `t`.`eintrag`,
        COUNT(`c`.*) AS `count`
  FROM
        `tagebuch` AS `t`
    LEFT OUTER JOIN
        `comments` AS `c` ON `t`.`id` = `c`.`comid`
  GROUP BY
        `t`.`id`
  ORDER BY
        `t`.`id` DESC
  LIMIT
        10
Nachtrag: Left Outer Join statt Inner Join und auf Online-Skaters Hinweis die „GROUP BY“-Klausel hinzugefügt.
 
Ich habe meine Scripte darauf umgestellt und musste feststellen das Einträge mit 0 Kommentaren nicht gelistet werden durch diese Abfrage :(
Die ON-Abfrage setzt vorraus das Kommentare vorhanden sein müssen.

Gibts da ein Trick ?

Thx
 
In dem Fall sollte ein Left Outer Join statt eines Inner Joins verwendet werden. Damit erhält die linke Tabelle die höchste Priorität.
 
Zurück