[PHP/MySQL] Uren tabel maken, geen mysql uur? dan leeg veld

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Hallo,
beetje rare titel misschien maar dat is in heel kort mijn probleem.
Ik probeer een tabel te maken met uren:
8:00 - 8:30
8:30 - 9:00
9:00 - 9:30
etc (tot 24u)

Nu heb ik een database tabel met daarin een veld time_start & time_end:
bv:
time_start = 8:30
time_end = 10:00

Dan moet die data dus in de tabel komen te staan.
Als er geen data is voor dat huidig uur dan maakt hij gewoon een lege rij aan (zodanig dat je wel de uren ziet maar geen data erin).

Nu heb ik dus al zitten te proberen maar ik heb nog geen goede "logica" gevonden om dit te doen waardoor ik steeds vast loop.

Enkele voorbeeldjes:
-- ik weet dat dit zeker niet "goede" code is maarja, zoals ik al zei, ik vind de logica niet echt
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
39
40
41
42
        while ($event = mysql_fetch_object($result)) {
            list($hours_start,$min_start)   = split(':', $event->time);
            $ev_hours_start[$hours_start]   = $hours_start;
            $ev_min_start[$hours_start]     = $min_start;
            
            list($hours_end,$min_end)       = split(':', $event->time_end);
            $ev_hours_end[$hours_end]       = $hours_end;
            $ev_min_end[$hours_end]         = $min_end;         
            
            $ev_text[$hours_start]          = $event->text;
        }
        
        $hour   = '8';
        $min    = '30';
        while ($hour_end<'24') {
            if ($min_end == '30') {
                $min_end = '00';
                $hour_end   = $hour+1;
            }
            else {
                $min_end = '30';
                $hour_end   = $hour;    
            }

            // show event
            if (($ev_hours_start[$hour] >= $hour) AND ($hour <= $ev_hours_end[$hour]))
                echo "<tr bgcolor='$bgcolor'><td>$hour:$min - $hour_end:$min_end</td><td>event</td><td>$ev_text[$hour]</td></tr>";
            else
                echo "<tr bgcolor='$bgcolor'><td>$hour:$min - $hour_end:$min_end</td><td>open</td><td>open</td></tr>";
            
                
                
                
            if ($min_end == '00') {
                $hour++;
                $min = '00';
            }
            else {
                $min = '30';
            }
        }
    }


Iemand die me misschien beetje opweg kan helpen?
ik kan dit niet in de while (mysql_fetch) lus doen omdat ik daar nooit die lege rijen in krijg (denk ik toch)
maar als ik het in een andere lus doe moet ik eerst mijn mysql data in een array oid stoppen met een index die dus later overeenkomt met een betreffend uur ofzo?

Alvast bedankt :)

Acties:
  • 0 Henk 'm!

  • NMe
  • Registratie: Februari 2004
  • Laatst online: 09-09 13:58

NMe

Quia Ego Sic Dico.

Waarom maak je een tabel met daarin 48 entries voor de tijden? (24x heel uur, 24x half uur) Waarom sla je niet gewoon je data op met behulp van DATETIME of TIME velden? Dan kun je eenvoudigweg een BETWEEN-query gebruiken. :?

'E's fighting in there!' he stuttered, grabbing the captain's arm.
'All by himself?' said the captain.
'No, with everyone!' shouted Nobby, hopping from one foot to the other.


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
-NMe- schreef op woensdag 24 augustus 2005 @ 00:08:
Waarom maak je een tabel met daarin 48 entries voor de tijden? (24x heel uur, 24x half uur) Waarom sla je niet gewoon je data op met behulp van DATETIME of TIME velden? Dan kun je eenvoudigweg een BETWEEN-query gebruiken. :?
bedankt, ik zal eens gaan kijken hoe dat zit