AnalphaBestie: kleines board

Hallo alle.

Ich bin grade dabei mir nen kleines board zu basteln.
Bis jetzt habe ich auch alles gut hinbekommen aber grade stellt sich mir ein kleines problem in den weg ;).

Ich habe 2 mysql spalten
1 mal die board und 1 boardanswers

beim board ist: id, name, email, topic, text, date, admin
boardanswers:   name, text, zu, date, email, admin.

ich will nun das in der topic übersicht ( die überschriften ) ein zähler eingebaut ist, der anzeigt wieviel leute geantwortet haben.

die abfrage der überschriften sieht so aus:

if (isset($_GET['site']) && $_GET['site'] == "viewforum") {
echo '
<table border="0" width="600" cellspacing="5" cellpadding="5">';
 include("mysql.php");
@MYSQL_CONNECT($dbserver, $dbusername, $dbpw) or die ("Server Down");
@MYSQL_SELECT_DB($db) or die ("Database Down");

$hole = mysql_query("SELECT * FROM board ORDER BY 'id' DESC");
while($row = mysql_fetch_array($hole)){
    echo '
     <tr style="background-color:  #C0C0C0;"><td width="140"><a href="?site=forumdetails&id='.$row["id"].'&inc=forum">'.$row["name"].'</a></td><td width="230"><a href="?site=forumdetails&id='.$row["id"].'&inc=forum">'.$row["topic"].'</a></td><td width="205">'.$row["date"].'</td></tr>';
     }
     echo "
</table>";

}

ich kann ja nun nicht in das while{} einfach ne neue abfrage einbauen, oder ?

ich dachte mir das ich zu jeder überschrift das "zu" aus der boardanswers raussuchen muss, und einfch als zahl ausgeben... aber wi ist mir nicht ganz klar ;)

Danke für alle antworten, MFG
Analpha

  1. Hallo,

    ich kann ja nun nicht in das while{} einfach ne neue abfrage einbauen, oder ?

    Wieso so kompliziert? Ein einfaches GROUP BY tuts doch auch:

    select board.id as id, board.name as name, board.email as email, board.topic as topic, board.date as date, board.admin as admin, count(boardanswers.name) as num_ans from board, boardanswers where boardanswers.id = board.id group by board.id, board.name, board.email, board.topic, board.date, board.admin order by board.id

    Dann stehen die Anzahl der Antworten in num_ans.

    Ach ja, bei der Antworttabelle wäre eine ID auch nicht schlecht. Dann könntest Du statt count(boardanswers.name) einfach nur count(boardanswers.id) nehmen (der select müsste so trotzdem klappen, da du ja _kein_ distinct verwendest)

    Grüße,

    Christian

    P.S. answeres schreibt man mit e zwischen r und s ;)
    P.P.S. noch ein Board? Du kennst doch sicher http://aktuell.de.selfhtml.org/artikel/gedanken/foren-boards/index.htm, oder?

    1. Hallo,

      tagchen

      ich kann ja nun nicht in das while{} einfach ne neue abfrage einbauen, oder ?

      Wieso so kompliziert? Ein einfaches GROUP BY tuts doch auch:

      anfänger -  kannte group by noch gar net ;)

      select board.id as id, board.name as name, board.email as email, board.topic as topic, board.date as date, board.admin as admin, count(boardanswers.name) as num_ans from board, boardanswers where boardanswers.id = board.id group by board.id, board.name, board.email, board.topic, board.date, board.admin order by board.id

      Dann stehen die Anzahl der Antworten in num_ans.

      k ichw erde mich mal damit befassen, klingt sehr gut

      Ach ja, bei der Antworttabelle wäre eine ID auch nicht schlecht. Dann könntest Du statt count(boardanswers.name) einfach nur count(boardanswers.id) nehmen (der select müsste so trotzdem klappen, da du ja _kein_ distinct verwendest)

      hm... distinct ??? :), mal sehen werd drüber nachdenken

      Grüße,

      Christian

      MFG ANalpha

      P.P.S. noch ein Board? Du kennst doch sicher http://aktuell.de.selfhtml.org/artikel/gedanken/foren-boards/index.htm, oder?

      ja ist aber ne weile her, werds mir nochmal durchlesen

      1. Hallo,

        anfänger -  kannte group by noch gar net ;)

        Gut - aber wenn du am select rumbastelst, dann wundere dich nicht, dass dann ein Syntax Error o.ä. kommt (Group By ist sehr "empfindlich", um es mal so auszudrücken)

        hm... distinct ??? :), mal sehen werd drüber nachdenken

        über distinct oder id? distinct würde ich hier _nicht_ verwenden, da es Rechentechnisch schlecht ist (das sollte nur 'ne Erklärung sein, warum der count trotzdem funktioniert, obwhol name nicht eindeutig ist)

        Grüße,

        Christian

        1. Hallo,

          tach nochmal

          ich habe hinbekommen das er die anzahl der antorten anzeigt... allerdings nur bei EINER überschrift. er gibt überhaupt nur eine überschrift aus obwohl 4 in der db sind

          das ganze soll die überschriften anzeigen + die anzahl der antworten hier das query:

          $hole = mysql_query("select
                 board.id as id,
                 board.name as name,
                 board.email as email,
                 board.topic as topic,
                 board.date as date,
                 board.admin as admin,

          count(boardansweres.name) as num_ans
                 from board, boardansweres

          where boardansweres.zu = board.id
                 group by

          board.id,
                 board.name,
                 board.email,
                 board.topic,
                 board.date,
                 board.admin

          order by
                 board.id");

          wenn ich die angezeigte topic lösche zeigt er keine mehr an o_0 ?

          ichh verstehs net mehr :)

          Analpha

          1. habe das problem jetzt mit hilfe des #php channels im qn gelöst.

            werde nun mal das query zeigen, so wie es funzt:

            $entry = mysql_query("select board.topic as topic, board.id as id, board.date as date, board.name as name, count(boardansweres.id) as antwort_zahl from board left join boardansweres on boardansweres.zu = board.id group by board.id ORDER BY id");

            nochmal danke an Christian für seine mühe