SQL-Query in Tabelle ausgeben
nightmove
- php
Schönen guten Abend.
Ich hänge gerade dabei einen SQL-Query in ein Array einzulesen. Hört sich erstmal einfach an, ist es jedoch in meinem Falle nicht.
Ich bekomme aus meinem Query folgende Struktur:
Tag | Stunde | Details
14.01. | 1 | lal
15.01. | 1 | lala
16.01. | 1 | lalal
14.01. | 2 | tes
15.01. | 2 | test
usw.
$schedule = array();
while($row=$db->fetchRow())
{
if(!in_array($row['ndate'], $schedule))
{
$schedule[$row['ndate']]= array();
for($a=1; $a<=$max_hours['maxhours']; $a++)
{
$schedule[$row['ndate']][$a] = "";
}
}
$schedule[$row['ndate']][$row['nhour']] = $row['nsubject']." ".$row['nteacher']." ".$row['nroom'];
}
Diese Schleife macht folgendes:
Es prüft ob ein bestimmtes Datum schon in dem Hauptarray ist. Wenn nicht, dann lege das Datum als Array in dem Hauptarray an.
Danach soll es die jeweiligen Stunden in die Datumsarrays einfüllen.
Struktur:
array()
|------------Datumsarray(z.B. 14.01.2008)
|-----------Stunde 1 => Wert
|-----------Stunde 2 => Wert
|------------Datumsarray(z.B. 15.01.2008)
|-----------Stunde 1 => Wert
usw.
Folgende Struktur bekomme ich geliefert:
Array
(
[21.01.2008] => Array
(
[1] =>
[2] =>
[3] =>
[4] =>
[5] =>
[6] =>
[7] =>
[8] => im ba E2
[9] =>
[10] =>
)
[22.01.2008] => Array
(
[1] =>
[2] =>
[3] =>
[4] =>
[5] =>
[6] =>
[7] =>
[8] => re sm R5
[9] =>
[10] =>
)
[23.01.2008] => Array
(
[1] =>
[2] =>
[3] =>
[4] =>
[5] =>
[6] =>
[7] =>
[8] =>
[9] =>
[10] => im ba E2
)
[24.01.2008] => Array
(
[1] =>
[2] =>
[3] =>
[4] =>
[5] =>
[6] =>
[7] =>
[8] => re sm R5
[9] =>
[10] =>
)
[25.01.2008] => Array
(
[1] =>
[2] =>
[3] =>
[4] =>
[5] =>
[6] =>
[7] =>
[8] => im ba E2
[9] =>
[10] =>
)
[26.01.2008] => Array
(
[1] =>
[2] =>
[3] =>
[4] =>
[5] =>
[6] =>
[7] =>
[8] => re sm R5
[9] =>
[10] =>
)
)
Es schreibt also nur die für den jeweiligen Tag letzten Stunden.
Z.B. die 8St., 8St., 10St., usw.
Es muss aber jede schreiben.
Weiß jemand wo mein Denkfehler liegt ?
Ich danke im Voraus
Hi,
$schedule = array();
while($row=$db->fetchRow())
{
if(!in_array($row['ndate'], $schedule))
{
$schedule[$row['ndate']]= array();
in_array sucht im Array nach einem Element mit bestimmtem Wert.
Das Datum ist bei dir aber kein Wert, sondern Schluessel.
Also verwende entweder array_key_exists(), oder ueberpruefe gleich mit isset(), ob $schedule[$row['ndate']] bereits existiert.
MfG ChrisB
Servus.
Das mag ja gu t sein, dass der Test hingt... aber das erklärt noch nicht, warum meine Stunden nicht ordnungsgemäß geschrieben werden.
Ich meine, wenn der Test komplett falsch wäre, dann würde ja gar kein Datumsarray geschrieben werden, oder ??
Ich danke.