Hallo,
Vorgeschichte:
Hab ein Zeiterfassungsscript geschrieben.
1. Jeder Benutzer wird angelegt
2. Danach wird für den jeweiligen Benutzer ein Kalender zb 2006 erstellt
(365Tage in die Tabelle zeiterfassung eingetragen)
Dazu hab ich folgendes Script geschrieben...
Zusammengefasst macht das Script folgendes:
- schau mit mktime() nach wieviel Tage jeder Monat hat
(ausgewähltes Jahr-Monat(for schleife) zb.: 2006-01)
- danach führt er eine for schleife solange aus bis er den letzten Tag
des jeweiligen Monat hat und trägt jeden eintrag in die Tabelle ein
So so weit so gut klappt zwar super und ist auch superschön dynamisch ABER:
Ist halt einfach wie ich finde sehr umständlich programmiert und performance belastend. Da gibt es doch bestimmt irgendwelche SQL anweisungen wo man sagen insert datum1 - datum2
würde dem Server halt viele Schleifen und mir somit Zeit bzw dem Benutzer ersparen ^^.
Hier der Code:
Vorgeschichte:
Hab ein Zeiterfassungsscript geschrieben.
1. Jeder Benutzer wird angelegt
2. Danach wird für den jeweiligen Benutzer ein Kalender zb 2006 erstellt
(365Tage in die Tabelle zeiterfassung eingetragen)
Dazu hab ich folgendes Script geschrieben...
Zusammengefasst macht das Script folgendes:
- schau mit mktime() nach wieviel Tage jeder Monat hat
(ausgewähltes Jahr-Monat(for schleife) zb.: 2006-01)
- danach führt er eine for schleife solange aus bis er den letzten Tag
des jeweiligen Monat hat und trägt jeden eintrag in die Tabelle ein
So so weit so gut klappt zwar super und ist auch superschön dynamisch ABER:
Ist halt einfach wie ich finde sehr umständlich programmiert und performance belastend. Da gibt es doch bestimmt irgendwelche SQL anweisungen wo man sagen insert datum1 - datum2
würde dem Server halt viele Schleifen und mir somit Zeit bzw dem Benutzer ersparen ^^.
Hier der Code:
PHP-Code:
IF($anlegen)
{
// auslesen der Soll_std
$res2=mysql_query("select * from $mitarbeiter where id_mitarbeiter = '$id_auswahl'");
$row=mysql_fetch_object($res2);
$soll_std = $row->soll_std;
// überprüfen ob Kalender schon vorhanden
$res1=mysql_query("select * from $zeiterfassung where id_mitarbeiter = '$id_auswahl' and datum like '$datum_j-01-01'");
$row=mysql_fetch_object($res1);
$datum = $row->datum;
IF($datum){ echo "<b>Der Kalender $datum_j ist bereits angelegt...</b>"; }
ELSE {
// 12Monate Schleife
for ($i = 1; $i <= 12; $i++)
{
if ($i < 10)$j = "0".$i;
else $j = $i;
$datum_tmp = mktime(0,0,0,$j,1,$datum_j);
$monat_t = date("t", $datum_tmp);
// Schleife für den jeweiligen Monat
for ($t = 1; $t <= $monat_t; $t++)
{
if ($t < 10)$m = "0".$t;
else $m = $t;
$datum = $datum_j."-".$j."-".$m;
// Daten waren OK -> also in DB eintragen
mysql_query(sprintf('insert into zeiterfassung (id_mitarbeiter,datum)VALUES ("%s","%s")',
addslashes($id_mitarbeiter),addslashes($datum)));
echo mysql_error();
// überträgt die aktuell eingetragenen Soll_std aus der Mitarbeiter Tabelle
mysql_query("update $zeiterfassung set soll_std = '$soll_std' where id_mitarbeiter = '$id_auswahl' and datum like '$datum_j%'");
echo mysql_error();
}
}
// Daten in Tabelle übertrag für den Mitarbeiter anlegen
for ($i=1; $i<13; $i++)
{
$datum = $datum_j."-".$i."-01";
mysql_query(sprintf('insert into uebertrag (id_mitarbeiter,datum) VALUES ("%s","%s")',addslashes($id_mitarbeiter),addslashes($datum)));
echo mysql_error();
}
// Erstellt Eintrag für Uebertrag des Urlaubs
mysql_query(sprintf('insert into uebertrag_urlaub (id_mitarbeiter,jahr)VALUES ("%s","%s")',
addslashes($id_mitarbeiter),addslashes($datum_j)));
echo mysql_error();
echo "<b>Kalender für $datum_j angelegt...</b>";
}
}
// >>>>>>>>>>>>>>>>>>>>>>>>>>> Formulardaten UPDATEN ENDE <<<<<<<<<<<<<<<<< -->
Kommentar