Ergens waar ik niet helemaal uitkom is het volgende.
Ik heb een lijst in de database als volgt
id - name - datetime
Nu wil ik vervolgens deze items allemaal selecteren en laten zien als volgt
Ik heb een tabel in mijn pagina met datum in het linker kolom en vervolgens tijden
| datum | 9 tot 10 | 10 tot 11 | etc etc..
Vervolgens wil ik de namen die ik uit de database wil halen sorteren en goed zetten aan de hand van datum/tijd.. maar hoe doe ik dit handig? ik kom er even zelf niet meer uit dus als iemand even mee kan/wil denken :)
DATE | 9 to 10 | 10 to 11 | 11 to 12
11-10-2013 | John | Chris | Barbara
Maar mochten er dus meerdere namen op dezelfde tijdstip komen te vallen bijvoorbeeld tussen 9 en 10 dan krijg je dus John en eronder weer de volgende naam. maar ik ben al blij als hij het zoals in het voorbeeldje al doet :)
Volgens mij moet je twee dingen splitsen. Ten eerste heb je het ophalen van je data uit de database, ten tweede heb je de presentatie op het scherm. In menig applicatie zijn die lagen al gescheiden en in dit geval zou ik er zeker voor kiezen om dat te doen. Het ophalen van de data wordt dan vrij eenvoudig
SELECT id, naam, DATE(datetime) AS datum, TIME(datetime) AS tijd
FROM tabel
WHERE....
En in php kan je de presentatie verzorgen. Ik zou er dan gewoon een matrix van maken. Dus door al je opgehaalde records lopen en in feite alleen dit doen:
<?php
$matrix = array();
while( $row = etc ){
$matrix[$row['datum']][$row['tijd'][] = $row['naam'];
}
?>
Vervolgens kan je die matrix omzetten naar een mooie tabel.
Je kan de hele matrix vast ook wel in SQL bouwen, maar persoonlijk zie ik daar het nut niet van in, helemaal niet als je data en presentatie toch al gescheiden hebt, dan wil je helemaal niet dat je datalaag bepaalt hoe de data vorm gegeven wordt.
Natuurlijk kan je zo'n matrix ook in SQL bouwen, en ik zie ook het nut daar niet van in. Databases zijn 2 dimensionaal, alleen ik begrijp jou argumentatie niet helemaal.
Imo heeft een array opbouwen niets met presentatie te maken maar met data, in een MVC zou ik dat in het model doen.
En als ik een beetje ga muggenziften ben je ook niet helemaal consequent, DATE(datetime) en TIME(datetime) is dan ook presentatie.
Als je ziet hoe ik die matrix bouw dan zie je dat dat in feite die matrix al in het model gebouwd wordt. Maar op zich is dat een keuze. Het is een tussenstap tussen de rauwe data die je uit een database haalt en de vorm waarin je het in de view nodig hebt. Of je die tussenstap dus uitvoert in het model, of in de view (in MVC termen) is volgens mij gewoon een persoonlijke keuze.
Het DATE en TIME is inderdaad al inconsequent, op zich niet nodig.
Erwin ik heb een beetje moeite om de array nu netjes in mijn tabel te krijgen Ik heb het volgende tot nu toe. ( de data komen nu goed ) maar ik krijg de namen niet in de juiste vakjes bij de juiste tijd..
En de code als volgt.
<?php
$res = $mysqli->query(
"SELECT name, date(datum) as datum, hour(datum) as tijd
FROM Lijst
ORDER BY datum
");
if(!$res) {
echo "Failed to run query: (" . $mysqli->errno . ") " . $mysqli->error;
}
else {
$matrix = array();
while ($row = $res->fetch_assoc()) {