a) sql query UNION with helpers with no Einzelschicht. b) fix loop so helper is written out on last entry if last entry has a different helper

This commit is contained in:
Karsten Siegmund 2024-01-12 11:39:13 +01:00
parent fbe91babc7
commit 90e4dabe9e
2 changed files with 29 additions and 21 deletions

View File

@ -68,7 +68,7 @@ if (isset($_POST['DienstSearch'])) {
echo "<br><br><table class='commontable' style='page-break-before:always'>";
?>
<tr class="header">
<th><button name="BackHelferdaten" value="1" onclick="window.location.href = 'Admin.php';"><b>&larrhk;</b></button> &nbsp; <b>&Uuml;bersicht Helfer und Ihre Schichten</b></th>
<th><button name="BackHelferdaten" value="1" onclick="window.location.href = 'Admin.php';"><b>&larrhk;</b></button> &nbsp; <b>&Uuml;bersicht Helfer und Ihre Schichten (Helfer ohne Schichten werden momentan noch nicht angezeigt)</b></th>
</tr>
</table>
<table class="commontable collapsible">
@ -76,16 +76,12 @@ echo "<br><br><table class='commontable' style='page-break-before:always'>";
$db_erg = AlleHelferSchichtenUebersicht($db_link);
$dauer = 0;
$i = 0;
$OldHelferName = "";
$EinzelDienstStunden = "";
$OldAliasHelferID = "-1";
$EinzelDienstStundenZeile = ""; // Tabellenzeile mit EinzelDienstStunden
$HelferUeberschrift = "";
while ($zeile = mysqli_fetch_array($db_erg, MYSQLI_ASSOC)) {
$HelferName = $zeile["Name"];
$AliasHelferID = $zeile["AliasHelferID"];
//echo $HelferName." ".$AliasHelferID."<br>";
if ($HelferName != $OldHelferName) {
if ($EinzelDienstStunden != "") {
// Neue Ueberschrift mit Helfernamen + Stunden
// Function to output helper information
function outputHelperInformation($HelferUeberschrift, $OldAliasHelferID, $dauer, $EinzelDienstStundenZeile) {
echo "$HelferUeberschrift </th><th> <img style='vertical-align:middle;width:30px;height:30px;' src='Bilder/PfeilRechts.jpeg'> $dauer Stunden</th>";
echo "<th ><div style='display:table'><form style='display:table-cell' action='AdminAlleSchichten.php' method='post'>";
echo "<button width='120px' name='AliasHelferID' value='" . $OldAliasHelferID . "'>+</button></form>\n";
@ -93,21 +89,31 @@ while ($zeile = mysqli_fetch_array($db_erg, MYSQLI_ASSOC)) {
echo "<form style='display:table-cell' action='AdminMeineSchichten.php' method='post'>";
echo "<button width='120px' name='AliasHelferID' value='" . $OldAliasHelferID . "'>&ndash;</button></form>";
echo "</div></th>";
$dauer = 0;
echo "$EinzelDienstStunden</td></tr>\n ";
echo "$EinzelDienstStundenZeile</td></tr>\n ";
}
while ($zeile = mysqli_fetch_array($db_erg, MYSQLI_ASSOC)) {
$HelferName = $zeile["Name"];
$AliasHelferID = $zeile["AliasHelferID"];
if ($AliasHelferID != $OldAliasHelferID) {
if ($EinzelDienstStundenZeile != "") {
outputHelperInformation($HelferUeberschrift, $OldAliasHelferID, $dauer, $EinzelDienstStundenZeile);
}
$EinzelDienstStunden = "";
$dauer = 0;
$EinzelDienstStundenZeile = "";
$HelferUeberschrift = " <tr class='header'> <th width='15%'> <form id='form_" . $AliasHelferID . "' method='post' action='AdminUserdaten.php'><input type='hidden' name='AliasHelferID' value='" . $AliasHelferID . "'/><div onclick=\"document.getElementById('form_" . $AliasHelferID . "').submit();\"/><img style='vertical-align:middle;width:30px;height:30px;' src='Bilder/PfeilRechts.jpeg'> " . $HelferName . "</div></form>";
$OldHelferName = $HelferName;
$OldAliasHelferID = $AliasHelferID;
$i += 1;
}
$EinzelDienstStunden .= "<tr><td style='width:100px'> " . (int)$zeile["Dauer"] . "</td><td>";
$EinzelDienstStunden .= $zeile["Was"];
$EinzelDienstStunden .= "</td></tr>";
$EinzelDienstStundenZeile .= "<tr><td style='width:100px'> " . (int)$zeile["Dauer"] . "</td><td>";
$EinzelDienstStundenZeile .= $zeile["Was"];
$EinzelDienstStundenZeile .= "</td></tr>";
$dauer = $dauer + (int)$zeile["Dauer"];
}
echo "$EinzelDienstStunden";
if ($EinzelDienstStundenZeile != "") {
outputHelperInformation($HelferUeberschrift, $OldAliasHelferID, $dauer, $EinzelDienstStundenZeile);
}
echo "</table>";

View File

@ -726,6 +726,8 @@ function DeleteSchicht($db_link, $SchichtID, $Rekursiv)
function AlleHelferSchichtenUebersicht($db_link)
{
$sql = "select Helfer.HelferID as AliasHelferID,Name,Email,Handy,Was,SUM(Dauer)/10000 as Dauer from Helfer,EinzelSchicht INNER JOIN Schicht INNER JOIN Dienst where Helfer.HelferID=EinzelSchicht.HelferID and EinzelSchicht.SchichtID=Schicht.SchichtID and Schicht.DienstID=Dienst.DienstID group by Helfer.HelferID,Was";
$sql = $sql . " UNION ALL ";
$sql = $sql . "select Helfer.HelferID as AliasHelferID,Name,Email,Handy,'-' as Was,0 as Dauer from Helfer,EinzelSchicht where not exists(select 1 from EinzelSchicht where Helfer.HelferID=EinzelSchicht.HelferID)";
$db_erg = mysqli_query($db_link, $sql);
if (! $db_erg) {
echo "AlleHelferSchichtenUebersicht ungueltige Abfrage";