CronJob-Service
bei SELFPHP mit ...
|
+ minütlichen Aufrufen
+ eigenem Crontab Eintrag
+ unbegrenzten CronJobs
+ Statistiken
+ Beispielaufrufen
+ Control-Bereich
Führen Sie mit den CronJobs von
SELFPHP zeitgesteuert Programme
auf Ihrem Server
aus. Weitere Infos
|
:: Anbieterverzeichnis ::
Globale Branchen
Informieren Sie sich über ausgewählte Unternehmen im Anbieterverzeichnis von SELFPHP
:: Newsletter ::
Abonnieren Sie hier den kostenlosen
SELFPHP Newsletter!
|
PHP Entwicklung und Softwaredesign Hier können strukturelle (Programmier-) Konzepte diskutiert und Projekte vorgestellt werden |
13.03.2004, 01:45:54
|
|
Junior Member
|
|
Registriert seit: Apr 2002
Beiträge: 284
|
|
kalender, arbeitsplanungs generator
hallo, in der hoffnung das dieses das richtige forum ist....
ich habe eine frage die mich schön etwas länger beschäftigt, aber "gedanklich" nicht weiterkomme und hoffe das vielleicht jemand mir lösungsvorschläge anbieten kann!?
es geht dabei um die erstellung eines termin/arbeits plans.
(ich arbeite in der gastronomie und jeden monat gibt es einen termin plan. gedanklich ist die erstellung eigentl. recht komplex und ich frage mich wie komplex die technische umsetzung wirklich ist!)
die variablen:
* x arbeitstage sind bekannt (öffnungszeiten: z.b. wochenende sowie mögl. feiertage)
* ich habe N mitarbeiter
* die anz. der mitarbeiter pro öffnungstag ist variabel
* tage an denen ein mitarbeiter nicht zur verfügung steht kenne ich.
* ich habe eine liste (preset) wie oft ich einen mitarbeiter pro öffnungstag einsetzen möchte
** optional: ein mitarbeiter soll nicht unbedingt zwei tage hintereinander arbeiten
ausgabe:
es soll ein monatsplan angezeigt werden bzw. alle möglichen variationen.
kann jemand helfen oder eine einschätzung geben?
gruß flobee
__________________
~~~~~~~~~~
|
20.03.2004, 09:42:08
|
|
SELFPHP Guru
|
|
Registriert seit: May 2003
Beiträge: 7.187
|
|
Soll der ganze Plan mit Hilfe eines Zufallsgenerators erstellt werden oder willst du die Daten selbst eintragen?
|
20.03.2004, 10:02:30
|
Anfänger
|
|
Registriert seit: Sep 2002
Beiträge: 84
|
|
Also so wie ich ihn vertsehe soll das Script den Plan anhand der Parameter generieren.
Das würde bestimmt funktionieren, ist aber sicherlich nicht ganz einfach. Den Plan dynamisch erstellen lassen mit den obigen Parametern geht bestimmt noch ganz gut, aber wenn dann eine Änderung drin gemacht wird kommt es ja schnell zu Verschiebungen und das wird dann kompliziert.
Hast du dich schon mal auf Seiten umgeschaut wo fertige Scripte angeboten werden?
hotscripts.com zB hat sehr viel Auswahl.
Gruß
Wauzy
|
20.03.2004, 10:55:32
|
|
Junior Member
|
|
Registriert seit: Apr 2002
Beiträge: 284
|
|
Zitat:
Original geschrieben von xabbuh
... willst du die Daten selbst eintragen?
|
Hallo!
also bei einem Monat gibts ja nicht "so" viele datensätze und dadurch das ich vorherweis wer an welchem tag nicht arbeiten soll macht es ja in eine richtung schon leicht.
ja: und die freien tage sollen dann zufällig gewählt werden.
und je nach anzahl der mitarbeiter müsst sich das alles im rahmen bleiben. allerdings steh ich hier wie der ochs vorm berg... :-) sowas als freies script gibts wohl eher nicht.
vielleicht kann jemand helfen wie ich mich am besten an diese aufgabe herantasten kann. denn einfach loslegen wird ein endlos langes script und wer weiss ob das dann auch läuft :-)
mir ist die mögliche strucktur nicht ganz klar und wie ich die objekte der dinge zusammen bringen kann.
gruß flobee
__________________
~~~~~~~~~~
|
20.03.2004, 13:44:18
|
|
SELFPHP Guru
|
|
Registriert seit: May 2003
Beiträge: 7.187
|
|
Vielleicht etwas in diese Richtung hier:
PHP-Code:
//ARRAY, IN DEM DIE TAGE GESPEICHERT SIND, AN DENEN DAS RESTAURANT GESCHLOSSEN IST
$urlaubstage=array("31.03.", "05.03")
//ARRAY, IN DEM DIE NAMEN DER MITARBEITER GESPEICHERT SIND
$mitarbeiter=array("Manfred", "Helmut", "Frauke", "flobee");
//ZUFALLESGENERATOR STARTEN
mt_srand((double)microtime()*1000000);
echo "<table>";
//KALENDER ERZEUGEN
for($i=1; $i<=date("t"); $i++){
echo "<tr>";
echo "<td>" . str_pad($i, 2, "0", STR_PAD_LEFT) . "</td>";
//WENN RESTAURANT GESCHLOSSEN
if($in_array(str_pad($i, 2, "0", STR_PAD_LEFT), $urlaubstage)){
echo "<td>Restaurant geschlossen</td>";
}
//SONST MITARBEITER EINFÜGEN
else{
$x=mt_rand(1, count($mitarbeiter));
echo "<td>" . $mitarbeiter[$x-1] . "</td>";
}
echo "</tr>";
}
echo "</table>";
|
20.03.2004, 14:48:18
|
|
Junior Member
|
|
Registriert seit: Apr 2002
Beiträge: 284
|
|
yo so leicht kommts!... :-) aber die zufallszahlen stimmen nicht:
den es gibt zwei regeln: tage an denen der mitarbeiter nicht kann oder nicht soll , die öffnungs tage und ein mitarbeiten soll nach möglichkeit keine folge tage bekommen... und da wird komplitziert...
aber schon mal vielen dank!
ps: str_pad() sehr cool! das habe ich gesucht!!! round($x, 2) :-)
__________________
~~~~~~~~~~
Geändert von flobee (20.03.2004 um 14:51:07 Uhr)
|
21.03.2004, 09:57:54
|
|
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($i, 2, "0", STR_PAD_LEFT), $urlaubstage)){
echo "<td>Restaurant geschlossen</td>";
}
//SONST MITARBEITER EINFÜGEN
else{
$x=mt_rand(1, count($mitarbeiter[str_pad($i, 2, "0", STR_PAD_LEFT)]));
$schicht=$mitarbeiter[str_pad($i, 2, "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($z, 2, "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)
|
Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
|
|
Forumregeln
|
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.
HTML-Code ist aus.
|
|
|
Alle Zeitangaben in WEZ +2. Es ist jetzt 09:09:43 Uhr.
|