Ik probeer zelf een forum te maken met php, maar loop tegen een probleempje aan. Ik heb dus boards en threads, en leden die berichten kunnen plaatsen. Nu wil ik onder de naam van het lid het aantal posts laten zien.
Ik zal eerst even uitleggen hoe mijn database eruit ziet.
-leden
-board(id,naam,oprichter,categorie)
-thread(id,onderwerp,bericht,boardid,tijd,oprichter)
-reply(id,naam,bericht,tijd,threadid)
Hier is dan de manier hoe ik het probeer op te lossen:
<?php
$sql = 'SELECT * FROM `thread` where `id` = \'' . $_GET['id'] . '\'';
$result = mysql_query($sql)or die (mysql_error());
//$inhoudCategorie = mysql_result($result , 0);
while($thread = mysql_fetch_assoc($result))
{
echo '<h1>' . $thread['onderwerp'] . '</h1>';
?>
<div class="postborder">
<table border="0">
<tr>
<td>
<table width="150" border="0">
<tr>
<td align="center">
<?php
echo $thread['oprichter'];
?>
</td>
</tr>
<tr>
<td align="center">
<img src="img/ava.gif">
</td>
</tr>
<tr>
<td align="center">
<?php
$teller=0;
$sql = 'SELECT * FROM `thread` where `oprichter` = \'' . $thread['oprichter'] . '\'';
$result = mysql_query($sql)or die (mysql_error());
while($counter = mysql_fetch_assoc($result))
{
$teller++;
}
$sql = 'SELECT * FROM `reply` where `naam` = \'' . $thread['oprichter'] . '\'';
$result = mysql_query($sql)or die (mysql_error());
//$inhoudCategorie = mysql_result($result , 0);
while($counter2 = mysql_fetch_assoc($result))
{
$teller++;
}
//echo $teller;
//einde teller
echo $teller;
?>
</td>
</tr>
</table>
</td>
<td width="400" valign="top">
<div class="post">
<?php
echo stripslashes(nl2br($thread['bericht']));
?>
</div>
</td>
</tr>
</table>
</div>
<?php
}
$sql = 'SELECT * FROM `reply` where `threadid` = \'' . $_GET['id'] . '\'';
$result = mysql_query($sql)or die (mysql_error());
//$inhoudCategorie = mysql_result($result , 0);
while($reply = mysql_fetch_assoc($result))
{
?>
<div class="postborder">
<table border="0">
<tr>
<td>
<table width="150" border="0">
<tr>
<td align="center">
<?php
echo $reply['naam'];
?>
</td>
</tr>
<tr>
<td align="center">
<img src="img/ava.gif">
</td>
</tr>
<tr>
<td align="center">
<?php
$teller=0;
$sql = 'SELECT * FROM `thread` where `oprichter` = \'' . $reply['naam'] . '\'';
$result = mysql_query($sql)or die (mysql_error());
while($counter = mysql_fetch_assoc($result))
{
$teller++;
}
$sql = 'SELECT * FROM `reply` where `naam` = \'' . $reply['naam'] . '\'';
$result = mysql_query($sql)or die (mysql_error());
//$inhoudCategorie = mysql_result($result , 0);
while($counter2 = mysql_fetch_assoc($result))
{
$teller++;
}
//echo $teller;
//einde teller
echo $teller;
?>
</td>
</tr>
</table>
</td>
<td width="400" valign="top">
<div class="post">
<?php
echo stripslashes(nl2br($reply['bericht']));
?>
</div>
</td>
</tr>
</table>
</div>
<?php
}
?>
De eerste while haalt dus heel eenvoudig de post van de threadstarter uit de database. Die while wordt dus maar 1x doorlopen(kan hem er net zo goed uithalen, ik weet het :P ), en daaronder zie je dus 2 while loopjes die de replies telt, maar ook de posts van de threadstarter, anders krijgt de threadstarter geen posts, en dit werkt.
Daaronder staat dus de while voor de replies. In die while heb ik ook weer 2 while loopjes staan die alles telt, maar dan loopt hij maar één keer de while loop door. Als ik deze 2 while's eruit haalt, krijg ik wel meer posts te zien.
Ik denk dat het komt omdat ik een while in een while heb, maar ik dacht dat dat wel zou werken. Maarja, wat zijn de oplossingen hiervoor?