---
# System prepended metadata

title: Dynamischer Kalender beginnend bei Montag
tags: [cfmlnotes]

---

###### tags: `cfmlnotes`

# Dynamischer Kalender beginnend bei Montag

Die Kalenderanzeige funktioniert jetzt mit der korrekten Monatsdarstellung für Montag bis Sonntag und nicht Sontag bis Samstag. Ich habe also über eine Liste loopen lassen, wie du siehst. (JUHUUUUUUU ICH HABE DAS GESCHAFFT!!)

Jetzt stellt sich die Frage wie ich es schaffe das die Variable "AktuellesDatum" nicht jedes mal von ---now()--- überschrieben wird, sondern den Wert behält den sie bekommt, nachdem man sie durch Drücken eines der beiden Submit-Buttons verändert hat.

https://cffiddle.org/app/file?filepath=81c399f0-15db-471a-b980-4f9bc239773e/f760775e-9846-4e9b-aed9-d3e50d35e164/ada73c38-7a2b-4432-a846-f356bcc62a01.cfm

```htmlmixed=!
<html>
     <head>
         <title>Meine Kalenderansicht</title>
     </head>

     <body>
         <h1> K A L E N D E R </h1>


<!--juhu-->



<!-- An dieser Stelle muss geprüft werden, ob die veränderte Variable "AktuellesDatum" schon exsistiert. Falls das der Fall ist, darf Zeile 16 nicht ausgeführt werden, damit man nicht nur 3 Monate anzeigen lassen kann. -->
<cfset AktuellesDatum = now()>
<cfset AktuellesDatum1 = AktuellesDatum>

<!-- Hier wird überprüft ob der "Submit-Input: MonatAendern" bereits einen Wert hat. Es gibt 2 Möglichkeiten: 1.Zurück, 2.Weiter. In beiden Fällen werden entweder 31 Tage addiert, oder subtrahiert. -->
<cfif IsDefined("MonatAendern")>
	<cfif MonatAendern EQ "Zurueck">
		<cfset AktuellesDatum = AktuellesDatum - CreateTimeSpan(31,0,0,0)>
	</cfif>
		
	<cfif MonatAendern EQ "Weiter">
		<cfset AktuellesDatum = AktuellesDatum + CreateTimeSpan(31,0,0,0)>
	</cfif>
</cfif>

<!-- Alle folgenden Variablen, werden in Abhängigkeit von "AktuellesDatum" erzeugt -->
<cfset AktuellerMonat=Month(AktuellesDatum)>
	<cfoutput>#AktuellerMonat#</cfoutput><br>	
<!--"+ CreateTimeSpan(31, 0, 0, 0) einen Monat später-->
<cfset AktuellerTag=DateFormat(AktuellesDatum, "d")>
	<cfoutput>Heute ist der #aktuellerTag#. Tag des Monats.</cfoutput>

	<cfset AktuellesJahr=Year(AktuellesDatum)>
	<cfoutput>#AktuellesJahr#</cfoutput><br>

<cfset TageImAktuellenMonat=DaysInMonth(AktuellesDatum)>
	<cfoutput>#TageImAktuellenMonat#</cfoutput><br>

<!-- Hier wird das Startdatum festgelegt. Das ist immer der 1.Tag im Monat. -->
<cfset StartDatum = CreateDate(AktuellesJahr, AktuellerMonat, 1)> 
<!-- Hier wird festgelegt welcher Wochentag das Startdatum hat. Der Wochentag kann die Zahlen 1,..,7 annehmen, wobei 1 = Sonntag und 7 = Samstag, entspricht. -->
<cfset StartWochentag = DayOfWeek(StartDatum)> 
	<cfoutput>#StartWochentag#</cfoutput>
<!-- Hier wird das Zieldatum festgelegt. Das ist immer der letzte Tag im Monat. -->	
<cfset ZielDatum = StartDatum + TageImAktuellenMonat-1>
<!-- Hier wird festgelegt welcher Wochentag das Zieldatum hat. Der Wochentag kann die Zahlen 1,..,7 annehmen, wobei 1 = Sonntag und 7 = Samstag, entspricht. -->
<cfset ZielWochentag = DayOfWeek(ZielDatum)>
<cfset TagesSchrittweite = CreateTimeSpan(1, 0, 0, 0)> 
<cfset AktuellerMonatString = MonthAsString(AktuellerMonat)>

<table>
	<caption align=top><cfoutput> #AktuellerMonatString# </cfoutput></caption>
	<head><th>MO</th><th>DI</th><th>MI</th><th>DO</th><th>FR</th><th>SA</th><th>SO</th></head><br>
	<body>
		<tr>
			<cfloop list="2,3,4,5,6,7,1" index="Wochentag">
				<cfif StartWochentag EQ Wochentag>
					<cfbreak>
				<cfelse>
					<td bgcolor=#BDBDBD>  </td>
				</cfif>
			</cfloop>

		<cfloop from="#StartDatum#" to="#ZielDatum#" index="loopDate" step="#TagesSchrittweite#"> 
			
			<cfif Day(loopDate) EQ Day(AktuellesDatum) AND Month(loopDate) EQ Month(aktuellesDatum)>
				<td><b><cfoutput>#Day(loopDate)#</cfoutput></b></td> 
			<cfelse>
				<td><cfoutput>#Day(loopDate)#</cfoutput></td> 
			</cfif>
			<cfif (DayOfWeek(loopDate)) EQ 1>
				</tr>
			</cfif>
		</cfloop>

		<cfloop index="i" from="#ZielWochentag#" to="7" >
			<td bgcolor=#BDBDBD>  </td>
		</cfloop>
	</body>
</table>

<form action>
		<label for="MonatZurueck">
			<input type="submit" value="Zurueck" name="MonatAendern">
		</label>
				
		<label for="MonatWeiter">
			<input type="submit" value="Weiter" name="MonatAendern">
		</label>
</form>

<br>

     </body>
</html>
```
