kleines board
AnalphaBestie
- php
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
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?
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
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
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
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