Ik heb het volgende probleem: Ik heb een forum en op de pagina waar alle posts te zien zijn geef ik de gebruikersnaam, tijd en posts etc. weer in een while loop. Nu wil ik ook het aantal posts per gebruiker weergeven. Dit moet echter in een aparte query gezien mijn datamodel. Hoe krijg ik dit voor elkaar?

Ik heb de volgende php code:

<?php
while($rij = mysql_fetch_array($result2)) {
    $reactie = smiley(str_replace(" ", "&nbsp;", wordwrap(str_replace("\n", "<br>", $rij["reactie"]), 90, "<br>")));
    echo("<tr>
            <td width=\"20%\" rowspan=\"2\" valign=\"top\"><font color=\"#0000FF\">" .$rij["auteur"]. "</font><br>
            <font size=\"2\"><i>" .$rij["type"]. "</i><br>
            Posts: #" .$rij["aantal"]. "</font></td>");
    if($_SESSION["gnaam"] == $rij["auteur"] || isset($_SESSION["admin"])) {
        echo "<td><a href=\"edit_post.php?nr=" .$rij["nr"]. "\"><img src=\"images/edit.gif\" border=\"0\" alt=\"Edit\" align=\"right\"></a>";
    }
    else echo "<td>";
    echo "<font size=\"2\">Geplaatst op: ".$rij["datum"]."</font>";
    if(isset($rij["dt_edit"])) {
        echo "<br><font size=\"1\">Dit bericht is aangepast op " .$rij["dt_edit"]. " door " .$rij["name_edit"]. "</font></td></tr>";
    }
    else echo "</td></tr>";
    echo("<tr>
            <td valign=\"top\" width=\"80%\">" .$reactie. "</td></tr>");
}
?>

Hier
Posts: #" .$rij["aantal"]. "

moet dus het aantal posts komen te staan.
p.s. in $rij zitten alle reacties per topic en de user type etc alleen $rij["aantal"] bestaat dus niet aangezien die niet in dezelfde query kan.
Dit moet echter in een aparte query gezien mijn datamodel. Hoe krijg ik dit voor elkaar?

Welk datamodel? Ik zie nergens een datamodel.

Ik vermoed overigens dat je slechts 1 (sub-) query nodig hebt en dat je die absoluut niet in je while-lus wilt gaan uitvoeren. Het heeft geen enkele zin om keer op keer dezelfde query met dezelfde resultaten uit te gaan voeren. Of moet de boel soms langzamer worden?
zie ook: http://www.phphulp.nl/forum/showtopic.php?cat=12&id=56977&page=
Oftewel:
Tabel reactie:
<id> int (dit is het topic id)
nr int AUTO_INCREMENT
reactie varchar
<auteur> varchar (fkey van gebruikersnaam)
datum DATETIME

Tabel users:
id int AUTO_INCREMENT
<gebruikersnaam> varchar
voornaam varchar
achternaam varchar
email varchar
lid_sinds DATETIME
type enum

Tabel onderwerp:
id int
onderwerp varchar (naam vd topic)
<auteur> varchar (weer foreign key met gebruikersnaam)
datum datetime

p.s. ik ben me bewust van soms wat onduidelijke benaming in het model maar gelieve te focussen op het probleem.
<id> int (dit is het topic id)
Maar dan zeker wel zonder de < en >.
uhhh deze had ik dus beter topic_id kunnen noemen en is de foreign key van onderwerp.id. 'nr' is in deze tabel de primairy key. Ik wilde dat ik toen net zoveel wist als nu dan had ik zeker andere namen gekozen maar dat los ik nog wel op.

@pgFrank het zou best kunnen dat ik de query niet in de while lus moet uitvoeren maar ik zou niet weten hoe ik het zou moeten doen, aangezien er per user dus een ander aantal reacties moet komen te staan (eigenlijk net zoals hier). Iemand die me de goeie richting op kan werken want ik ben bang dat ik er met mijn beperkte kennis zelf niet op kom.
ik heb een oplossing gevonden:

<?php
while($rij = mysql_fetch_array($result2)) {
$query3 = "SELECT auteur, COUNT(*) AS aantal
FROM reactie
WHERE auteur = '" .$rij["auteur"]. "'
GROUP BY auteur";
$result3= mysql_query($query3) or die(mysql_error());
$rij2 = mysql_fetch_array($result3);
$reactie = smiley(str_replace(" ", "&nbsp;", wordwrap(str_replace("\n", "<br>", $rij["reactie"]), 90, "<br>")));
echo("<tr>
<td width=\"20%\" rowspan=\"2\" valign=\"top\"><font color=\"#0000FF\">" .$rij["auteur"]. "</font><br>
<font size=\"2\"><i>" .$rij["type"]. "</i><br>
Posts: #" .$rij2["aantal"]. "</font></td>");
if((isset($_SESSION["gnaam"]) && $_SESSION["gnaam"] == $rij["auteur"]) || isset($_SESSION["admin"])) {
echo "<td><a href=\"edit_post.php?nr=" .$rij["nr"]. "\"><img src=\"images/edit.gif\" border=\"0\" alt=\"Edit\" align=\"right\"></a>";
}
else echo "<td>";
echo "<font size=\"2\">Geplaatst op: ".$rij["datum"]."</font>";
if(isset($rij["dt_edit"])) {
echo "<br><font size=\"1\">Dit bericht is aangepast op " .$rij["dt_edit"]. " door " .$rij["name_edit"]. "</font></td></tr>";
}
else echo "</td></tr>";
echo("<tr>
<td valign=\"top\" width=\"80%\">" .$reactie. "</td></tr>");
}
?>

iemand een betere suggestie?
oeps ik wilde editen ipv quoten :\ en wel als volgt:
edit: ben bang dat dit hetgeen is wat pgFrank bedoelt en dat dit tijdverlies is!
Niemand een suggestie hoe het beter kan?
Nou begin eens met het netjes uit schrijven.
Gebruik enkele ' ipv " dan hoef je niet \
dat zou al een stuk schelen

ow ja font wordt eigenlijk niet meer ondersteund
met enkele ' kan ik toch geen variabelen gebruiken?
Toegegeven dr zijn wel een aantal regels waar ik ' zou kunnen gebruiken ipv " maar dat lost de \" niet op!

edit: en hoe moet ik font oplossen dan?
ik zou het zo doen, vind ik wat duidelijk

<?php
while($rij = mysql_fetch_array($result2)){
    
	$query3 	= 	"SELECT auteur, COUNT(*) AS aantal
	                FROM reactie
	                WHERE auteur = '" .$rij["auteur"]. "'
	                GROUP BY auteur";
    
	$result3	= 	mysql_query($query3) or die(mysql_error());
	$rij2 		= 	mysql_fetch_array($result3);
    $reactie 	= 	smiley(str_replace(" ", "&nbsp;", wordwrap(str_replace('\n', '<br>', $rij['reactie']), 90, '<br>')));
?>
    
	<tr>
       <td width="20%" rowspan="2" valign="top">
       		<font color="#0000FF">"	<?php echo $rij["auteur"]; 		?></font><br>
       		<font size="2"><i>		<?php echo $rij["type"]; 		?></i><br>
            Posts: #" 				<?php echo $rij2["aantal"]; 	?></font>
       </td>
<?php
       
    if((isset( $_SESSION["gnaam"]) && $_SESSION["gnaam"] == $rij["auteur"]) || isset($_SESSION["admin"])) {
    ?>    
    	<td>
    		<a href="edit_post.php?nr=" <?php echo $rij["nr"]; ?>">
    		<img src="images/edit.gif" 
    		border="0" alt="Edit" align="right">
    		</a>
    		
<?php    		
    }
    else
    ?> 
    	<td>
    		<font size="2">Geplaatst op: <?php echo $rij["datum"]; ?></font>
<?php 
   
    if(isset($rij["dt_edit"])) {
    ?>
  
    	<br>
    		<font size="1">
    			Dit bericht is aangepast op <?php echo $rij["dt_edit"]; ?> 
    			door <?php echo $rij["name_edit"]; ?> 
    		</font>
    	</td>
    	</tr>
<?php //enzovoort    	
    }
    else echo "</td></tr>";
    echo("<tr>
            <td valign=\"top\" width=\"80%\">" .$reactie. "</td></tr>");
}
?> 

Reageren