Hilfe bei Quelltext
Stanload
- php
0 Dieter Raber0 Tobias Kloth0 Vinzenz0 wahsaga0 Stanload
Hallöchen,
kann mir vllt. jemand von Euch sagen, was die folgenden beiden Zeilen Quelltext aussagen?
$start_col = date('w',mktime(0,0,0,$month,1,$year))-1;
$rows = ($start_col == 5 || $start_col == -1) ? ceil($days/7)+1 : ceil($days/7);
Bis denn
Stanload
Hallo Stanload,
$start_col = date('w',mktime(0,0,0,$month,1,$year))-1;
Der Variablen $start_col wird eine numerische Repraesentation eines Wochentages zugewiesen, normalerweise 0 fuer Sonntag usw., in diesem Fall aber Wochentag -1. http://de3.php.net/manual/de/function.date.php
$rows = ($start_col == 5 || $start_col == -1) ? ceil($days/7)+1 : ceil($days/7);
Wenn $start_col = 5 ist, oder $start_col = -1 ist, hat $row den Wert $days geteilt 7, das ganze aufgerundet und +1, andernfalls $days geteilt 7. http://de2.php.net/manual/de/language.operators.php
Gruß,
Dieter
Hallo Stanload,
$start_col = date('w',mktime(0,0,0,$month,1,$year))-1;
was haben deine Recherchen bezüglich des Wertes 'w' als ersten Parameter für die Funktion date und der Funktion mktime ergeben?
$rows = ($start_col == 5 || $start_col == -1) ? ceil($days/7)+1 : ceil($days/7);
um die Zeile zu verstehen, solltest du http://de2.php.net/language.operators.comparison (der Teil unter der Tabelle) sowie http://de2.php.net/ceil kennen - was genau verstehst du an den Zeilen denn nicht?
Grüße aus Nürnberg
Tobias
Hallo Stanload
kann mir vllt. jemand von Euch sagen, was die folgenden beiden Zeilen Quelltext aussagen?
$start_col = date('w',mktime(0,0,0,$month,1,$year))-1;
Meine Glaskugel sagt mir:
$year enthält eine Jahreszahl.
$month enthält einen Monat
$days enthält eine Anzahl von Tagen
Schau' Dir nun im [http://de3.php.net/manual/de/function.mktime.php@title=Handbuch] an, was
mktime(0,0,0,$month,1,$year)
daraus macht: mktime erzeugt einen UNIX-Timestamp für den ersten des angegebenen Monats im angegebenen Jahr, 0 Uhr, 0 Minuten und 0 Sekunden.
Auf dieses Ergebnis wird date losgelassen, siehe
date():
d.h. nun haben wir den numerischen Wert des Wochentags dieses Monatsersten. Der Wertebereich liegt dabei zwischen 0 und 6.
Zum guten Schluss wird noch 1 subtrahiert, so dass in Abhängigkeit vom Wochentag des Monatsersten in einem bestimmten Jahr, $start_col einen Wert zwischen -1 und 5 besitzt.
$rows = ($start_col == 5 || $start_col == -1) ? ceil($days/7)+1 : ceil($days/7);
Ist der Monatserste ein Samstag ($start_col ist 5) oder Sonntag ($start_col ist -1), dann wird $rows der Wert des Ausdrucks
ceil($days/7) + 1 zugewiesen,
bei allen anderen Wochentagen
ceil($days/7)
Was ceil() zurückgibt, weißt Du nach der Handbuchlektüre bestimmt.
Ein Beispiel: Ist die Anzahl der Tage z.B. gleich 8, so liefert ceil($days/7) 2 zurück. d.b. bei Samstagen und Sonntagen enthält $rows den Wert 3, an anderen Wochentagen als Monatsersten den Wert 2.
Warum das so ist und ob meine Glaskugel mir die richtigen Informationen gegeben hat, das weiß ich nicht. Allerdings solltest Du in Zukunft bei solchen Fragen den Quellcode mit Hilfe des Handbuchs selbst analysieren können.
Freundliche Grüße
Vinzenz
hi,
kann mir vllt. jemand von Euch sagen, was die folgenden beiden Zeilen Quelltext aussagen?
$start_col = date('w',mktime(0,0,0,$month,1,$year))-1;
was mktime macht, kannst du im manual nachsehen.
was date macht, kannst du im manual nachsehen.
(http://www.php.net/manual/de/ref.datetime.php)
noch was unklar?
ist doch eigentlich ganz einfach - mit mktime wird hier der timestamp für den ersten tag des angegebenen monats/jahres ermittelt.
das kleine 'w' bei date ergibt für dieses datum die nummer des wochentages, 0 für sonntag bis 6 für samstag.
von dieser nummer wird dann noch eins abgezogen, und dann hast du das ergebnis in $start_col stehen.
$rows = ($start_col == 5 || $start_col == -1) ? ceil($days/7)+1 : ceil($days/7);
hier wird jetzt abgefragt (Trinitäts-operator als alternative schreibweise für eine if-abfrage), ob die soeben ermittelte nummer gleich 5 oder gleich -1 ist. ob das abziehen von eins im schritt vorher für die verwedung an anderer stelle günstiger ist, kann hier nicht beurteilt werden - andernfalls hätte man auf diese subtraktion natürlich auch verzeichten, und hier stattdessen auf 6 oder 0 abfragen können. also kurz: abfrage auf samstag oder sonntag. es wird also an dieser stelle wohl schlicht ermittelt, ob der anfang des betreffenden monats auf ein wochende fällt.
und abhängig davon wird jetzt ein wert für $rows (vermutlich die anzahl zeilen für eine kalender-anzeige des betreffenden monats) ermittelt - $days (vermutlich anzahl tage des monats) durch sieben, abgerundet - und plus 1 oder eben auch nicht.
je nachdem, womit der monat anfängt - wochenende oder nicht - wird wohl bei der darstellung dieses kalenders eine wochenzeile mehr oder weniger benötigt.
that's it.
gruß,
wahsaga
Hallo,
und Euch allen vielen Dank für die schnelle Hilfe :-).
Nun versteh ich hoffentlich ein bissle mehr von diesem (fremden) Kalender-Skript, auch wenn ich den Fehler noch nicht wirklich gefunden habe :-(.
Bis denn
Stanload