Archief - Weergave data in een lijst

Het archief is een bevroren moment uit een vorige versie van dit forum, met andere regels en andere bazen. Deze posts weerspiegelen op geen enkele manier onze huidige ideeën, waarden of wereldbeelden en zijn op sommige plaatsen gecensureerd wegens ontoelaatbaar. Veel zijn in een andere tijdsgeest gemaakt, al dan niet ironisch - zoals in het ironische subforum Off-Topic - en zouden op dit moment niet meer gepost (mogen) worden. Toch bieden we dit archief nog graag aan als informatiedatabank en naslagwerk. Lees er hier meer over of start een gesprek met anderen.

brutal

Legacy Member
Ik heb een tabel als volgt

id
jaar
naam

Nu wil ik graag een lijst weergeven als volgt:

jaar1: naam1, naam3, naam6
jaar2: naam2, naam4, naam5

Ik kan enkel dit krijgen:

jaar1: naam1
jaar2: naam2
jaar1: naam3
...

$q = "SELECT * FROM tabel ORDER BY jaar ASC, naam ASC";

kan er iemand mij op de goede weg helpen ?
alvast bedankt !

Firebird

Legacy Member
Je kan dezelfde query behouden en in code een tweedimensionele array opbouwen.
PHP:
$lijst = array();
// voor elk record:
$lijst[$jaar][] = $naam;

nadien hoef je enkel je array te overlopen:
PHP:
foreach($lijst as $jaar => $namen) {
  echo $jaar . ' ';
  foreach($namen as $naam) {
    echo $naam . ' ';
  }
  echo '<br/>';
}

Of dit de beste oplossing is ga je aan de php-kenners moeten vragen, maar het zou moeten werken ;).

Een alternatief is om de db het werk te laten doen: een GROUP BY query op jaar zodat je alle mogelijke jaren hebt, en dan per jaar een query om de namen op te halen.

GivenToFly

Legacy Member
Je kan met de GROUP_CONCAT() functie werken. Het nadeel is dat je een deel van je presentatie naar je query haalt (en die dus moet aanpassen als je bv. ipv een komma een nieuwe lijn wil als separator) of nog met een extra explode moet werken (en dat kan ev. ook problemen geven met separators bij varchars)
Het archief is een bevroren moment uit een vorige versie van dit forum, met andere regels en andere bazen. Deze posts weerspiegelen op geen enkele manier onze huidige ideeën, waarden of wereldbeelden en zijn op sommige plaatsen gecensureerd wegens ontoelaatbaar. Veel zijn in een andere tijdsgeest gemaakt, al dan niet ironisch - zoals in het ironische subforum Off-Topic - en zouden op dit moment niet meer gepost (mogen) worden. Toch bieden we dit archief nog graag aan als informatiedatabank en naslagwerk. Lees er hier meer over of start een gesprek met anderen.
Terug
Bovenaan