Werken met lijsten/verzamelingen

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Ohes ohes

ohes ohes

28/10/2013 15:26:07
Quote Anchor link
Hi,

Ik werk binnen een MVC model en heb wat moeite met het weergeven van lijsten. Zeker als ik ze wil groeperen of sorteren.

Voorbeeld: Ik heb een school. In de school zitten meerdere groepen. In elke groep zitten meerdere leerlingen. Als ik nu een lijst op het scherm wil hebben van alle leerlingen per klas. Hoe kan ik dat nu het beste verwerken in mijn classes. Uiteraard wil ik van zowel de groepen als de leerlingen informatie tonen (+ proces informatie als het totaal).

Resultaat op het scherm:

[groep 1]
(Juf Joke)
Leerling A - 5 jaar
Leerling B - 6 jaar
Leerling C - 5 jaar
Totaal 3 leerlingen
Gemiddelde leeftijd 5,3 jaar

[groep 2]
(Meester Piet)
Leerling D - 7 jaar
Leerling C - 7 jaar
Leerling E - 8 jaar
Leerling F - 7 jaar
Totaal 4 leerlingen
Gemiddelde leeftijd 7,3 jaar

Kan iemand mij uitleggen hoe dit principe werkt? Welke methoden staan er in de models, welke in de controller? Hoe verpak ik de gegevens het beste om ze te versturen naar de view?

Thanks
 
PHP hulp

PHP hulp

17/11/2024 18:43:55
 
Reshad F

Reshad F

28/10/2013 17:17:17
Quote Anchor link
Je controller bepaalt alleen welke weg je bewandelt wat wordt aangeroepen etc.

Je model daar wordt bepaald wat er opgehaald wordt. de methodes kan je natuurlijk zelf invullen maar uiteindelijk moet je query goed zijn om de juiste informatie op te halen.

je kan in je model een methode hebben als

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
<?php
public method getAverageStudentAge($class) {
  // hier je logica

 return $age;
}

?>


Dit wordt teruggeven aan de controller en die geeft het weer aan de view. zo hoef je in je view alleen maar een paar echo en misschien nog ergens een loopje neer te zetten en klaar.
 
Ohes ohes

ohes ohes

28/10/2013 17:58:38
Quote Anchor link
Hi Reshad,

Tot zo ver snap ik het.

Maar wat als ik nu een lijst met leerlingen wil hebben. Waar zou de methode moeten staan en hoe is die dan opgebouwd? Of is er een extra class "leerlingenlijst" nodig?
 
Reshad F

Reshad F

28/10/2013 20:37:12
Quote Anchor link
Je moet het zo zien. je hebt meerdere modellen. die elk hun eigen taak hebben. Wil je bijvoorbeeld een lijst met leerlingen dan maak je een model

Student_model

Hierin heb je methodes omtrent het student.

dus getStudentName, getStudentAge, getStudentClass etc etc.

Voor een lijst met leerlingen kan je bijvoorbeeld een model hebben die verschillende lijsten ophaalt. denk hierbij aan gesorteerd op ... naam? leeftijd? etc etc.
 
Ohes ohes

ohes ohes

29/10/2013 14:49:49
Quote Anchor link
Ah, juist ja. Dus voor het ophalen van gegroepeerde resultaten nieuwe models maken.

En in het geval van de "school < groep < leerling"

Elk van deze models stelt één school, groep of leerling voor met zijn eigen methoden e.d.
model: school
model: groep
model: leerling

En dan voor een lijst/verzameling (leerlingen):
model: leerlingen_queries (met query's voor het ophalen van lijsten in verschillende vormen) *

Als ik nu een query wil maken zoals ik beschreef in mijn eerste post (overzicht leerlingen per groep). Zou je die query dan plaatsen in het model "leerlingen_lijst", of in een ander model, bijvoorbeeld "groep_queries"?

* soms is het handig om een array met platte gegevens terug te krijgen. In andere gevallen is het prettiger om een array met objecten terug te krijgen. Hoe doe je dit? Maakt model leerlingen_queries dan de objecten "leerling" aan? Wat is hier de correcte manier om het aanmaken van objecten aan te maken?
 
Reshad F

Reshad F

29/10/2013 21:40:29
Quote Anchor link
Wat je zou kunnen doen is voor elke mogelijke manier van ophalen een methode met zijn eigen query,

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
<?php

$leerling
= new Leerling();

$leerling->getAll(); // geef alle studenten
$leerling->getById(2) // geeft leerling terug met id 2

?>


dit is nu even een platte voorbeeld en als je het echt heel goed zou willen doen dan zou je natuurlijk een klasse hebben die alleen maar het ophalen en teruggeven verzorgt en de andere klasse die de juiste query maakt etc.
 



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.