[PHP+MSSQL] output naar tabel
Het is me eindelijk gelukt om met PHP een MSSQL database te benaderen.
Met een simpele query haal ik alle tijdstippen van één dag op waarin mensen dingen gepland hebben.
Met wat HTML code zou je hier wel iets moois van kunnen maken. (is ook redelijk gelukt).
Wat echter nog niet gelukt is -en vandaar ook dit topic- is dat ik graag in de tabel in alle rijen ALLE uren wil weergeven, en vervolgens alleen data neerzetten in de uren waar ook data van is.
Dus een beetje als volgt:
Code (php)
1
2
3
4
5
6
7
2
3
4
5
6
7
09:00 | koffie drinken | Maria
10:00 | |
11:00 | |
12:00 | tennis | Frank
13:00 | |
14:00 | winkelen | Iris + Kees
15:00 | |
10:00 | |
11:00 | |
12:00 | tennis | Frank
13:00 | |
14:00 | winkelen | Iris + Kees
15:00 | |
Ik gebruik dit om door de data te loopen:
Code (php)
Hoe kan ik dit het beste aanpakken? Ik wil dus ook die lege regels zodat er een duidelijker overzicht ontstaat.
Alvast bedankt,
Sjef
Edit:
Script tussen code-tags gezet voor betere leesbaarheid. Gelieve dit voortaan zelf te doen. Zie ook het tags-overzicht in de 'Veelgestelde Vragen' van de site.
Gewijzigd op 17/05/2016 11:55:43 door - Ariën -
Helemaal niemand? :(
Hieronder mijn oplossing.
In de database wordt "tijd" opgeslagen als 00:00:00.
Voor de volledigheid worden ook de connect en query statements getoond.
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
<table border=1>
<?php
$db = new MySQLi('localhost', 'username', 'password', 'database');
$querySelect = "SELECT * FROM afspraken ORDER BY tijd ASC, naam ASC";
$result = $db->query( $querySelect );
$hourBegin = 6;
$hourEnd = 20;
while ( $row = $result->fetch_assoc() ) {
while ($hourBegin < (int)$row['tijd']) {
echo '<tr><td>' . ($hourBegin < 10 ? '0' : '') . $hourBegin . ':00</td><td colspan=2></td></tr>';
$hourBegin = $hourBegin + 1;
}
echo '<tr>';
echo '<td>' . substr($row['tijd'], 0, 5) . '</td>';
echo '<td>' . $row['naam'] . '</td>';
echo '<td>' . $row['wat'] . '</td';
echo '</tr>';
$hourBegin = (int)$row['tijd'] + 1;
}
while ( $hourEnd >= $hourBegin ) {
echo '<tr><td>' . ($hourBegin < 10 ? '0' : '') . $hourBegin . ':00</td><td colspan=2></td></tr>';
$hourBegin = $hourBegin + 1;
}
?>
</table>
<?php
$db = new MySQLi('localhost', 'username', 'password', 'database');
$querySelect = "SELECT * FROM afspraken ORDER BY tijd ASC, naam ASC";
$result = $db->query( $querySelect );
$hourBegin = 6;
$hourEnd = 20;
while ( $row = $result->fetch_assoc() ) {
while ($hourBegin < (int)$row['tijd']) {
echo '<tr><td>' . ($hourBegin < 10 ? '0' : '') . $hourBegin . ':00</td><td colspan=2></td></tr>';
$hourBegin = $hourBegin + 1;
}
echo '<tr>';
echo '<td>' . substr($row['tijd'], 0, 5) . '</td>';
echo '<td>' . $row['naam'] . '</td>';
echo '<td>' . $row['wat'] . '</td';
echo '</tr>';
$hourBegin = (int)$row['tijd'] + 1;
}
while ( $hourEnd >= $hourBegin ) {
echo '<tr><td>' . ($hourBegin < 10 ? '0' : '') . $hourBegin . ':00</td><td colspan=2></td></tr>';
$hourBegin = $hourBegin + 1;
}
?>
</table>
Gewijzigd op 24/05/2016 18:28:05 door Adoptive Solution
Met opmaak : http://adoptive.esy.es/afspraken/
Zonder opmaak : http://adoptive.esy.es/afspraken/afspraak.php
En met sql : http://adoptive.esy.es/afspraken/afspraak.txt
Ik kom er alleen (na wat proberen :)) achter dat het niet werkt omdat ik MSSQL gebruik, en jij volgens mij MySQL...
Krijg keer op keer foutmeldingen.
Met vr gr,
Sjef
Klopt, je zult wel de functies moeten vertalen. Ik ken Mssql niet zo, maar ik denk dat de vertaal slag niet zo heel complex zult zijn.
Uiteindelijk gaat het om de twee while's die de legen uren genereren.
Gewijzigd op 25/05/2016 21:46:05 door Adoptive Solution