Das Array, bzw die Daten sind pro "Aufgabengebiet" in einer Tabelle abgelegt (wie halt vorher in dem Array). Rein von der Logik her ist sogar der Aufbau genau gleich wie das 2D-Array. "Bezeichner" - jetzt Spaltenname - und dann die entsprechenden Einträge.
Das 2D-Array oben ist stark gekürzt und ausserdem sind diese Arrays unflexibel. Ich möchte die Daten die in den Arrays gespeichert sind hin und wieder ändern und vor allem Erweitern. Das geht halt am Besten mit einer MySQL-DB.
Das Problem dabei ist, dass ich jetzt nicht überall im Script Datenbankabfragen einbauen kann, wo vorher simple auf das 2D-Array zugegriffen wurde. Daher die Frage ob es möglich ist eine DB-Tabelle am Anfang des Scriptes in ein 2D-Array zu schreiben/speichern.
Ich bin mir relativ sicher, dass es geht und auch nicht sonderlich schwer ist. Mir fehlt aber der Wegweiser in die richtige Richtung. Etwas ähnliches in form einer function() habe ich ja schon hinbekommen, aber auch da müssten alle Abfragen neu geschrieben werden. Ausserdem ist eine function() beschränkt (zumin. mit dem was ich programmiert habe).
Fürs bessere Verständnis. Hier das Array (komplett):
Code:
$schichtform = array(
'r' => array('anz' => 'r', 'std' => '0', 'art' => 'Ruhe aus Nacht'),
'R' => array('anz' => 'R', 'std' => '0', 'art' => 'Ruhe'),
'RA' => array('anz' => 'RA','std' => '0', 'art' => 'Ablöser'),
'U' => array('anz' => 'U', 'std' => '7.8', 'art' => 'Urlaub'),
'BU' => array('anz' => 'BU', 'std' => '0', 'art' => 'Bildungsurlaub'),
'K' => array('anz' => 'K', 'std' => '0', 'art' => 'Krank'),
'DU' => array('anz' => 'DU','std' => '6', 'art' => 'Dienstunterricht'),
'9' => array('anz' => 'Büro', 'std' => '7.8', 'art' => 'Büro'),
'1' => array('anz' => '06.00-14.00', 'std' => '8', 'art' => 'Frühdienst', 'vbbzeit' => '05:15'),
'17' => array('anz' => '06.00-13.00', 'std' => '7', 'art' => 'Frühdienst', 'vbbzeit' => '05:15'),
'12' => array('anz' => '06.00-15.00', 'std' => '9', 'art' => 'Frühdienst', 'vbbzeit' => '05:15'),
'2' => array('anz' => '14.00-22.00', 'std' => '8', 'art' => 'Spätdienst', 'vbbzeit' => '13:15'),
'2d' => array('anz' => '13.00-22.00', 'std' => '9', 'art' => 'Spätdienst', 'vbbzeit' => '12:15'),
'2e' => array('anz' => '14.00-21.00', 'std' => '7', 'art' => 'Spätdienst', 'vbbzeit' => '13:15'),
'2f' => array('anz' => '15.00-21.00', 'std' => '6', 'art' => 'Spätdienst', 'vbbzeit' => '14:15'),
'2g' => array('anz' => '13.00-21.00', 'std' => '8', 'art' => 'Spätdienst', 'vbbzeit' => '12:15'),
'2h' => array('anz' => '14.00-20.00', 'std' => '6', 'art' => 'Spätdienst', 'vbbzeit' => '13:15'),
'3' => array('anz' => '22.00-06.00', 'std' => '8', 'art' => 'Nachtdienst', 'vbbzeit' => '21:15'),
'37' => array('anz' => '22.00-06.00', 'std' => '7.5', 'art' => 'Nachtdienst', 'vbbzeit' => '21:15'),
'3c' => array('anz' => '21.00-06.00', 'std' => '9', 'art' => 'Nachtdienst', 'vbbzeit' => '20:15'),
'3d' => array('anz' => '21.00-06.00', 'std' => '8.5', 'art' => 'Nachtdienst', 'vbbzeit' => '20:15'),
'51' => array('anz' => '20.00-06.00', 'std' => '9.5', 'art' => 'Nachtdienst', 'vbbzeit' => '19:00'),
'52' => array('anz' => '22.00-08.00', 'std' => '10', 'art' => 'Nachtdienst', 'vbbzeit' => '21:15'),
'53' => array('anz' => '20.00-06.00', 'std' => '10', 'art' => 'Nachtdienst', 'vbbzeit' => '19:10'),
'54' => array('anz' => '20.00-06.00', 'std' => '9.25', 'art' => 'Nachtdienst', 'vbbzeit' => '19:10'),
'4' => array('anz' => '08.00-20.00', 'std' => '12', 'art' => 'Tagesdienst', 'vbbzeit' => '07:10'),
'4a' => array('anz' => '08.00-14.00', 'std' => '6', 'art' => 'geteilter Tagesdienst', 'vbbzeit' => '07:10'),
'4b' => array('anz' => '14.00-20.00', 'std' => '6', 'art' => 'geteilter Tagesdienst', 'vbbzeit' => '13:10'),
'42' => array('anz' => '06.00-18.00', 'std' => '12', 'art' => 'Tagesdienst', 'vbbzeit' => '05:15'),
'43' => array('anz' => '18.00-06.00', 'std' => '12', 'art' => 'Nachtdienst', 'vbbzeit' => '17:15'),
);
Und passend dazu ein Beispiel für eine Abfrage, wo mit den Daten aus diesem Array gearbeitet wird (gekürzt):
Code:
//Stunden addieren
if($schichtform[$schicht][anz]=="U") { if($wochentag=="Sa" OR $wochentag=="So" OR $feiertage[$dbdatum][1]=="1") { $schichtform[$schicht][std] = "0"; } else { $schichtform[$schicht][std] = "7.8"; } }
if($feiertage[$dbdatum][1]=="1") { $ftstd = "7.8"; if($wochentag=="So" OR $schicht=="R" OR $schicht=="r" OR $schicht=="RA" OR !$schicht) $ftstd = "0"; } else { $ftstd = "0"; }
$summen[]=$schichtform[$schicht][std]+$ftstd;
$i=0; $gesamt_summe=0; while($i<count($summen)){
$gesamt_summe=$gesamt_summe+$summen[$i];
$i++;
}
$ftstdanz = $schichtform[$schicht][std]+$ftstd;
/// ermitteln aller Stunden die an Feiertagen erbracht wurden
oder auch
Code:
//echo $nachtschichten." Nachtdienst(e)<br>";
$nass = $nachtschichten;
if(!$nachtschichten) $nass = "0";
}
$result = mysql_query("select schicht, ort FROM $tabelle$dbuser WHERE monat='$monat' AND jahr='$jahr' ORDER BY datum LIMIT 0, $mlimit");
while(list($schicht, $ort) = mysql_fetch_row($result)) {
if ($schicht=="2" OR $schicht=="2d") $nachtstunden = "2";
if ($schicht=="2e" OR $schicht=="2f" OR $schicht=="2g") $nachtstunden = "1";
if ($ort=="K") $nachtstunden = "0";
if ($schichtform[$schicht][art]=="Spätdienst") {
$nachtstd[]=$nachtstunden;
$ns=0;
$allenachtstd=0;
while($ns<count($nachtstd)){
$allenachtstd=$allenachtstd+$nachtstd[$ns];
$ns++;
}
}
if ($ort=="K") { $schichtform[$schicht][std] = "0"; } else {
if ($schicht=="52") $schichtform[$schicht][std] = "8";
if ($schichtform[$schicht][art]=="Nachtdienst") {
$nachtstd[]=$schichtform[$schicht][std];
$ns=0;
$allenachtstd=0;
while($ns<count($nachtstd)){
$allenachtstd=$allenachtstd+$nachtstd[$ns];
$ns++;
}
}
} }
Bissl wüst - geht aber noch

und halt nur zur Veranschaulichung.
Von diesen 2D-Arrays habe ich zZt 5. Nicht jedes so wichtig, dass es in eine DB müsste, aber wäre halt praktisch.
greetz