Hallo,

wie kan me helpen dit op te lossen.
Ik heb gebruikers die op verschillende datums punten krijgen. Niet elke gebruiker krijgt op elke datum punten




Hoe krijg ik dit met PHP? Ik heb het nu als volgt, waardoor de 2 punten van Jan op 13-01 automatisch naar Piet gaan bij uitvoer van de code:
<?php
$query_3= mysql_query("SELECT * FROM scores GROUP BY user ORDER BY user") or die(mysql_error());

echo "<table border='1'>";

echo "<tr><td>&nbsp;</td>";

while($row_3 = mysql_fetch_array($query_3)){

$_ENV['user'] = $row_3['user'];

echo "<td>". $_ENV['user'] . "</td>";

}

echo "</tr>";

$query_4= mysql_query("SELECT * FROM scores GROUP BY datum") or die(mysql_error());

while($row_4 = mysql_fetch_array($query_4)){
echo "<tr>";

echo "<td>". $row_4['datum']. "</td>";

$query_5 = mysql_query("SELECT * FROM scores WHERE datum = '".$row_4['datum']. "' ORDER BY user") or die(mysql_error());

while($row_5 = mysql_fetch_array($query_5)){

echo "<td>". $row_5['score']. "</td>";

}

echo "</tr>";

}

echo "</table>";


?>
Je gebruikt GROUP BY op de verkeerde manier, dat hoor je alleen in combinatie met aggegrate functies te gebruiken. In dit topic is een soortgelijke vraag gesteld, omgebouwd krijg je zoiets:

SELECT ud.datum, ud.user, COALESCE(us.score, 0) AS score
FROM
(SELECT DISTINCT d.datum, u.user FROM score AS d, score AS u) AS ud
LEFT JOIN score AS us ON ud.user = us.score AND ud.datum = us.datum
ORDER BY ud.datum DESC, ud.user

Resultaat:

2013-01-13	Jan	2
2013-01-13	Kees	0
2013-01-13	Piet	0
2013-01-12	Jan	9
2013-01-12	Kees	6
2013-01-12	Piet	8
2013-01-11	Jan	7
2013-01-11	Kees	3
2013-01-11	Piet	5

Dit resultaat kan je gebruiken om de tabel te gegeneren

Reageren