Lineaire Gegevens in Matrix zetten

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Jordi van der Meer

Jordi van der Meer

27/04/2011 11:29:06
Quote Anchor link
Ik heb een complexe query waar (als voorbeeld) het volgende uitkomt:

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.
 
PHP hulp

PHP hulp

05/12/2020 16:09:47
 
Roger Keulen

Roger Keulen

27/04/2011 19:16:36
Quote Anchor link
Waarom heb je niet gewoon een tabel waar de data in staat i.p.v. een complexe query?

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.
 
Jordi van der Meer

Jordi van der Meer

27/04/2011 20:42:29
Quote Anchor link
Dank voor de reactie, dit ga ik morgen zeker proberen, dat leerling, cijfer verhaal was een voorbeeld, het gaat hier om complexe vertrouwelijke informatie, het is de bedoeling om voor 1 partij de grootste gebruikers van een website op een rij te zetten.
Gewijzigd op 27/04/2011 20:43:52 door Jordi van der Meer
 



Overzicht Reageren

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.