• Jetzt anmelden. Es dauert nur 2 Minuten und ist kostenlos!

Brauche hilfe beim erstellen eines Kalenders

Status
Für weitere Antworten geschlossen.

ZwoksKorbi

Mitglied
Hallo,

ich bin gerade dabei einen Kalender in PHP zu basteln, und bräuchte nen kleinen Denkanstoß (oder sogar eine Lösung) für ein HTML-Problem.

Den Kalender an und für sich zu generieren haut einwandfrei hin (Code am Ende des Posts). Allerdings geht es jetzt ans eintragen der Termine. Ich schätze mal ihr kennt alle Microsoft Outlook bzw dessen Kalender. Wenn man im Outlook mehrtägige Termine hat, wird der Terminblock über die einzelnen Kalenderblöcke hinaus angezeigt (Bild am Ende des Posts). Wie bekomme ich das am besten in meinen Kalender rein? (mit dein einzelnen Terminen hab ich kein Problem) Bitte, Helft mir!

Kalendercode von mir:
PHP:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
   "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xml:lang="de" lang="de">
<head>
    <title>StBA-IN Belegungsplan</title>
    <style type="text/css">
        body {
    background-color: #0C3A6D;
    height:99%;
    width:99%;
    padding:0px;
    margin:0px;
    font-family:Arial;
}

a:link,a:visited,a:hover,a:active,a:focus{
    text-decoration:none;
    color:black;
}

.header {
    border:0px;
    border-bottom:1px solid #808080;
    background-color:#c0c0c0;
}


.tbl_kalender {
    border: 1px solid #808080;
    background-color: white;
}
td {
    border-width: 1px;
    border-style: solid;
    border-color: #808080;
    text-align: center;
    vertical-align: top;
    padding:0px;
    margin:0px;
}
.td_outofmonth {
    background-color:#dcdcdc;
    min-width: 60px;
    max-width: 130px;
    height: 130px;
    padding:0px;
    margin:0px;
}

.td_inmonth {
    background-color:#c0c0c0;
    min-width: 60px;
    max-width: 130px;
    height: 130px;
    padding:0px;
    margin:0px;
}
    </style>
</head>
<body>
<table style="width:75%;align:center;border-collapse:collapse" class="tbl_kalender">

<colgroup>
    <col width="14,28%"></col>
    <col width="14,28%"></col>
    <col width="14,28%"></col>
    <col width="14,28%"></col>
    <col width="14,28%"></col>
    <col width="14,28%"></col>
    <col width="14.28%"></col>
</colgroup>
    <tr style='font-size=400%'>

        <td class="header">
        &nbsp;
        </td>
        <td class="header">
        <a href="./?mon=2"><span style='font-size:150%'><b>&lt;</b></span></a>&nbsp;        </td>
        <td class="header" colspan="3">
        <span style='font-size:160%'><b>M&auml;rz 2008</b></span>

        </td>
        <td class="header">
            &nbsp;<a href="./?mon=4"><span style='font-size:150%'><b>&gt;</b></span></a>        </td>
        <td class="header">
            &nbsp;
        </td>
    </tr>
    <tr>

        <th>Montag</th>
        <th>Dienstag</th>
        <th>Mittwoch</th>
        <th>Donnerstag</th>
        <th>Freitag</th>
        <th>Samstag</th>

        <th>Sonntag</th>
    </tr>
    <tr>
<td class='td_outofmonth'>&nbsp;</td>
<td class='td_outofmonth'>&nbsp;</td>
<td class='td_outofmonth'>&nbsp;</td>
<td class='td_outofmonth'>&nbsp;</td>
<td class='td_outofmonth'>&nbsp;</td>
<td class='td_inmonth' ><a href="./?tag=1&amp;monat=3&amp;jahr=2008"><div style="width:100%;height:138px;">1</div></a></td>
<td class='td_inmonth' ><a href="./?tag=2&amp;monat=3&amp;jahr=2008"><div style="width:100%;height:138px;">2</div></a></td>
</tr>

<tr>
<td class='td_inmonth' ><a href="./?tag=3&amp;monat=3&amp;jahr=2008"><div style="width:100%;height:138px;">3</div></a></td>
<td class='td_inmonth' ><a href="./?tag=4&amp;monat=3&amp;jahr=2008"><div style="width:100%;height:138px;">4</div></a></td>
<td class='td_inmonth' ><a href="./?tag=5&amp;monat=3&amp;jahr=2008"><div style="width:100%;height:138px;">5</div></a></td>
<td class='td_inmonth' ><a href="./?tag=6&amp;monat=3&amp;jahr=2008"><div style="width:100%;height:138px;">6</div></a></td>
<td class='td_inmonth' ><a href="./?tag=7&amp;monat=3&amp;jahr=2008"><div style="width:100%;height:138px;">7</div></a></td>
<td class='td_inmonth' ><a href="./?tag=8&amp;monat=3&amp;jahr=2008"><div style="width:100%;height:138px;">8</div></a></td>
<td class='td_inmonth' ><a href="./?tag=9&amp;monat=3&amp;jahr=2008"><div style="width:100%;height:138px;">9</div></a></td>
</tr>
<tr>

<td class='td_inmonth' ><a href="./?tag=10&amp;monat=3&amp;jahr=2008"><div style="width:100%;height:138px;">10</div></a></td>
<td class='td_inmonth' ><a href="./?tag=11&amp;monat=3&amp;jahr=2008"><div style="width:100%;height:138px;">11</div></a></td>
<td class='td_inmonth' ><a href="./?tag=12&amp;monat=3&amp;jahr=2008"><div style="width:100%;height:138px;">12</div></a></td>
<td class='td_inmonth' ><a href="./?tag=13&amp;monat=3&amp;jahr=2008"><div style="width:100%;height:138px;">13</div></a></td>
<td class='td_inmonth' ><a href="./?tag=14&amp;monat=3&amp;jahr=2008"><div style="width:100%;height:138px;">14</div></a></td>
<td class='td_inmonth' ><a href="./?tag=15&amp;monat=3&amp;jahr=2008"><div style="width:100%;height:138px;">15</div></a></td>
<td class='td_inmonth' ><a href="./?tag=16&amp;monat=3&amp;jahr=2008"><div style="width:100%;height:138px;">16</div></a></td>
</tr>
<tr>
<td class='td_inmonth' ><a href="./?tag=17&amp;monat=3&amp;jahr=2008"><div style="width:100%;height:138px;">17</div></a></td>

<td class='td_inmonth' ><a href="./?tag=18&amp;monat=3&amp;jahr=2008"><div style="width:100%;height:138px;">18</div></a></td>
<td class='td_inmonth' ><a href="./?tag=19&amp;monat=3&amp;jahr=2008"><div style="width:100%;height:138px;">19</div></a></td>
<td class='td_inmonth' ><a href="./?tag=20&amp;monat=3&amp;jahr=2008"><div style="width:100%;height:138px;">20</div></a></td>
<td class='td_inmonth' ><a href="./?tag=21&amp;monat=3&amp;jahr=2008"><div style="width:100%;height:138px;">21</div></a></td>
<td class='td_inmonth' ><a href="./?tag=22&amp;monat=3&amp;jahr=2008"><div style="width:100%;height:138px;">22</div></a></td>
<td class='td_inmonth' ><a href="./?tag=23&amp;monat=3&amp;jahr=2008"><div style="width:100%;height:138px;">23</div></a></td>
</tr>
<tr>
<td class='td_inmonth' ><a href="./?tag=24&amp;monat=3&amp;jahr=2008"><div style="width:100%;height:138px;">24</div></a></td>
<td class='td_inmonth' ><a href="./?tag=25&amp;monat=3&amp;jahr=2008"><div style="width:100%;height:138px;">25</div></a></td>

<td class='td_inmonth' ><a href="./?tag=26&amp;monat=3&amp;jahr=2008"><div style="width:100%;height:138px;">26</div></a></td>
<td class='td_inmonth' ><a href="./?tag=27&amp;monat=3&amp;jahr=2008"><div style="width:100%;height:138px;">27</div></a></td>
<td class='td_inmonth' style='border:2px solid black; background-color:#fffacd;'><a href="./?tag=28&amp;monat=3&amp;jahr=2008"><div style="width:100%;height:138px;">28</div></a></td>
<td class='td_inmonth' ><a href="./?tag=29&amp;monat=3&amp;jahr=2008"><div style="width:100%;height:138px;">29</div></a></td>
<td class='td_inmonth' ><a href="./?tag=30&amp;monat=3&amp;jahr=2008"><div style="width:100%;height:138px;">30</div></a></td>
</tr>
<tr>
<td class='td_inmonth' ><a href="./?tag=31&amp;monat=3&amp;jahr=2008"><div style="width:100%;height:138px;">31</div></a></td>
<td class='td_outofmonth'>&nbsp;</td>
<td class='td_outofmonth'>&nbsp;</td>
<td class='td_outofmonth'>&nbsp;</td>

<td class='td_outofmonth'>&nbsp;</td>
<td class='td_outofmonth'>&nbsp;</td>
<td class='td_outofmonth'>&nbsp;</td>
</table>le>
Outlook Monatsansicht:
outlookys9.jpg
 
Wenn du die Termine aus MySQL ausliest, kannst du ja eine Spalte 'Tage' einrichten.

Da rein kommt dann z.B. '18,19,20,21'.

Bei der Ausgabe der Tage machst du das zu nem Array,
zählst, wie viele Tage da drin stehen.
Dann wird [Anzahl-Tage] - 1 mal eine Funktion ausgeführt,
die die jeweilige niedrigere Zahl von der jeweiligen höheren subtrahiert.
Wenn das Ergebniss jedes mal 1 ist,
musst du den ersten Termin mit
Code:
display: block;

border-width: 1px;
border-style: solid none solid solid;
border-color: [Farbe];
ausgeben, die mittleren mit
Code:
display: block;

border-width: 1px;
border-style: solid none solid none;
border-color: [Farbe];
und den letzten mit
Code:
display: block;

border-width: 1px;
border-style: solid solid solid none;
border-color: [Farbe];
Alles bis auf border-style kannst du für alle global bestimmen.
Dann steht der Termin zwar nicht über allen Feldern, sondern in jedem,
aber du hast wenigstens diese Leiste wie in genanntem E-Mail-Programm.

Für den richtigen Monat musst du halt noch eine Spalte 'Monat' einrichten.


mfG,
Markus
 
so in der art hatte ichs schon, naja ich werds mal damit probiern.

der ganze kalender wird per php generiert und die termine werden per mysql ausgelesen.

ich hab nen anfangs und nen end-datetime eintrag in der Datenbank
aus den datetimes bzw aus den daraus generierten timestamps rechne ich dann aus wie viel zeit dazwischen is und wenns über 23:59 stunden sin läuft ne routine an für die balken ^nur mal so grob der ablauf
 
Status
Für weitere Antworten geschlossen.
Zurück
Oben