Hi,
Wieder einmal ein Problem, das entstanden ist, weil ich bestehende Module abändern bzw. erweitern soll.
Und zwar sollen bei folgendem Fomular Von-Datum und Bis-Datum eingetragen werden und dann entsprechend (wenn ToDo-Häkchen aktiviert ist) farblich makiert werden, welche Termine in der SQL-Datenbank in diesem Zeitraum auslaufen (rot) und welche über den Zeitraum hinaus gehen (grün).
Hintergrund: Für die Personen mit rotem Eintrag muss ein neuer Termin geplant werden, für die mit grünem nicht.
Leider ist es so, dass sich Termine mancher Personen überschneiden - das heißt: es gibt für eine Person einen roten und einen grünen Termin. D.h. es würde sich aufheben und die Neuplanung wäre hinfällig.
Frage nun: Wie kann ich das vermeiden? Ich hatte schon Idee, das Ergebnis jeweils zwischen zu speichern und nur auszugeben, wenn die zugewiesene Person des Zwischenspeichers nicht mit der Person des nächsten Termines übereinstimmt, hatte aber dann Probleme mit der automatisierten Ausgabe (der Zwischenspeicher muss ja teilweise NACH der Abfrage - also nachdem schon ein neuer Termin aus der DB gelesen wurde - ausgegeben werden).
Hier der Quelltext:
PHP-Code:
<?php
require "../incs/opendb.inc.php";
include "../incs/header.inc";
// FÜR PDF-Ausgabe
$sql_pdf = "
SELECT persdatenazb.Personalnummer, persdatenazb.Name,
persdatenazb.Vorname,
persdatenazb.Gruppe_ID,
org_ressort.Name as OrgRessortName,
org_ressort.Standort,
beeinsatz.von,
beeinsatz.bis,
ma_bbi.Name as AusName
FROM (((((beeinsatz
INNER JOIN org_ressort ON beeinsatz.ressort_id=org_ressort.id)
INNER JOIN org_einheit ON org_ressort.orgEinheit_ID=org_einheit.id)
INNER JOIN persdatenazb ON beeinsatz.Personalnummer=persdatenazb.Personalnummer)
INNER JOIN ma_bbi ON ma_bbi.Personalnummer=persdatenazb.Ausbilder)
INNER JOIN ansprechpartner ON beeinsatz.ressort_id=ansprechpartner.ressort_id)
WHERE persdatenazb.Personalnummer NOT LIKE ''
";
$sql = "
SELECT persdatenazb.Personalnummer,
persdatenazb.Name,
persdatenazb.Vorname,
persdatenazb.Gruppe_ID,
org_ressort.Name as OrgRessortName,
org_ressort.Standort,
org_einheit.Name as OrgEinheitName,
org_einheit.ozt,
ansprechpartner.Anrede as ansp_anr,
ansprechpartner.Nachname as ansp_name,
ansprechpartner.Telefon as ansp_tel,
beeinsatz.id,
beeinsatz.von,
beeinsatz.bis,
beeinsatz.bemerkungen,
ma_bbi.Name as AusName
FROM (((((beeinsatz
INNER JOIN org_ressort ON beeinsatz.ressort_id=org_ressort.id)
INNER JOIN org_einheit ON org_ressort.orgEinheit_ID=org_einheit.id)
INNER JOIN persdatenazb ON beeinsatz.Personalnummer=persdatenazb.Personalnummer)
INNER JOIN ma_bbi ON ma_bbi.Personalnummer=persdatenazb.Ausbilder)
INNER JOIN ansprechpartner ON beeinsatz.ressort_id=ansprechpartner.ressort_id)
WHERE persdatenazb.Personalnummer NOT LIKE ''
";
$azbname=$_POST[azbname];
$azbvorname=$_POST[azbvorname];
$gruppe=$_POST[gruppe];
$orgressortname=$_POST[orgressortname];
$orgeinheitname=$_POST[orgeinheitname];
$ozt=$_POST[ozt];
$ausbilder=$_POST[ausbilder];
$von=$_POST[von];
$bis=$_POST[bis];
$sortieren=$_POST[sortieren];
$filter = $_POST[filter];
$beplanung = $_POST[beplanung];
$todo = $_POST[todo];
if ($azbname!=""){
$sql.=" AND persdatenazb.Name LIKE '%$_POST[azbname]%'";
$sql_pdf.=" AND persdatenazb.Name LIKE '%$_POST[azbname]%'";
}
if ($azbvorname!=""){
$sql.=" AND persdatenazb.Vorname LIKE '%$_POST[azbvorname]%'";
$sql_pdf.=" AND persdatenazb.Vorname LIKE '%$_POST[azbvorname]%'";
}
if ($gruppe!=""){
$sql.=" AND persdatenazb.Gruppe_ID LIKE '%$_POST[gruppe]%'";
$sql_pdf.=" AND persdatenazb.Gruppe_ID LIKE '%$_POST[gruppe]%'";
}
if ($orgressortname!=""){
$sql.=" AND org_ressort.Name LIKE '%$_POST[orgressortname]%'";
$sql_pdf.=" AND org_ressort.Name LIKE '%$_POST[orgressortname]%'";
}
if ($orgeinheitname!=""){
$sql.=" AND org_einheit.Name LIKE '%$_POST[orgeinheitname]%'";
$sql_pdf.=" AND org_einheit.Name LIKE '%$_POST[orgeinheitname]%'";
}
if ($ozt!=""){
$sql.=" AND org_einheit.ozt LIKE '$_POST[ozt]'";
$sql_pdf.=" AND org_einheit.ozt LIKE '$_POST[ozt]'";
}
if ($ausbilder!=""){
$sql.=" AND ma_bbi.Personalnummer LIKE '$_POST[ausbilder]'";
$sql_pdf.=" AND ma_bbi.Personalnummer LIKE '$_POST[ausbilder]'";
}
if ($von!=""){
$suchdatum = implode('-', array_reverse(explode('.', $_POST[bis])));
$sql.=" AND beeinsatz.von <= '$suchdatum'";
$sql_pdf.=" AND beeinsatz.von <= '$suchdatum'";
}
if ($bis!=""){
$suchdatum = implode('-', array_reverse(explode('.', $_POST[von])));
$sql.=" AND beeinsatz.bis >= '$suchdatum'";
$sql_pdf.=" AND beeinsatz.bis >= '$suchdatum'";
}
if ($filter == "aktiv"){
$sql.=" AND persdatenazb.eingestellt < NOW() AND persdatenazb.verlassen > NOW()";
$sql_pdf.=" AND persdatenazb.eingestellt < NOW() AND persdatenazb.verlassen > NOW()";
}
elseif ($filter == "inaktiv") {
$sql.=" AND persdatenazb.eingestellt > NOW() OR persdatenazb.verlassen < NOW()";
$sql_pdf.=" AND persdatenazb.eingestellt > NOW() OR persdatenazb.verlassen < NOW()";
}
if ($todo){
$suchdatum = implode('-', array_reverse(explode('.', $_POST[bis])));
$sql.="AND beeinsatz.bis < '$suchdatum'";
$sql_pdf.="AND beeinsatz.bis < '$suchdatum'";
}
if ($sortieren!=""){
$sql.=" ORDER BY $sortieren ASC";
$sql_pdf.=" ORDER BY $sortieren ASC";
}
$sql2="SELECT * FROM ma_bbi WHERE ausbilderstatus='1' ORDER BY Name ASC";
$ausbilder=mysql_query($sql2) or die(mysql_error());
if($berechtigung==4 or $berechtigung==2 or $berechtigung==3){
echo "
<form action=\"$PHP_SELF\" method=\"post\">\n
<table>
<tr>
<td class=\"td_sql_top\">AzbName</td>
<td class=\"td_sql_out\"><input type=\"text\" name=\"azbname\" value=\"$azbname\"></td>
<td class=\"td_sql_top\">AzbVorname</td>
<td class=\"td_sql_out\"><input type=\"text\" name=\"azbvorname\" value=\"$azbvorname\"></td>
</tr>
<tr>
<td class=\"td_sql_top\">Von</td>
<td class=\"td_sql_out\"><input type=\"text\" name=\"von\" value=\"$von\"></td>
<td class=\"td_sql_top\">Bis</td>
<td class=\"td_sql_out\"><input type=\"text\" name=\"bis\" value=\"$bis\"></td>
</tr>
<tr>
<td class=\"td_sql_top\">OrgRessort</td>
<td class=\"td_sql_out\"><input type=\"text\" name=\"orgressortname\" value=\"$orgressortname\"></td>
<td class=\"td_sql_top\">OrgEinheit</td>
<td class=\"td_sql_out\"><input type=\"text\" name=\"orgeinheitname\" value=\"$orgeinheitname\"></td>
</tr>
<tr>
<td class=\"td_sql_top\">Gruppe</td>
<td class=\"td_sql_out\"><input type=\"text\" name=\"gruppe\" value=\"$gruppe\"></td>
<td class=\"td_sql_top\">OZT</td>
<td class=\"td_sql_out\"><input type=\"text\" name=\"ozt\" value=\"$ozt\"></td>
</tr>
<tr>
<td class=\"td_sql_top\">Ausbilder</td>
<td class=\"td_sql_out\">
<select name=\"ausbilder\">\n
<option value=\"\">--Bitte auswählen--</option>\n";
while ($line = mysql_fetch_array($ausbilder)){
echo "\t<option value=\"$line[Personalnummer]\"";
If($line[Personalnummer] == $_POST[ausbilder]){
echo" SELECTED";
}
echo ">".$line[Name]." , ".$line[Vorname]."</option>\n";
}
echo"
</select>
</td>
<td class=\"td_sql_top\">Sortieren nach</td>
<td class=\"td_sql_out\">
<select name=\"sortieren\">\n
<option value=\"Personalnummer\""; if ($_POST[sortieren]=="Personalnummer" || $_POST[sortieren]==""){ echo " selected "; } echo ">Personalnummer</option>
<option value=\"Gruppe_ID\""; if ($_POST[sortieren]=="Gruppe_ID" ){ echo " selected "; } echo ">Gruppe</option>
<option value=\"AusName\""; if ($_POST[sortieren]=="AusName" ){ echo " selected "; } echo ">Ausbilder</option>
<option value=\"orgressortname\""; if ($_POST[sortieren]=="orgressortname" ){ echo " selected "; } echo ">OrgRessort</option>
<option value=\"orgeinheitname\""; if ($_POST[sortieren]=="orgeinheitname" ){ echo " selected "; } echo ">OrgEinheit</option>
<option value=\"standort\""; if ($_POST[sortieren]=="standort" ){ echo " selected "; } echo ">Standort</option>
<option value=\"von\""; if ($_POST[sortieren]=="von" ){ echo " selected "; } echo ">von</option>
<option value=\"bis\""; if ($_POST[sortieren]=="bis" ){ echo " selected "; } echo ">bis</option>
</select>
</td>
</tr>
<tr>
<td class=\"td_sql_top\">Azb anzeigen</td>
<td class=\"td_sql_out\"><select size=\"1\" name=\"filter\"><option value=\"aktiv\"".(($filter=="aktiv")?" selected":"").">beschäftigt</option><option value=\"inaktiv\"".(($filter=="inaktiv")?" selected":"").">nicht mehr/noch nicht beschäftigt</option><option value=\"alle\"".(($filter=="alle")?" selected":"").">alle</option></select></td>
<td class=\"td_sql_top\">Betriebseinsatzplanung</td>
<td class=\"td_sql_out\">aktiv: <input type=\"checkbox\" name=\"beplanung\"".(($beplanung)?" checked":"")."> ToDo: <input type=\"checkbox\" name=\"todo\"".(($todo)?" checked":"").">
</tr>
<tr>
<td colspan=\"2\"><input type=\"submit\" value=\"anzeigen\" name=\"anzeigen\"></td>
</tr>
</table>
</form>";
}
echo "
<table>
<tr>
<td colspan=\"4\" class=\"td_sql_head\">Auszubildender</td>
<td colspan=\"1\" class=\"td_sql_head\">Ausbilder</td>
<td colspan=\"11\" class=\"td_sql_head\">Betriebseinsatz</td>
</tr>
<tr>
<td class=\"td_sql_top\">Personal-Nr.</td>
<td class=\"td_sql_top\">Nachname</td>
<td class=\"td_sql_top\">Vorname</td>
<td class=\"td_sql_top\">Gruppe</td>
<td class=\"td_sql_top\">Nachname</td>
<td class=\"td_sql_top\">OrgRessort</td>
<td class=\"td_sql_top\">OrgEinheit</td>
<td class=\"td_sql_top\">Ansprechpartner</td>
<td class=\"td_sql_top\">Telefon</td>
<td class=\"td_sql_top\">OZT</td>
<td class=\"td_sql_top\">Standort</td>
<td class=\"td_sql_top\">Von</td>
<td class=\"td_sql_top\">Bis</td>
<td class=\"td_sql_top\">Bemerkung</td>";
#nur anzeigen, wenn admin
if ($_SESSION['db_berechtigung'] ==4)
{
echo "<td class=\"td_sql_top\"> </td>";
}
echo "</tr>
";
if($berechtigung==4 or $berechtigung==2 or $berechtigung==3){
$ergebnis= mysql_query($sql) or die(mysql_error());
while($row=mysql_fetch_array($ergebnis))
{
if ($beplanung)
{
$suchdatum = implode('-', array_reverse(explode('.',$bis))); // Um Formatierung wie in SQL-Datenbank hinzubekommen YYYY-MM-TT
if ($row[bis] > $suchdatum)
{
$style = " style=\"background-color: #90EE90; \"";
}
else
{
$style = " style=\"background-color: #F08080; \"";
}
}
$vondatum = date("d.m.Y",strtotime($row[von]));
$bisdatum = date("d.m.Y",strtotime($row[bis]));
echo "
<tr>
<td class=\"td_sql_out\" $style>".$row[Personalnummer]."</td>
<td class=\"td_sql_out\" $style>".$row[Name]."</td>
<td class=\"td_sql_out\" $style>".$row[Vorname]."</td>
<td class=\"td_sql_out\" $style>".$row[Gruppe_ID]."</td>
<td class=\"td_sql_out\" $style>".$row[AusName]."</td>
<td class=\"td_sql_out\" $style>".$row[OrgRessortName]."</td>
<td class=\"td_sql_out\" $style>".$row[OrgEinheitName]."</td>
<td class=\"td_sql_out\" $style>".$row[ansp_anr]." ".$row[ansp_name]."</td>
<td class=\"td_sql_out\" $style>".$row[ansp_tel]."</td>
<td class=\"td_sql_out\" $style>".$row[ozt]."</td>
<td class=\"td_sql_out\" $style>".$row[Standort]."</td>
<td class=\"td_sql_out\" $style>".$vondatum."</td>
<td class=\"td_sql_out\" $style>".$bisdatum."</td>
<td class=\"td_sql_out\" $style>".$row[bemerkungen]."</td>";
#nur anzeigen, wenn admin
if ($_SESSION['db_berechtigung'] ==4)
{
echo "<td class=\"td_sql_out\" $style><a href=\"editdelpersDatenBE.php?personalnummer=$row[Personalnummer]"."&beid=".$row[id]."\">bearbeiten</a></td>";
}
echo "</tr>";
}
}
if($berechtigung==1){
$sql="
SELECT persdatenazb.Personalnummer,
persdatenazb.Name,
persdatenazb.Vorname,
persdatenazb.Gruppe_ID,
org_ressort.Name as OrgRessortName,
org_ressort.Standort,
org_einheit.Name as OrgEinheitName,
org_einheit.ozt,
ansprechpartner.Anrede as ansp_anr,
ansprechpartner.Nachname as ansp_name,
ansprechpartner.Telefon as ansp_tel,
ansprechpartner.Email as ansp_mail,
beeinsatz.id,
beeinsatz.von,
beeinsatz.bis,
beeinsatz.bemerkungen,
ma_bbi.Name as AusName
FROM (((((beeinsatz
INNER JOIN org_ressort ON beeinsatz.ressort_id=org_ressort.id)
INNER JOIN org_einheit ON org_ressort.orgEinheit_ID=org_einheit.id)
INNER JOIN persdatenazb ON beeinsatz.Personalnummer=persdatenazb.Personalnummer)
INNER JOIN ma_bbi ON ma_bbi.Personalnummer=persdatenazb.Ausbilder)
INNER JOIN ansprechpartner ON beeinsatz.ressort_id=ansprechpartner.ressort_id)
WHERE persdatenazb.Personalnummer = ".$_SESSION['PersNr'];
$ergebnis= mysql_query($sql) or die(mysql_error());
while($row=mysql_fetch_array($ergebnis))
{
echo "
<tr>
<td class=\"td_sql_out\">".$row[Personalnummer]."</td>
<td class=\"td_sql_out\">".$row[Name]."</td>
<td class=\"td_sql_out\">".$row[Vorname]."</td>
<td class=\"td_sql_out\">".$row[Gruppe_ID]."</td>
<td class=\"td_sql_out\">".$row[AusName]."</td>
<td class=\"td_sql_out\">".$row[OrgRessortName]."</td>
<td class=\"td_sql_out\">".$row[OrgEinheitName]."</td>
<td class=\"td_sql_out\">".$row[ansp_anr]." ".$row[ansp_name]."</td>
<td class=\"td_sql_out\">".$row[ansp_tel]."</td>
<td class=\"td_sql_out\">".$row[ozt]."</td>
<td class=\"td_sql_out\">".$row[Standort]."</td>
<td class=\"td_sql_out\">".$row[von]."</td>
<td class=\"td_sql_out\">".$row[bis]."</td>
<td class=\"td_sql_out\">".$row[bemerkungen]."</td>";
#nur anzeigen, wenn admin
if ($_SESSION['db_berechtigung'] ==4)
{
echo "<td class=\"td_sql_out\"><a href=\"editdelpersDatenBE.php?personalnummer=$row[Personalnummer]"."&beid=".$row[id]."\">bearbeiten</a></td>";
}
echo "</tr>";
}
}
$treffer=mysql_num_rows($ergebnis);
echo "
<tr>";
if ($berechtigung == 4) // für korrekte Formatierung.. keine besondere Relevanz
{
echo "<td colspan=\"15\" class=\"td_sql_top\">";
}
else
{
echo "<td colspan=\"14\" class=\"td_sql_top\">";
}
if ($treffer=='0'){ echo " Es wurde kein Datensatz gefunden"; }
if ($treffer=='1'){ echo " Es wurde ein Datensatz gefunden"; }
if ($treffer>'1'){ echo " Es wurden ".$treffer." Datensätze gefunden"; }
echo "
</td>
</tr>
</table>
";
if ($beplanung) // Spezieller Footer aufgrund spezieller PDF-Ausgabe für Betriebseinsatzplanung
{
include "../incs/foot_beplanung.inc";
}
else
{
include "../incs/footer.inc";
}
?>