Beste allemaal,

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:


09:00 | koffie drinken | Maria
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:


<?php
        while( $obj = sqlsrv_fetch_object( $result )) {
          echo $obj->TimeBegin; 
          echo $obj->Wat;
          echo $obj->Naam.' <br>';
        }
?>


Hoe kan ik dit het beste aanpakken? Ik wil dus ook die lege regels zodat er een duidelijker overzicht ontstaat.

Alvast bedankt,

Sjef


Voor de gelegenheid maar even aangemeld.

Hieronder mijn oplossing.

In de database wordt "tijd" opgeslagen als 00:00:00.

Voor de volledigheid worden ook de connect en query statements getoond.

<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>

Hartelijk dank voor je reactie en de mooie code.

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.
Dan aanpassen voor mssql.

Uiteindelijk gaat het om de twee while's die de legen uren genereren.

Reageren