Here is my current code. I\'m trying to display data from three separate queries into a single table with multiple columns. Is my while statement wrong here? It\'s printing 1 ta
This will require opening three separate connections to MySQL
aтв running three queries, each in its own connection.
You better rewrite your query as this
SELECT user_id,
(
SELECT COUNT(*)
FROM posts p
WHERE p.user_id = u.user_id
AND p.date >= '2010-06-01'
AND p.date < '2010-07-01'
) AS june_count,
(
SELECT COUNT(*)
FROM posts p
WHERE p.user_id = u.user_id
AND p.date >= '2010-07-01'
AND p.date < '2010-08-01'
) AS july_count,
(
SELECT COUNT(*)
FROM posts p
WHERE p.user_id = u.user_id
AND p.date >= '2010-08-01'
AND p.date < '2010-09-01'
) AS aug_count
FROM users u
The while loop is taking an OR clause. This means if the first one returns true, it won't execute the second one.
$data = array();
while($row = mysql_fetch_assoc($july)) {$data['row'][] = $row;}
while($row = mysql_fetch_assoc($aug)) {$data['row2'][] = $row;}
while($row = mysql_fetch_assoc($sept)) {$data['row3'][] = $row;}
$count = count($data['row']);
for($i=0;$i<=$count;$i++)
{
echo '<tr>';
if(($i % 3) == 1)
{
echo "<td>" . $data['row3'][$i]['cUsername'] . "</td>";
echo "<td>" . $data['row3'][$i]['postCount'] . "</td>";
}else if(($i % 2) == 1)
{
echo "<td>" . $data['row2'][$i]['cUsername'] . "</td>";
echo "<td>" . $data['row2'][$i]['postCount'] . "</td>";
}else /*Never try find remainder of 1 as theres always a multiple of 1*/
{
echo "<td>" . $data['row'][$i]['cUsername'] . "</td>";
echo "<td>" . $data['row'][$i]['postCount'] . "</td>";
}
echo '</tr>';
}
By fetching the results individually into a local array instead of trying to fetch 3 different rows at the same time you should do them individually and store them in a local variable, just unset the variable after words if its a large array.
my code is offered as untested.