Counter für Antworten im Messageboard

sugar

Erfahrenes Mitglied
Ich habe ein Tutorial für ein Messageboard gefunden und konnte damit auch ganz gut arbeiten. Leider fehlt dabei aber die Anzeige, wieviele Antworten es bei einem Topic gibt. Ich habe nur zwei Tabellen, "topics" und "posts". Ich habe bei verschiedenen Foren/Messageboards gesehen, dass diese eine neue Tabelle dafür angelegt haben. Hat jemand vielleicht eine Idee? Wieviele Beiträge es allgemein gibt habe ich schon herausgefunden. Na gut war ja auch nicht so schwer! :-) Jetzt fehlt mir aber irgendwie der Ansatz zum weitermachen. :-(
 
Du musst doch nur eine SQL-Anweisung schreiben, die Dir die Anzahl der Posts zu einem Topic zurück gibt.
Bsp:
Code:
select count(*) as ANZAHL from posts where topic_id = 1
Für eine genauere SQL-Abfrage hast Du zu wenig Informationen über Deine Tabellenstruktur geliefert. Und eigentlich gehört der Thread auch ins SQL-Forum.

snuu
 
Hallo, irgendwie bin ich jetzt völlig durcheinander gekommen. Das mit der anzahl habe ich nicht ganz verstanden. Wo kommt das denn her?

Code:
$topic_query = mysql_query("SELECT * FROM topics LIMIT $from, $max_results"); 

while($topic = mysql_fetch_array($topic_query)){ 
echo' <table width="100%" border="0" align="center" cellpadding="5" cellspacing="2" bgcolor="#FFFFFF">
              <TR> 
                <TD class="text"><P><a href="view.php3?topicID=' .$topic['ID'].'" class="black">'.$topic['TopicName']. '</a>
                </TD>
              </TR>';
} 

$anzahl_query = mysql_query("select count(*) as anzahl from posts where topic_id =1");
while($anzahl = mysql_fetch_array($topic_query)){ 
echo'            
              <TR> 
                <TD class="text">$anzahl</td>
                </TD>
              </TR>
</TABLE>';
}
 
Du kannst mein SQL-Statement natürlich nicht einfach so übernemen, da ich nicht weiss, wie Deine Tabellen heissen und welche Felder sie enthalten. Aber die Theorie sollte klar sein: Du zählst die Datensätze in der Tabelle, in der die Posts abgelegt sind - und zwar nur die, die zu einem bestimmten Topic gehören. Dafür muss es in der Tabelle mit den Posts ein Feld geben, das auf einen Datensatz in der Tabelle mit den Topics verweist.

snuu
 
irgendwie habe ich ein Problem jetzt. Hört sich zwar doof an aber ich muss ja zwei Abfragen machen, einmal um das Topic abzufragen und einmal die Anzahl der Posts. Nur sieht das bei mir so aus und das funktioniert natürlich auch nicht.
Code:
$post_query = mysql_query("SELECT * FROM posts WHERE (TopicID='$topicID')");
	while ($post = mysql_fetch_array($post_query)) {
$topic_query = mysql_query("SELECT * FROM topics LIMIT $from, $max_results"); 
	while($topic = mysql_fetch_array($topic_query)){ 
echo' <table width="100%" border="0" align="center" cellpadding="5" cellspacing="2" bgcolor="#FFFFFF">
				<tr> 
                <td class="text"><P><img src="img/topic_sub.gif" width="14" height="15" border="0" align="absmiddle"> <a href="view.php3?topicID=' .$topic['ID'].'" class="black">'.$topic['TopicName']. '</a>
                </td>
				</tr>
				<tr>
				<td>$post</td>
              </tr>
			  </table>';
} 
}
 
PHP:
$sql = "select topics.ID, TopicName, count(posts.ID) as ANZAHL
        from posts, topics
        where posts.TopicID = topics.TopicID
        group by topics.ID, TopicName";
Die SQL-Abfrage holt alle Topics und die dazugehörige Anzahl der Posts. Ob sie funktioniert, hängt wieder einmal von Deiner Datenstruktur ab, die Du bisher immer noch nicht gepostet hast.

Bist Du das Weiteren so nett und beschäftigst Dich erst einmal mit den MySQL Grundlagen?
--> http://dev.mysql.com/doc/mysql/de/Data_Manipulation.html

Sonst hat alles andere keinen Sinn.

snuu
 
Zurück