Rudolf Hammerschlager: wochenübersicht programmieren - denkfehler?

hallo forum!

ich möchte mir gerne einen kalender wie outlook programmieren.
dazu benötige ich eine wochenansicht, die ich schon geschafft habe.
ich habe alle eventualitäten (monatswechsel, etc.) einprogrammiert.

nun habe ich alle termine in einer tabelle mit folgenden spalten eingetragen:

id, personid, beginnzeit, endzeit, start, ende
id = auto increment id
personid = zuordnung zu einem kontakt
beginnzeit = z.B. 10:00
endzeit = z.B. 17:30
start = 2005-23-11
ende = 2005-23-11

mit folgendem code erstelle ich meine übersichtstabelle, die
dann von 8 bis 18 uhr geht (hier ohne header):
for($x = 8; $x <= 18; $x++)
{
$x2 = $x+1;
print "
  <tr align='left' valign='top' bgcolor='#BACAD7' class='text'>
    <td height='30' align='center' valign='middle'>$x:00 - $x2:00</td>
    <td width='114' height='30>&nbsp;</td>
    <td width='114' height='30'>&nbsp;</td>
    <td width='114' height='30'>&nbsp;</td>
    <td width='114' height='30'>&nbsp;</td>
    <td width='114' height='30'>&nbsp;</td>
    <td width='114' height='30'>&nbsp;</td>
    <td width='114' height='30'>&nbsp;</td>
  </tr>
";
}

so, nun ist mir gerade eingefallen, dass ich ja die halben stunden auch darstellen muss. außerdem komm ich einfach auf keinen grünen zweig, wie ich die einzelfelder eines termines eintragen soll.

ich hab mir zur vorgangsweise folgendes überlegt:
1. wieviele termine pro tag sind eingetragen?
   anzahl = anzahl der spalten
2. bei jedem durchlauf überprüfen, ob in der aktuellen halben stunde
   etwas stattfindet, dann jeweils bgcolor='FFFFFF'
   der aktuellen zelle
3. $endstunde-$startstunde = anzahl der durchläufe für die stunden
   aber was ist mit den halben stunden?

so und jetzt hänge ich. mir fehlt sozusagen der letzte finale knopf
damit ich das ganze umsetzen kann.

ich bin dankbar für jeden tipp, jede hilfe oder jeden verbesserungsvorschlag oder jede kritik.

vielleicht denke ich auch komplett falsch?
sorry, ich steh an.

danke für all eure bemühungen!

  1. Hallo Rudolf

    beginnzeit = z.B. 10:00
    endzeit = z.B. 17:30
    start = 2005-23-11
    ende = 2005-23-11

    Da würde sich die Funktion date(); sehr sehr gut eigenen
    Verwende doch statt 4 Spalten 2 ;)
    Ungefair so:
    beginn = 1111111111;
    ende = 1111115111;

    Das '1111111111' ist ein angedeuteter UNIX-Timestamp.

    Die aktuelle Zahl (Sekunden seit 01.01.1970) bekommt man mit:
    time();
    oder
    date('U');

    mit folgendem code erstelle ich meine übersichtstabelle, die
    dann von 8 bis 18 uhr geht (hier ohne header):
    for($x = 8; $x <= 18; $x++)
    {
    $x2 = $x+1;
    print "
      <tr align='left' valign='top' bgcolor='#BACAD7' class='text'>
        <td height='30' align='center' valign='middle'>$x:00 - $x2:00</td>
        <td width='114' height='30>&nbsp;</td>
        <td width='114' height='30'>&nbsp;</td>
        <td width='114' height='30'>&nbsp;</td>
        <td width='114' height='30'>&nbsp;</td>
        <td width='114' height='30'>&nbsp;</td>
        <td width='114' height='30'>&nbsp;</td>
        <td width='114' height='30'>&nbsp;</td>
      </tr>
    ";
    }

    kleiner Tipp am Rande ;)
    http://smarty.php.net
    Das sollte alle 'echo'/'print' aufrufe eleminieren ^^

    1. wieviele termine pro tag sind eingetragen?
         anzahl = anzahl der spalten

    Nein das würd ich nich so machen...
    Mach lieber eine Spalte (in die die Daten kommen) mit nem ordentlichen rowspan ;)
    Die linke Spalte wäre dann 30 Minuten Raster oder so.

    Und dann als div einen Balken ziehen (jenachdem wie lang der Termin is)
    Das wäre dann floor((beginn - ende) / 60) (Minuten)

    würde dann in meinem Kopf so aussehen ;) :

      
    +---------------+------------+------------+-----  
    |               | Montag     | Dienstag   | ...  
    +---------------+------------+------------+-----  
    | 08:00 - 08:30 | +--------+ |            |  
    | 08:30 - 09:00 | | Schule | |            |  
    | 09:00 - 09:30 | | text   | | +--------+ |  
    | 09:30 - 10:00 | |        | | | Schule | |  
    | 10:00 - 10:30 | +--------+ | |        | |  
    .  
    .  
    | 17:30 - 17:30 | +--------+ | |          |  
    | 17:30 - 18:00 | | Party  | | +--------+ |  
    
    
    1. bei jedem durchlauf überprüfen, ob in der aktuellen halben stunde
         etwas stattfindet, dann jeweils bgcolor='FFFFFF'
         der aktuellen zelle

    s.o.

    1. $endstunde-$startstunde = anzahl der durchläufe für die stunden
         aber was ist mit den halben stunden?

    s.o.

    ich bin dankbar für jeden tipp, jede hilfe oder jeden verbesserungsvorschlag oder jede kritik.

    Keine Ursache ;)

    danke für all eure bemühungen!

    Gern geschehen !

    Gruß
    Jojo