Einzelnen Beitrag anzeigen
  #7  
Alt 21.03.2004, 09:57:54
Benutzerbild von xabbuh
xabbuh xabbuh ist offline
SELFPHP Guru
 
Registriert seit: May 2003
Beiträge: 7.187
Eine umständliche Möglichkeit zwar, das Problem zu lösen, dass ein Mitarbeiter nur eingeteilt wird, wenn er auch kann. Es wird ein Array $mitarbeiter gebildet. In dem Array ist ein Array für jeden Tag des Monats enthalten. Und in diesem Array müssen jeweils alle Mitarbeiter aufgeführt werden, die an diesem Tag auch könnten:

PHP-Code:
$mitarbeiter[01]=array("Manfred""Heinz""Marianne");
$mitarbeiter[02]=array("Manfred""Marianne");        //HEINZ HAT AM 2. DES MONATS ALSO FREI
$mitarbeiter[03]=array("Marianne");

// USW. FÜR DIE RESTLICHEN TAGE DES MONATS 
Anschließend kannst du den Mitarbeiter so auswählen:

PHP-Code:
if($in_array(str_pad($i2"0"STR_PAD_LEFT), $urlaubstage)){
        echo 
"<td>Restaurant geschlossen</td>";
        }
    
//SONST MITARBEITER EINFÜGEN
    
else{
        
$x=mt_rand(1count($mitarbeiter[str_pad($i2"0"STR_PAD_LEFT)]));
        
$schicht=$mitarbeiter[str_pad($i2"0"STR_PAD_LEFT)][$x-1]
        echo 
"<td>" $schicht "</td>";
        } 
Um dann zu verhindern, dass dieser Mitarbeiter am nächsten Tag wieder eine Schicht bekommt, müsstest du aus dem Array für den nächsten Tag das Element mit diesem Mitarbeiter entfernen:

PHP-Code:
$z=$i+1;
$akt_array=$mitarbeiter[str_pad($z2"0"STR_PAD_LEFT)];
if(
in_array($schicht$akt_array){
        
$pos=array_search($schicht$akt_array);
        unset(
$array[$pos]);
        } 
Das Beispiel ist nicht getestet, aber eigentlich sollte es so funktionieren, denke ich.

Geändert von xabbuh (21.03.2004 um 13:27:16 Uhr)
Mit Zitat antworten