Hallo Leute.
Bin php-Anfänger und schreibe gerade an meinem ersten grösseren Skript. Das Skript soll ein Schichtplaner werden, der wie ein
Kalender aufgebaut ist. Pro Zeile wird ein Mitarbeiter angezeigt, der dann in den Spalten (Monatstag) pro tag eine Schicht zugewiesen bekommt.
Es sollen pro Monat eine Tabelle entstehen. Die Schichten folgen einem bestimmten Rhytmus der sich immer wiederholt. Natürlich sollen die
Schichten dann in der nächsten Tabelle, also jeden Monat, weiter ausgegeben werden.
Es funktioniert auch teilweise, aber ich habe immer einen Wurm drin, dass die einzelnen Schichten in der nächsten Tabellenzeile (beim nächsten
Mitarbeiter) weitergeschrieben werden oder, dass einige Zellen ausgelassen werden oder der falsche Rhytmus ausgegeben wird.
Seit gestern versuch ich das Problem zu lösen, und ich will auch keine komplettlösung vorgekaut haben. Nur raucht mir schon der Kopf und ich komme
einfach nicht weiter. Daher bin ich für jeden Tipp oder Verbesserungsvorschlag dankbar, den ihr mir geben könnt.
Ich poste hier nur die Ausgabe der Tabellen aka Monatskalender, da nur der Zicken macht.
Danke schonmal für eure Geduld.
Bin php-Anfänger und schreibe gerade an meinem ersten grösseren Skript. Das Skript soll ein Schichtplaner werden, der wie ein
Kalender aufgebaut ist. Pro Zeile wird ein Mitarbeiter angezeigt, der dann in den Spalten (Monatstag) pro tag eine Schicht zugewiesen bekommt.
Es sollen pro Monat eine Tabelle entstehen. Die Schichten folgen einem bestimmten Rhytmus der sich immer wiederholt. Natürlich sollen die
Schichten dann in der nächsten Tabelle, also jeden Monat, weiter ausgegeben werden.
Es funktioniert auch teilweise, aber ich habe immer einen Wurm drin, dass die einzelnen Schichten in der nächsten Tabellenzeile (beim nächsten
Mitarbeiter) weitergeschrieben werden oder, dass einige Zellen ausgelassen werden oder der falsche Rhytmus ausgegeben wird.
Seit gestern versuch ich das Problem zu lösen, und ich will auch keine komplettlösung vorgekaut haben. Nur raucht mir schon der Kopf und ich komme
einfach nicht weiter. Daher bin ich für jeden Tipp oder Verbesserungsvorschlag dankbar, den ihr mir geben könnt.
Ich poste hier nur die Ausgabe der Tabellen aka Monatskalender, da nur der Zicken macht.
Danke schonmal für eure Geduld.
PHP-Code:
$ka = 0;
$q=0;
$x = 0;
for($m=1; $m<=$ansicht; $m++){ //Je nach Ansicht werden 1, 3, 6 oder 12 Monatstabellen erstellt
$sql = mysql_query("SELECT mitarbeiter.*, schichten.* FROM
mitarbeiter, schichten WHERE schichten.sid = mitarbeiter.sid ORDER BY sname");
$tagX = "2006-".$auswahl."-1";
$firstday = strtotime($tagX); //erster tag der Zählung des Kalenders
$monat_jahr = strftime("%B %Y",$firstday); //Funktion zu errechnung und ausgabe des Aktuellen Monats
$tage_im_monat = date("t",$firstday); //berechnung der anzahl der tage eines monats
$k = 0; //hilfsvariable um den wochentag um einen tag zu erhöhen
$k2 = 0;
//Tabelle für die einzelnen Schichten
echo "<h4>".$monat_jahr."</h4>"; //ausgabe des monats und des jahres
echo "<table cellspacing='0' bordercolor='#000000' border='1'>";
echo "<tr><th rowspan='2' width='200' valign='bottom'>Name</th>"; //zeile 1 - datum
for($i=1; $i<=$tage_im_monat; $i++){
if(strftime("%a",$firstday+$k2) == "So"){ //ausgabe der monatstage mit samstag und sonntag hervorgehoben
echo "<th width='25pt' style='color:red; font-style:italic;'>".$i."</th>";
}else if (strftime("%a",$firstday+$k2) == "Sa"){
echo "<th width='25pt' style='color:blue; font-style:italic;'>".$i."</th>";
}else echo "<th width='25pt'>".$i."</th>";
$k2 = $k2 + 86400;
}
echo "</tr>";
echo "<tr>"; //zeile 2 - wochentag
for($j=1; $j<=$tage_im_monat; ++$j){ //wochentaggenerierung mit samstag und sonntag hervorgehoben
if(strftime("%a",$firstday+$k) == "So"){
echo "<th width='25pt' style='color:red; font-style:italic;'>".strftime("%a",$firstday+$k)."</th>";
}else if (strftime("%a",$firstday+$k) == "Sa"){
echo "<th width='25pt' style='color:blue; font-style:italic;'>".strftime("%a",$firstday+$k)."</th>";
}else echo "<th width='25pt'>".strftime("%a",$firstday+$k)."</th>";
$k = $k + 86400;
}
echo "</tr>";
while ($data = mysql_fetch_array($sql)){ /pro name eine zeile mit allen schichten
echo "<tr><td width='200'>[".$data["sname"]."] ".$data[nachname]."</td>";
$datei = fopen("schicht.txt", "a+");
fputs($datei, $data["rhytmus"]); //Rhytmus aus der Datenbank in eine Datei schreiben
fseek($datei, 0, "SEEK_SET");
$string = fgets($datei); //Inhalt der datei auslesen zur weiteren verarbeitung
$laenge = strlen($string); //anzahl der buchstaben in der ersten zeile der datei zählen
for($l=0; $l<=$tage_im_monat; $l++){ //so oft eine spalte schreiben, wie der monat tage hat
if($q < $laenge){ //wenn der monat länger ist, als der schichtturnus ggf von neuem beginnen
$ding = substr($string, $x, 1); //jeden einzelnen buchstaben auslesen und in eine zelle verpacken
echo "<td width='25pt' align='center'>
<a href='event.php?time=".date("U",$firstday+$ka)."&mid=".$data[mid]."'>
<b> ".$ding." </b></a></td>"; //spalte für die einzelne schicht
$q = $q + 1;
$x = $x + 1;
}else if ($q == $laenge){
$q=0;
}
if ($x == $tage_im_monat){
$x = 0;
}
$ka = $ka + 86400; //ohne die hilfsvariable ka würde in jeder zeile weitergezählt anstatt in jeder tabelle
}
echo "</tr>";
$ka = 0;
fclose($datei);
unlink("schicht.txt");
}
echo "</table>";
echo "<br>";
$auswahl = $auswahl + 1;
$ka = $ka + 86400;
}
Kommentar