BlackBoard » Design, Programmierung & Entwicklung » Programmieren » Monatsanzeige mit kleinen Extras » Hallo Gast [Anmelden|Registrieren]
Letzter Beitrag | Erster ungelesener Beitrag Druckvorschau | An Freund senden | Thema zu Favoriten hinzufügen
Neues Thema erstellen Antwort erstellen
Zum Ende der Seite springen Monatsanzeige mit kleinen Extras
Autor
Beitrag « Vorheriges Thema | Nächstes Thema »
Qeeed
Neuling

Dabei seit: 26.06.2006
Beiträge: 19

Monatsanzeige mit kleinen Extras       Zum Anfang der Seite springen

Hi,

Ich würde gerne mit PHP in einer Tabelle sämtliche Tage eines Monats mit besonderer Formatierung für Wochenenden und Feiertage aus einer DB anzeigen.

Als erstes müsste man mal schauen, wie man mit PHP einen Monat so anzeigen kann, dass man Wochenenden und Feiertage speziell formatieren kann. Aber wie weiss PHP den Namen des Monats bzw erkennt Wochenenden oder Feiertage?

mfg
22.08.2006 18:51 Qeeed ist offline Beiträge von Qeeed suchen
low.society low.society ist männlich
Neuling

images/avatars/avatar-2207.jpg

Dabei seit: 06.08.2006
Beiträge: 20
Herkunft: Bielefeld

      Zum Anfang der Seite springen

schau dir doch einfach mal nen normalen kalender an .. z.b. auf deinem handy.

+++ Bild konnte nicht geladen werden +++

ob du nun ganz links mit sonntag oder montag anfängst, is ja egal.
mit so einer struktur weißt du zumindest immer, was du fürs WE speziell formatieren musst, nämlich immer die spalten samstag und sonntag.

ich glaube nicht, dass es in PHP eine Funktion für Feiertage gibt, zumal die auch von Land zu Land und auch innerhalb unsrer Bundesländer unterschiedlich sind.
Das wirds in keiner Programmiersprache geben.
Die Feiertage würde ich in ne Datenbank oder ne Textdatei schreiben und jeweils bei der Erzeugung der Tabelle auslesen. Da du die jeweiligen Zahlen (die Tage im Monat) wohl per Schleife in "Template Tabelle" einträgst, kannst du bei jedem Durchlauf prüfen, ob der Tag ein Feiertag ist, oder nicht und dann evtl. die Zelle markieren.

EDIT: Zur Zuordnung der Wochentage wird es in PHP entsprechende Datumsfunktionen geben. Wäre schlimm, wenns nicht so wäre Augenzwinkern

EDIT: mit date("l") (das kleine L) bekommst du den Namen des aktuellen Wochentags....mit date("l", int timestamp) halt den Wochentag für den angegebenen Timestamp
http://de.php.net/manual/de/function.date.php

__________________
Einstein ist tot, Newton ist tot, und mir ist auch schon schlecht.

Dieser Beitrag wurde 3 mal editiert, zum letzten Mal von low.society: 22.08.2006 19:24.

22.08.2006 19:17 low.society ist offline E-Mail an low.society senden Homepage von low.society Beiträge von low.society suchen
LX LX ist männlich
El Comandante en Jefe


images/avatars/avatar-2290.gif

Dabei seit: 25.11.2001
Beiträge: 5.372
Herkunft: Berliner Bronx

Achtung       Zum Anfang der Seite springen

Die getdate()-Funktion liefert den Wochentag eines bestimmten Datums mit.

Anbei mal ein älteres Kalenderscript von mir, welches u.a. hier unten links zu sehen ist. Das Ding gibt lediglich den Kalender tabellarisch aus, beinhaltet also keinerlei Terminplanungsoptionen und zeigt auch keine Feiertage an. Außerdem ist das natürlich noch recht dreckig mit HTML in PHP gecodet, würde ich heute sicherlich anders machen Augenzwinkern

Aber vielleicht hilft's dir dennoch auf die Sprünge:

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:
43:
44:
45:
46:
47:
48:
49:
50:
51:
52:
53:
54:
55:
56:
57:
58:
59:
60:
61:
62:
63:
64:
65:
66:
67:
68:
69:
70:
71:
72:
73:
74:
75:
76:
77:
78:
79:
80:
81:
82:
83:
84:
85:
86:
87:
88:
89:
90:
91:
92:
93:
94:
95:
96:
97:
98:
99:
100:
101:
102:
103:
104:
105:
106:
107:
108:
109:
110:
111:
112:
<?php

/**
 * cal.php (LX' Calendar module)
 *
 * # shows a calendar of the current month
 * # highlights the current day
 * # can be styled by referring to CSS-ID 'cal'
 *
 *****************************************************
 *
 * Changelog:
 * 2005-05-16: fixed bug when months start on a sunday
 * 2005-04-12: first version
 *
 *****************************************************
 */

// get current date
$datum getdate();

// sunday should be the seventh day of the week, not the zeroth
if ( $datum 'wday' ] == $datum 'wday' ] = 7;

// table head
$kalender = <<<Ausgabe
<table cellspacing="0" cellpadding="0" class="cal">
<tr>
    <th colspan="7">${datum['month']} ${datum['year']}</th>
</tr>
<tr>
    <th>M</th>
    <th>T</th>
    <th>W</th>
    <th>T</th>
    <th>F</th>
    <th>S</th>
    <th>S</th>
</tr>
<tr>

Ausgabe;

$tag 1;

// get first of month
$first getdate mktime 000$datum 'mon' ], 1$datum 'year' ] ) );

// empty table cells until first day of month
if ( $first 'wday' ] == $first 'wday' ] = 7;
for ( $wday 1$wday $first 'wday' ]; $wday++ )
{
    $kalender .= "    <td></td>\n";
}

// fill rest of the cells of the first week
for ( ; $wday <= 7$wday++)
{
    // current date
    if ( $datum 'mday' ] == $tag )
        $kalender .= "    <td><em><b>$tag</b></em></td>\n";
    // weekend
    else if ( $wday == || $wday == )
        $kalender .= "    <td><b>$tag</b></td>\n";
    // every other day
    else
        $kalender .= "    <td>$tag</td>\n";

    $tag++;
}

$kalender .= "</tr>\n";

// fill in days for the rest of the month
while ( $tag 32 )
{
    $kalender .= "<tr>\n";

    for ( $wday 0$wday 7$wday++ )
    {
        // empty cells filling the final week
        if ( $tag >= 32 )
            $kalender .= "    <td></td>\n";
        // current day
        else if ( $datum 'mday' ] == $tag )
            $kalender .= "    <td><em><b>$tag</b></em></td>\n";
        // weekend
        else if ( $wday == || $wday == )
            $kalender .= "    <td><b>$tag</b></td>\n";
        // every other day
        else
            $kalender .= "    <td>$tag</td>\n";

        $tag++;
    }

    $kalender .= "</tr>\n";
}

$kalender .= "</table>";

// if month has less than 31 days, empty the superfluous cells
for ( $i 35$i 28$i-- )
{
    if ( !checkdate $datum 'mon' ], $i$datum 'year' ] ) )
        $kalender str_replace($i" "$kalender);
}

// print out calendar
echo $kalender;

?>


Anmerkungen dazu:
  • Für PHP beginnt die Woche mit dem nullten Tag, was ein Sonntag ist.
  • Wenn du die Namen von Monaten und Wochentagen in Deutsch haben willst, aber nicht fest einprogrammiert, so gibt's dafür die Funktion setlocale(), mit der du die Lokalisierung setzen kannst und die entsprechende Funktion strftime(), um ein Datum entsprechend der gegenwärtig eingestellten Lokalisierung auszugeben.


__________________
JS-Games.de - Misled Scripting Skills Gone Mad | Meine Filmkritiken | Urban Photography
Kommt mal in den IRC-Channel: irc.eu.freenode.net | Port 6667 | #blackboard

"Ever tried. Ever failed. No matter.
Try again. Fail again. Fail better."
- Samuel Beckett

22.08.2006 19:33 LX ist offline E-Mail an LX senden Homepage von LX Beiträge von LX suchen
Qeeed
Neuling

Dabei seit: 26.06.2006
Beiträge: 19

Themenstarter Thema begonnen von Qeeed
      Zum Anfang der Seite springen

damn nice! dankeschön!
22.08.2006 22:52 Qeeed ist offline Beiträge von Qeeed suchen
Baumstruktur | Brettstruktur
Gehe zu:
Neues Thema erstellen Antwort erstellen
BlackBoard » Design, Programmierung & Entwicklung » Programmieren » Monatsanzeige mit kleinen Extras

Forensoftware: Burning Board 2.3.6, entwickelt von WoltLab GmbH