Open mosbth opened 2 years ago
Om man kämpar med uppgifterna så finns det ett par videor som hjälper hur man kan tänka kring problemlösningen och de första raderna kod. Videorna är troligen bra för att få en känsla av hur koden kan se ut, hur man tänker kring problemlösning.
Tipset är att inte gå direkt på videorna utan att själv försöka först och se hur långt man kommer, använd videorna som livlinor när det kör ihop sig.
Man kan även titta på videorna när man själv är klar med uppgiften, för att se en alternativ lösning på uppgifterna.
Kmom03: Mikael visar hur man kan komma igång och lösa uppgiften med friday.php
Kmom03: Kom igång att lösa uppgiften med månadskalendern och month.php
Kmom03: Hur tänka när man skall loopa igenom alla dagar i en månad och skriva ut en tabell month.php
Att räkna med datum kan göras med timestamp och antal sekunder för en dag, det ger rätt datum när man räknar med timestampet som grund.
En annan variant är att räkna via funktionen strtotime()
där man kan hitta ett datum utifrån en timestamp och en relativ sträng. här är ett exempel på en webbsida som får in ett datum och längst ned ser du hur man "räknar ut" vilket datum måndag/söndag är i veckan eller månadens första sista dag och föregående/nästa månad.
Det spännande med strtotime()
är att man kan utföra denna beräkning med strängar. Kodan bakom webbsidan kan se ut så här.
$date = $_GET["date"] ?? date('Y-m-d');
$timestamp = strtotime($date);
$firstDayInWeek = date('Y-m-d', strtotime("Monday this week", $timestamp));
$lastDayInWeek = date('Y-m-d', strtotime("Sunday this week", $timestamp));
$firstDayInMonth = date('Y-m-d', strtotime("first day of this month", $timestamp));
$lastDayInMonth = date('Y-m-d', strtotime("last day of this month", $timestamp));
$previousMonth = date('Y-m-d', strtotime("first day of previous month", $timestamp));
$nextMonth = date('Y-m-d', strtotime("first day of next month", $timestamp));
Prova gärna med ett eget litet kodexempel för att se hur flexibelt du kan ange ett datum relativt ett timestamp. Kanske är denna typen av kod något som kan förenkla arbetet i kmom03 och i kmom04. Men det finns andra varianter där man räknar med datum "för hand" som fungerar lika bra.
Nu kan jag göra min lilla kalender. Jag gör det stegvis.
Först skriver jag ut månadens namn och året i en html tabell, tillsammans med antal dagar i den månaden.
$daysInMonth = date('t', $timestamp);
Sedan lägger jag till länkarna så att jag kan klicka mellan föregående och nästa månad. Här tar jag användning av mina variabler för $previousMonth
och $nextMonth
.
Nu är trixet att skapa en loop från månades första dag till den sista. Men jag vet att det börjar på 1 och slutar på $daysInMonth
så en for-loop låter som en rimlig konstruktion. Jag kan göra enklaste möjliga för att veta att loopen blir rätt.
$calStr = "";
for ($i = 1; $i <= $daysInMonth; $i++) {
$calStr .= "<tr>";
$calStr .= "<td>$i dagens nummer</td>";
$calStr .= "</tr>";
}
Fint, det där var iallafall en start.
I kmom03 kodar vi PHP med en sida "Today is Friday?" och en månadskalender.
Kika här för ett par exempel på hur "Is it Friday?" kan se ut.
Kika här för ett par exempel på hur "Månadskalender" kan se ut.
Här kommer ett par reflektioner från de som jobbat igenom uppgiften. Eventuellt kan det ge ledtrådar samt ge tips till vilka delar som kan upplevas som svår i kursmomentet.