Lineaire Gegevens in Matrix zetten
Leerling, Vak, Cijfer
L V C
1 1 8
1 2 7
1 3 7
2 1 7
2 2 8
2 3 8
3 1 9
3 2 7
3 3 5
Dit wil ik weergeven in een overzicht zoals dit:
X | 1 2 3 (leerling)
-----------
1 | 8 7 9
2 | 7 8 7
3 | 7 8 5
(vak)
Kan dit in PHP? Dat je zeg maar een soort matrix maakt van data die onder elkaar staat?
Toevoeging op 27/04/2011 11:29:19:
In werkelijkheid gaat het om bijna 40.000 rows, die in een matrix moeten komen van 66 x 606 vakken. Dus een query per vakje (SELECT C WHERE L = 1 AND V = 1) gaat niet werken, dat duurt te lang.
Ik moet echt in 1x alles zien te ordenen.
En php heb je er niet zo voor nodig, je maakt een sortering op Vak en dan Leerling.
Dus je resultaat begint bij vak1 en leerling1 en gaat daarna naar leerling2,3,etc...
tot je bij vak2 komt en dan herhaalt zich de hele zooi weer zich..
Dus zo iets van....
SELECT ........
FROM ......
ORDER BY Vak ASC, Leerling ASC
En dan ga je lussen door je resulaat...
<code>
$Result = mysql_query($SQL);
$MATRIX = array();
if($Result!=false) {
$VakActief = false;
while ($Row = mysql_fetch_assoc($Result)) {
// Haal het Vak en Leerling uit het resultaat
$Vak = $Row["Vak"];
$Leerling = $Row["Leerling"];
if ($VakActief<>$Vak) { $MATRIX[$Vak] = array(); $VakActief = $Vak; }
$MATRIX[$Vak][$Leerling] = $Row["Cijfer"];
}
mysql_free_result($Result);
}
return $MATRIX;
</code>
Maar wat ga je met deze data doen? Uitprinten en je muur behangen?
Je kunt beter meerdere rapporten maken. Zoals per VAK (Voor de leraar) en per LEERLING (Voor de leerlingen) maar ook punten....(Voor de decaan). Dus welke vak heeft de hoogste en laagste punten, absoluut en/of gemiddeld, etc.. etc..
Maar zo'n grid met 39996 lijkt me niet echt handig. (Maar kan me vergissen natuurlijk)
Groetjes: En suc6 er mee, en laat maar horen hoe het gaat. Of leg uit wat je maken wilt.... En post die complexe query ook maar meteen... dan laat ik je zien hoe je het resultaat weer op kunt slaan in een nieuwe of tijdelijke tabel.
Gewijzigd op 27/04/2011 20:43:52 door Jordi van der Meer