Dienstplan erstellen

Walemann

Mitglied
Hallo alle Miteinander,
Ich habe vor einen Dienstplan in PHP zu erstellen.
Der soll wie folgt aussehen.

Ich habe mehrere Gruppen.

Gruppe1
Gruppe2
Gruppe3
Gruppe4
Gruppe.....

Jede Gruppe soll jeweils 2 Wochen bzw. 14 Tage einen Dienst erledigen.

Ich möchte ein Startdatum angeben wo mir das Datum für die erste Gruppe vorgibt.

Ergebniss soll sein eine Tabelle die z.B. 15 Wochen Dienstplan ausgeben.

06.06.2005 - 19.06.2005 Gruppe 1
20.06.2005 - 03.07.2005 Gruppe 2
04.07.2005 - ..........

Ich hoff man versteht was ich machen möchte.
Vielleicht hat jemand selbst schon so etwas gemacht.
Ich weis inzwischen schon wie ich das theoretisch selber programieren kann aber für das fehlt mir noch die nötigte Erfahrung.

Wenn es möglich ist ohne mysql da hab ich keine zur Verfügung.!!

DANKE SCHON MAL IM VORRAUS.

MFG Walemann
 
Du könntest mit mktime() den Timestamp des Startdatums erzeugen und den Timestamp dann in einer Schleife immer um 2 Wochen erhöhen. Dabei kannst du auch gleichzeitig mit Modulo immer eine der 5 Gruppen zuteilen.

Also ungefähr so:

PHP:
 $timestamp = mktime(0,0,0,7,19,2005);
  for($i=1; $i<=10; $i++){
 	echo date('d.m.Y', $timestamp+60*60*24*14*($i-1))." - ".date('d.m.Y',$timestamp+60*60*24*14*$i-60*60*24)." Gruppe ".(($i-1)%5 + 1)."<br>";
  }
 
Zuletzt bearbeitet:
Danke für die schnelle Antwort
Also ich hätte glaub jetzt komplizierter gedacht aber ich versuche ja auch erst php zu verstehen und zu lernen.


MFG Walemann
 
Zuletzt bearbeitet:
Dienstplan erstellen Erweiterung

Bis jetzt ist es ja ganz gut
aber wie ist es möglich das der Zyklus immer gleich bleibt
wie bisher.

PHP:
  $timestamp = mktime(0,0,0,7,19,2005);
  for($i=1; $i<=10; $i++){
    echo date('d.m.Y', $timestamp+60*60*24*14*($i-1))." - ".date('d.m.Y',$timestamp+60*60*24*14*$i-60*60*24)." Gruppe ".(($i-1)%5 + 1)."<br>";
  }

aber angezeigt soll der Plan erst ab dem heutigen Datum also ich gebe den Start für meinen Zyklus an z.B. 01.01.2005 aber mein Plan wir erst ab dem "heutigen Datum" angezeigt aber dann z.B. 10 Wochen im Vorraus

Und noch was!!
Wie kann ich den Gruppen unterschiedliche Namen geben?
Hab mir das z.B. so vorgestellt das ich einen bereich habe wo ich einstellungen treffen kann.
PHP:
$start   = mktime(0,0,0,6,6,2005);			//Zyklus Startdatum
$wochen	="10";	//Anzahl der Anzuzeigenden Wochendienste ab heute
$gruppenanzahl	 = "4";					//Anzahl der Gruppen.
$Gruppe1 = "hiphop";
$Gruppe2 = "huhu";
$Gruppe3 = "tätä";
$Gruppe4 = "blabla";

for($i=1; $i<=$wochen; $i++){
$gruppenwahl = (($i-1)%$gruppenanzahl + 1);   
echo date('d.m.Y', $start+60*60*24*14*($i-1))." - ".date('d.m.Y',$start+60*60*24*14*$i-60*60*24)."  Gruppe $gruppenwahl<br />";
  }

wie muss ich
PHP:
.......60*24)."$Gruppe".(($i-1)%4 + 1)."<br ........
umstellen das ich das so verwenden kann wie oben beschrieben oder wie muss ich das umprogrammieren hinzufügen ect.

MFG Walemann
 
Zuletzt bearbeitet:
PHP:
 $start   = mktime(0,0,0,6,6,2005);			//Zyklus Startdatum
 $wochen	="10";	//Anzahl der Anzuzeigenden Wochendienste ab heute
 $gruppen = array("hiphop", "huhu", "tätä", "blabla");		//Gruppen stehen in einem Array
 
 $gruppenanzahl = count($gruppen);		   //Anzahl der Gruppen.
 
 for($i=1; $i<=$wochen; $i++){
 	$beginn = $start+60*60*24*14*($i-1);
 	$ende = $start+60*60*24*14*$i-60*60*24;
 	
 	//Der Beginn liegt in der Zukunft -> komplett anzeigen
 	if($beginn > time())		
 		echo date('d.m.Y', $beginn)." - ".date('d.m.Y', $ende)." Gruppe ".$gruppen[($i-1)%$gruppenanzahl]."<br>";
 		
 	//Beginn war bereits, Ende liegt in der Zukunft -> Aktuelles Datum und Enddatum anzeigen
 	else if($ende > time())		
 		echo date('d.m.Y')." - ".date('d.m.Y', $ende)." Gruppe ".$gruppen[($i-1)%$gruppenanzahl]."<br>";
 }

So, du brauchst nur noch Startdatum, Anzahl der Wochen und das Array mit den Gruppen anpassen.
 
Das wird ja immer besser das freut mich DANKE

das mit dem array auf das wär ich glaus so schnell nicht gekommen.

Wegen zeit hät ich noch eine bitte.
Und zwar das script gibt soll mir die eingestellten wochen ausgeben.
Aber bei der anzeige zeigt er beim beispiel nur 7 wochen.

zur Vereinfachung wie ich das meine--> ein Beispiel.

jetzt wird es so angezeigt

Code:
20.07.2005 - 31.07.2005 Gruppe nameA
01.08.2005 - 14.08.2005 Gruppe nameB
15.08.2005 - 28.08.2005 Gruppe nameC
29.08.2005 - 11.09.2005 Gruppe nameD
12.09.2005 - 25.09.2005 Gruppe nameA
26.09.2005 - 09.10.2005 Gruppe nameB
10.10.2005 - 23.10.2005 Gruppe nameC

und dann ist schluss

also keine zehn Wochen.
Ich möchte ja vom heutigen Tag aus 10 volle wochen angezeigt haben sonnst müsste ich ja immer wieder den $start umändern damit wieder was ausgegeben wird.
ich hoffe es wurde soweit verstanden.

MFG Walemann
 
PHP:
      $start = mktime(0,0,0,6,6,2005);			//Zyklus Startdatum
    $wochen = "10";	//Anzahl der Anzuzeigenden Wochendienste ab heute
 $gruppen = array("hiphop", "huhu", "tätä", "blabla");		//Gruppen stehen in einem Array
      
 $gruppenanzahl = count($gruppen);		   //Anzahl der Gruppen.
      
   for($i=1,$j=1; $i<=$wochen,$j<=$wochen; $i++,$j++){
  	$beginn = $start+60*60*24*14*($i-1);
  	$ende = $start+60*60*24*14*$i-60*60*24;
      	
  	//Der Beginn liegt in der Zukunft -> komplett anzeigen
  	if($beginn > time())		
 	 echo date('d.m.Y', $beginn)." - ".date('d.m.Y', $ende)." Gruppe ".$gruppen[($i-1)%$gruppenanzahl]."<br>";
      		
  	//Beginn war bereits, Ende liegt in der Zukunft -> Aktuelles Datum und Enddatum anzeigen
  	else if($ende > time())		
  	 echo date('d.m.Y')." - ".date('d.m.Y', $ende)." Gruppe ".$gruppen[($i-1)%$gruppenanzahl]."<br>";
      		
  	//Keine Ausgabe -> Zähler für Anzeige wieder um 1 verringern	
  	else
  		$j--;
  }

Das geht ganz einfach mit einem zweiten Zähler wieviel schon ausgegeben wurde.
 
Zurück