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;
} 
 
          
 Moderator
 Moderator 
 
Kommentar