Anzahl der Datensätze

Maffy

Erfahrenes Mitglied
er soll mir die anzahl der einträge für jedes forum anzeigen und dann alle foren ausgeben und in klammer entweder 0 wenn keine einträge oder die anzahl der einträge ausgeben.

problem:
er zeigt mir zwei foren an und gibt an das in den foren jeweils 2 einträge vorhanden sind. ich habe aber drei foren, in den foren 1 & 2 habe ich jeweils einen datensatz.

PHP:
<? 
// Die Threads des Forums abfragen
include("mysqldb.php");
$sql = $db->query("SELECT f.name, COUNT(*)
						FROM
  						mr73_foren f
  						INNER JOIN mr73_threads t USING (fid)
						GROUP BY f.fid");
$res2 = mysql_num_rows($sql) or die(mysql_error());                                                
                                             
//Die Threads und die Antworten anzeigen
       while($row =  mysql_fetch_object($sql))
    {
		echo "$row->name [$res2]<br>\n";
	}
?>
 
Hi

Hast Du es mal mit Count(t.fid) probiert? Der count(*) zählt wohl alle.

Der inner Join zeigt nur vorhandene verbundene Datensätze an, hier könnte man left oder right join verwenden. Dann bekommst Du bei Forum 3 auch die 0 angezeigt.
 
habe ich eigendlich alles schon propiert.

bei inner join zeigt er mir drei foren an und jeweils drei einträge für jedes forum.

ich werd jetzt nochmal bei Count (t.fid)eintragen mal schaun was er dann macht.

wie bekomme ich es hin, das er mir 0 anzeigt wenn keine einträge da sind bzw. die anzahl zeigt wenn einträge im forum vorhanden sind.
 
habe jetzt verschiedenes probiert

bei left join zeigt er mir alle drei foren an, aber auch, dass in jedem forum drei datensätze wären. dies ist aber falsch da ich nur in forum 1+ 2 einträge habe.
 
Probiers doch mal so:

$sql = $db->query("SELECT f.name, COUNT(t.fid) as Anzahl FROM mr73_foren f left JOIN mr73_threads t USING (fid) GROUP BY f.fid");
 
habe ich probiert, er macht genau das gleich.

das komische ist, ich habe mal die erste abfrage in perlmyadmin getestet, und hier gibt er es richtig aus.
 
hmmm...

ich bin jetzt allerdings nicht der php-Guru, aber probier doch mal folgendes, musst halt die Verbindung anpassen

<?
mysql_connect("localhost","root","") or die
("Keine Verbindung moeglich");
mysql_select_db("DBName") or die ("Die Datenbank existiert nicht");

$sql = "SELECT f.name, COUNT(t.fid) as Anzahl
FROM mr73_foren f left JOIN mr73_threads t
USING (fid) GROUP BY f.fid";
$res2 = mysql_query($sql);
while($row = mysql_fetch_object($res2))
{
echo $row->name;
echo " (";
echo $row->Anzahl;
echo ")<br>";
}
?>
 

Neue Beiträge

Zurück