From 93e2e354f32f46b0943c9f3c2f200794359e5c1b Mon Sep 17 00:00:00 2001 From: root Date: Thu, 8 May 2025 19:41:43 +0200 Subject: [PATCH] prepare statements --- html/SQL.php | 459 ++++++++++++++++++++++++++++----------------------- 1 file changed, 252 insertions(+), 207 deletions(-) diff --git a/html/SQL.php b/html/SQL.php index b8014fa..c595682 100644 --- a/html/SQL.php +++ b/html/SQL.php @@ -14,299 +14,348 @@ function ConnectDB() return $db_link; } -function CreateHelfer($db_link, $HelferName, $HelferEmail, $HelferHandy, $HelferPasswort, $HelferLevel = 1) +function CreateHelfer($db_link, $HelferName, $HelferEmail, $HelferHandy, $HelferPasswort, $HelferLevel = 1) #stmt { - $HelferName = mysqli_real_escape_string($db_link, $HelferName); - $HelferEmail = mysqli_real_escape_string($db_link, $HelferEmail); - $HelferHandy = mysqli_real_escape_string($db_link, $HelferHandy); - // level: Teilnehmer/Dauerhelfer/(Teamleiter) - $HelferLevel = mysqli_real_escape_string($db_link, $HelferLevel); - //$HelferName=mysqli_real_escape($db_link,$HelferName); - $HelferPasswort = "€" . $HelferPasswort . "ß"; - //echo "".$HelferPasswort.""; - $PasswortHash = password_hash($HelferPasswort, PASSWORD_DEFAULT); + $HelferPasswort = "€" . $HelferPasswort . "ß"; + $PasswortHash = password_hash($HelferPasswort, PASSWORD_DEFAULT); + // Prepared Statement erstellen + $sql = "INSERT INTO Helfer (Name, Email, Handy, Status, BildFile, DoReport, Passwort, HelferLevel) + VALUES (?, ?, ?, 1, '', 0, ?, ?)"; + $stmt = mysqli_prepare($db_link, $sql); - // Neuen Helfer anlegen - $sql = "INSERT INTO Helfer(Name,Email,Handy,Status,BildFile,DoReport,Passwort,HelferLevel) VALUES ('$HelferName','$HelferEmail','$HelferHandy',1,'',0,'$PasswortHash','$HelferLevel')"; - $db_erg = mysqli_query($db_link, $sql); + if (!$stmt) { + error_log("Fehler beim Vorbereiten des Statements: " . mysqli_error($db_link)); + return false; + } + // Parameter binden (ssssi = 4 Strings + 1 Integer) + mysqli_stmt_bind_param($stmt, "ssssi", $HelferName, $HelferEmail, $HelferHandy, $PasswortHash, $HelferLevel); + + // Query ausführen + $success = mysqli_stmt_execute($stmt); + + if (!$success) { + error_log("Fehler beim Einfügen: " . mysqli_stmt_error($stmt)); + } + + $db_erg = $success ? $stmt : false; + mysqli_stmt_close($stmt); error_log(date('Y-m-d H:i') . " CreateHelfer: $HelferName angelegt mit Email $HelferEmail Handy $HelferHandy \n", 3, LOGFILE); + return $db_erg; } -// testet fuer urllogin, ob Helfer bereits existiert -function HelferIstVorhanden($db_link, $Email) + +// Testet fuer urllogin, ob Helfer bereits existiert +function HelferIstVorhanden($db_link, $Email)#stmt { - $Email = mysqli_real_escape_string($db_link, $Email); - $sql = "SELECT count(HelferID) as Anzahl FROM Helfer Where Email = '" . $Email . "'"; - $db_erg = mysqli_query($db_link, $sql); - $zeile = mysqli_fetch_array($db_erg, MYSQLI_ASSOC); - return $zeile['Anzahl']; + $sql = "SELECT COUNT(HelferID) AS Anzahl FROM Helfer WHERE Email = ?"; + $stmt = mysqli_prepare($db_link, $sql); + if (!$stmt) { + error_log("Fehler beim Vorbereiten des Statements: " . mysqli_error($db_link)); + return false; + } + mysqli_stmt_bind_param($stmt, "s", $Email); + mysqli_stmt_execute($stmt); + + $result = mysqli_stmt_get_result($stmt); + $zeile = mysqli_fetch_array($result, MYSQLI_ASSOC); + mysqli_stmt_close($stmt); + return $zeile['Anzahl'] ?? 0; } -//TODO: pruefen, ob Helfer bereits eingeloggt -function HelferLogin($db_link, $HelferEmail, $HelferPasswort, $HelferStatus) -{ - $HelferEmail = mysqli_real_escape_string($db_link, $HelferEmail); - $HelferStatus = mysqli_real_escape_string($db_link, $HelferStatus); - //echo "Test
"; - // Helfer Suchen - $sql = "Select HelferID,Admin,Name,Passwort,HelferLevel From Helfer Where Email='" . $HelferEmail . "'"; - //echo $sql; - $db_erg = mysqli_query($db_link, $sql); - if (! $db_erg) { - echo "Login ungueltige Abfrage"; - die('Ungueltige Abfrage: ' . mysqli_error($db_link)); +//TODO: pruefen, ob Helfer bereits eingeloggt +function HelferLogin($db_link, $HelferEmail, $HelferPasswort, $HelferStatus)#stmt +{ + $sql = "SELECT HelferID, Admin, Name, Passwort, HelferLevel FROM Helfer WHERE Email = ?"; + $stmt = mysqli_prepare($db_link, $sql); + if (!$stmt) { + error_log("Fehler beim Vorbereiten des Statements: " . mysqli_error($db_link)); + die('Login ungültige Abfrage'); } - while ($zeile = mysqli_fetch_array($db_erg, MYSQLI_ASSOC)) { + mysqli_stmt_bind_param($stmt, "s", $HelferEmail); + if (!mysqli_stmt_execute($stmt)) { + error_log("Login execute fehlgeschlagen: " . mysqli_stmt_error($stmt)); + die('Login: Fehler beim Ausführen der Abfrage.'); + } + mysqli_stmt_execute($stmt); + + $result = mysqli_stmt_get_result($stmt); + + while ($zeile = mysqli_fetch_array($result, MYSQLI_ASSOC)) { $HelferPasswort = "€" . $HelferPasswort . "ß"; - //echo "".$HelferPasswort."
"; - //echo "".$zeile['Passwort']."
"; + if (password_verify($HelferPasswort, $zeile['Passwort'])) { $_SESSION["HelferID"] = $zeile['HelferID']; $_SESSION["HelferName"] = $zeile['Name']; - //TODO: das sollte nur gesetzt werden, wenn der Helfer Admin ist - $_SESSION["AdminID"] = $zeile['HelferID']; - $_SESSION["AdminStatus"] = $zeile['Admin']; - $_SESSION["HelferLevel"] = $zeile['HelferLevel']; - return 1; + // TODO: das sollte nur gesetzt werden, wenn der Helfer Admin ist + // TODO done - test ob nichts kaputt geht + $_SESSION["AdminStatus"] = $zeile['Admin']; + if( $_SESSION["AdminStatus"] == 1) { + $_SESSION["AdminID"] = $zeile['HelferID']; + } + $_SESSION["HelferLevel"] = $zeile['HelferLevel']; + + mysqli_stmt_close($stmt); + return 1; } else { echo "Falsches Passwort
"; - return 0; + mysqli_stmt_close($stmt); + return 0; } } + + mysqli_stmt_close($stmt); + return 0; } + // Liste der Helfer fuer Admin-Seite //TODO: HelferLevel -function HelferListe($db_link) + +function HelferListe($db_link)#stmt { - - $sql = "SELECT HelferID,Name FROM Helfer"; - $db_erg = mysqli_query($db_link, $sql); - if (! $db_erg) { - echo "Helferliste ungueltige Abfrage"; - die('Unueltige Abfrage: ' . mysqli_error($db_link)); + $sql = "SELECT HelferID, Name FROM Helfer"; + $stmt = mysqli_prepare($db_link, $sql); + if (!$stmt) { + echo "Helferliste ungültige Abfrage"; + die('Ungültige Abfrage: ' . mysqli_error($db_link)); } + mysqli_stmt_execute($stmt); + $result = mysqli_stmt_get_result($stmt); - return $db_erg; + // Ergebniszeiger zurückgeben, um kompatibel zu bleiben + return $result; } -function Helferdaten($db_link, $HelferID) +function Helferdaten($db_link, $HelferID)#stmt { - $HelferID = mysqli_real_escape_string($db_link, $HelferID); - - $sql = "SELECT * FROM Helfer Where HelferID =" . $HelferID; - $db_erg = mysqli_query($db_link, $sql); - if (! $db_erg) { - echo "Helferdaten ungueltige Abfrage
\n"; - echo "sql:$sql
\n"; - die('Ungueltige Abfrage: ' . mysqli_error($db_link)); + $sql = "SELECT * FROM Helfer Where HelferID = ?"; + $stmt = mysqli_prepare($db_link, $sql); + if (!$stmt) { + echo "Helferdaten: Fehler beim Vorbereiten des Statements
\n"; + die('Prepare failed: ' . mysqli_error($db_link)); } - + mysqli_stmt_bind_param($stmt, "i", $HelferID); + if (!mysqli_stmt_execute($stmt)) { + echo "Helferdaten: Fehler bei der Ausführung
\n"; + die('Execution failed: ' . mysqli_stmt_error($stmt)); + } + $db_erg = mysqli_stmt_get_result($stmt); return $db_erg; } -function HelferdatenAendern($db_link, $HelferName, $HelferEmail, $HelferHandy, $HelferNewPasswort, $HelferID, $HelferLevel, $HelferIsAdmin = -1, $AdminID = 0) +function HelferdatenAendern($db_link, $HelferName, $HelferEmail, $HelferHandy, $HelferNewPasswort, $HelferID, $HelferLevel, $HelferIsAdmin = -1, $AdminID = 0)#stmt { - - $HelferID = mysqli_real_escape_string($db_link, $HelferID); - $HelferName = mysqli_real_escape_string($db_link, $HelferName); - $HelferEmail = mysqli_real_escape_string($db_link, $HelferEmail); - $HelferHandy = mysqli_real_escape_string($db_link, $HelferHandy); - $HelferLevel = mysqli_real_escape_string($db_link, $HelferLevel); + $result = false; if ($HelferNewPasswort == "") { - //$sql = "UPDATE Helfer SET Name='$HelferName',Email='$HelferEmail',Handy='$HelferHandy' ".($HelferIsAdmin!=-1)?',Admin='$HelferIsAdmin.':'." Where HelferId=".$HelferID; if ($HelferIsAdmin == -1) { - $sql = "UPDATE Helfer SET Name='$HelferName',Email='$HelferEmail',Handy='$HelferHandy',HelferLevel='$HelferLevel' Where HelferId=" . $HelferID; + $sql = "UPDATE Helfer SET Name = ?, Email = ?, Handy = ?, HelferLevel = ? WHERE HelferId = ?"; + $stmt = mysqli_prepare($db_link, $sql); + if (!$stmt) { + die("Prepare failed: " . mysqli_error($db_link)); + } + mysqli_stmt_bind_param($stmt, "ssssi", $HelferName, $HelferEmail, $HelferHandy, $HelferLevel, $HelferID); } else { - $sql = "UPDATE Helfer SET Name='$HelferName',Email='$HelferEmail',Handy='$HelferHandy',Admin=$HelferIsAdmin,HelferLevel='$HelferLevel' Where HelferId=" . $HelferID; + $sql = "UPDATE Helfer SET Name = ?, Email = ?, Handy = ?, Admin = ?, HelferLevel = ? WHERE HelferId = ?"; + $stmt = mysqli_prepare($db_link, $sql); + if (!$stmt) { + die("Prepare failed: " . mysqli_error($db_link)); + } + mysqli_stmt_bind_param($stmt, "ssssii", $HelferName, $HelferEmail, $HelferHandy, $HelferIsAdmin, $HelferLevel, $HelferID); } - //echo $sql; - $db_erg = mysqli_query($db_link, $sql); + + if (!mysqli_stmt_execute($stmt)) { + die("Execute failed: " . mysqli_stmt_error($stmt)); + } + + $result = true; echo "
  • Helferdaten geändert
  • "; - if ($AdminID != 0) { - error_log(date('Y-m-d H:i') . "(Admin $AdminID) Helferdaten update: Name: $HelferName (HelferID:$HelferID) Email: $HelferEmail Handy: $HelferHandy HelferLevel: $HelferLevel Admin: $HelferIsAdmin\n", 3, LOGFILE); - } else { - error_log(date('Y-m-d H:i') . "Helferdaten update: Name: $HelferName (HelferID:$HelferID) Email: $HelferEmail Handy: $HelferHandy HelferLevel: $HelferLevel Admin: $HelferIsAdmin\n", 3, LOGFILE); - } + + $log_prefix = ($AdminID != 0) ? "(Admin $AdminID) " : ""; + error_log(date('Y-m-d H:i') . " {$log_prefix}Helferdaten update: Name: $HelferName (HelferID:$HelferID) Email: $HelferEmail Handy: $HelferHandy HelferLevel: $HelferLevel Admin: $HelferIsAdmin\n", 3, LOGFILE); + + mysqli_stmt_close($stmt); } else { $HelferNewPasswort = "€" . $HelferNewPasswort . "ß"; $PasswortHash = password_hash($HelferNewPasswort, PASSWORD_DEFAULT); + if ($HelferIsAdmin == -1) { - $sql = "UPDATE Helfer SET Name='" . $HelferName . "',Email='" . $HelferEmail . "',Handy='" . $HelferHandy . "',HelferLevel='$HelferLevel',Passwort='" . $PasswortHash . "' Where HelferId=" . $HelferID; + $sql = "UPDATE Helfer SET Name = ?, Email = ?, Handy = ?, HelferLevel = ?, Passwort = ? WHERE HelferId = ?"; + $stmt = mysqli_prepare($db_link, $sql); + if (!$stmt) { + die("Prepare failed: " . mysqli_error($db_link)); + } + mysqli_stmt_bind_param($stmt, "sssssi", $HelferName, $HelferEmail, $HelferHandy, $HelferLevel, $PasswortHash, $HelferID); } else { - $sql = "UPDATE Helfer SET Name='$HelferName',Email='$HelferEmail',Handy='$HelferHandy',$HelferLevel='$HelferLevel',Passwort='$PasswortHash',Admin=$HelferIsAdmin Where HelferId=" . $HelferID; + $sql = "UPDATE Helfer SET Name = ?, Email = ?, Handy = ?, HelferLevel = ?, Passwort = ?, Admin = ? WHERE HelferId = ?"; + $stmt = mysqli_prepare($db_link, $sql); + if (!$stmt) { die("Prepare failed: " . mysqli_error($db_link)); } + mysqli_stmt_bind_param($stmt, "ssssssi", $HelferName, $HelferEmail, $HelferHandy, $HelferLevel, $PasswortHash, $HelferIsAdmin, $HelferID); } - //echo $sql; - $db_erg = mysqli_query($db_link, $sql); + + if (!mysqli_stmt_execute($stmt)) { die("HelferdatenAendern failed: " . mysqli_stmt_error($stmt)); } + + $result = true; echo "
  • Passwort geändert
  • "; - if ($AdminID != 0) { - error_log(date('Y-m-d H:i') . "(Admin $AdminID) Helferdaten update: Name: $HelferName (HelferID:$HelferID) Email: $HelferEmail Handy: $HelferHandy HelferLevel: $HelferLevel Passwort: neu gesetzt\n", 3, LOGFILE); - } else { - error_log(date('Y-m-d H:i') . "Helferdaten update: Name: $HelferName (HelferID:$HelferID) Email: $HelferEmail Handy: $HelferHandy HelferLevel: $HelferLevel Passwort: neu gesetzt\n", 3, LOGFILE); - } + + $log_prefix = ($AdminID != 0) ? "(Admin $AdminID) " : ""; + error_log(date('Y-m-d H:i') . " {$log_prefix}Helferdaten update: Name: $HelferName (HelferID:$HelferID) Email: $HelferEmail Handy: $HelferHandy HelferLevel: $HelferLevel Passwort: neu gesetzt\n", 3, LOGFILE); + + mysqli_stmt_close($stmt); } - if (! $db_erg) { - echo "HelferdatenAendern ungueltiges Statement"; - echo $sql; - die('Ungueltige Abfrage: ' . mysqli_error($db_link)); - } - - - return $db_erg; + return $result; } - - - -function AlleSchichten($db_link, $Sort, $HelferLevel = 1) +function AlleSchichten($db_link, $Sort, $HelferLevel = 1)#stmt { + $sql = "SELECT SchichtID,Was,DATE_FORMAT(Von,'%a %H:%i') AS Ab,"; + $sql .= "DATE_FORMAT(Bis,'%a %H:%i') AS Bis,C AS Ist,DATE_FORMAT(Von,'%W %d %M') AS Tag,Soll "; + $sql .= "FROM Dienst,SchichtUebersicht WHERE Dienst.DienstID=SchichtUebersicht.DienstID AND Dienst.Helferlevel=? "; + $sql .= ($Sort == '1') + ? " ORDER BY Von" + : " ORDER BY Was,Von"; - $Sort = mysqli_real_escape_string($db_link, $Sort); + $stmt = mysqli_prepare($db_link,$sql); + if (!$stmt) { die("Alleschichten prepare failed " . mysqli_error($db_link)); } - if ($Sort == '1') { - $sql = "select SchichtID,Was,DATE_FORMAT(Von,'%a %H:%i') AS Ab,DATE_FORMAT(Bis,'%a %H:%i') AS Bis,C AS Ist,DATE_FORMAT(Von,'%W %d %M') As Tag, Soll from Dienst,SchichtUebersicht where Dienst.DienstID=SchichtUebersicht.DienstID and Dienst.Helferlevel=$HelferLevel order by Von"; - } else { - $sql = "select SchichtID,Was,DATE_FORMAT(Von,'%a %H:%i') AS Ab,DATE_FORMAT(Bis,'%a %H:%i') AS Bis,C AS Ist,DATE_FORMAT(Von,'%W %d %M') As Tag, Soll from Dienst,SchichtUebersicht where Dienst.DienstID=SchichtUebersicht.DienstID and Dienst.Helferlevel=$HelferLevel order by Was,Von"; - } + mysqli_stmt_bind_param($stmt, "i", $HelferLevel); + if(!mysqli_stmt_execute($stmt)){die ( "AlleSchichten fehlgeschlagen. sort: $Sort err: " . mysqli_stmt_error($stmt));} - $db_erg = mysqli_query($db_link, $sql); - - if (! $db_erg) { - echo "AlleSchichten ungueltige Abfrage"; - echo $Sort; - die('Ungueltige Abfrage: ' . mysqli_error($db_link)); - } - - - return $db_erg; + $result = mysqli_stmt_get_result($stmt); + return $result; } -function AlleSchichtenCount($db_link, $HelferLevel = 1) +function AlleSchichtenCount($db_link, $HelferLevel = 1)#stmt { + $sql = "SELECT SUM(Soll) as Anzahl, HelferLevel + FROM SchichtUebersicht,Dienst + WHERE SchichtUebersicht.DienstID=Dienst.DienstID AND HelferLevel=?"; - //$sql = "select SUM(Soll) As Anzahl from SchichtUebersicht where HelferLevel=$HelferLevel"; - $sql = "select Sum(Soll) as Anzahl, HelferLevel from SchichtUebersicht,Dienst Where SchichtUebersicht.DienstID=Dienst.DienstID and HelferLevel=$HelferLevel"; + $stmt = mysqli_prepare($db_link,$sql); + if(!$stmt) { die("AlleSchichtenCount prepare failed: " . mysqli_error($db_link)); } + mysqli_stmt_bind_param($stmt, "i", $HelferLevel); + if(!mysqli_stmt_execute($stmt)){die("AlleSchichtenCount execute failed: " . mysqli_error($db_link));} - $db_erg = mysqli_query($db_link, $sql); + $result = mysqli_stmt_get_result($stmt); - if (! $db_erg) { - echo "AlleSchichtenCount ungueltige Abfrage"; - echo $Sort; - die('Ungueltige Abfrage: ' . mysqli_error($db_link)); - } - - $zeile = mysqli_fetch_array($db_erg, MYSQLI_ASSOC); + $zeile = mysqli_fetch_array($result, MYSQLI_ASSOC); return $zeile['Anzahl']; } -function AlleBelegteSchichtenCount($db_link, $HelferLevel = 1) +function AlleBelegteSchichtenCount($db_link, $HelferLevel = 1)#stmt { + $sql = "SELECT Count(HelferID) As Anzahl from EinzelSchicht,Schicht,Dienst "; + $sql .= "Where EinzelSchicht.SchichtID=Schicht.SchichtID and Schicht.DienstID=Dienst.DienstID and HelferLevel=?"; - $sql = "select Count(HelferID) As Anzahl from EinzelSchicht,Schicht,Dienst Where EinzelSchicht.SchichtID=Schicht.SchichtID and Schicht.DienstID=Dienst.DienstID and HelferLevel=$HelferLevel"; + $stmt = mysqli_prepare($db_link,$sql); + if(!$stmt){ die("AlleBelegteSchichtenCount prepare failed " . mysqli_error($db_link)); } + mysqli_stmt_bind_param($stmt, "i", $HelferLevel); + if(!mysqli_stmt_execute($stmt)){ die("AlleBelegteSchichtenCount execute failed: " . mysqli_stmt_error($stmt)); } + $result = mysqli_stmt_get_result($stmt); - $db_erg = mysqli_query($db_link, $sql); - - if (! $db_erg) { - echo "AlleSchichtenCount ungueltige Abfrage"; - echo $Sort; - die('Ungueltige Abfrage: ' . mysqli_error($db_link)); - } - - $zeile = mysqli_fetch_array($db_erg, MYSQLI_ASSOC); + $zeile = mysqli_fetch_array($result, MYSQLI_ASSOC); return $zeile['Anzahl']; } -function AlleSchichtenImZeitbereich($db_link, $Von, $Bis, $HelferLevel = 1) +function AlleSchichtenImZeitbereich($db_link, $Von, $Bis, $HelferLevel = 1)#stmt { error_log("AlleSchichtenImZeitbereich Abfrage: $Von, $Bis, $HelferLevel"); // SchichtID, Was, Ab, Bis, Ist, Tag, Soll - Ist und Soll sind die HelferStunden - $Von = mysqli_real_escape_string($db_link, $Von); - $Bis = mysqli_real_escape_string($db_link, $Bis); - $HelferLevel = mysqli_real_escape_string($db_link, $HelferLevel); - $sql_helferlevel = "and Dienst.HelferLevel=$HelferLevel"; - if ($HelferLevel == -1) { - $sql_helferlevel = ""; - } + # bei -1 nicht in Suche einschliessen + $sql_helferlevel = ($HelferLevel == -1) + ? "" + : "and Dienst.HelferLevel=?"; - $sql = "select SchichtID,Was,DATE_FORMAT(Von,'%a %H:%i') AS Ab,DATE_FORMAT(Bis,'%a %H:%i') AS Bis,C AS Ist,DATE_FORMAT(Von,'%W %d %M') As Tag, Soll from Dienst,SchichtUebersicht where Von >= '" . $Von . "' and Von <'" . $Bis . "' and Dienst.DienstID=SchichtUebersicht.DienstID $sql_helferlevel order by Was,Von"; + $sql = "SELECT SchichtID,Was, + DATE_FORMAT(Von,'%a %H:%i') AS Ab, + DATE_FORMAT(Bis,'%a %H:%i') AS Bis, + C AS Ist, + DATE_FORMAT(Von,'%W %d %M') As Tag, Soll + FROM Dienst,SchichtUebersicht + WHERE Von >= ? and Von < ? and Dienst.DienstID=SchichtUebersicht.DienstID $sql_helferlevel + ORDER BY Was,Von"; + $stmt = mysqli_prepare($db_link, $sql); error_log("AlleSchichtenImZeitbereich sql " . $sql); - $db_erg = mysqli_query($db_link, $sql); + if(!$stmt) { die("AlleSchichtenImZeitbereich prepare failed " . mysqli_error($db_link)); } - if (! $db_erg) { - echo "AlleSchichtenImZeitbereich ungueltige Abfrage
    "; - echo $sql; - die('
    Ungueltige Abfrage: ' . mysqli_error($db_link)); - } - - - return $db_erg; -} - - -function AlleSchichtenEinesHelfers($db_link, $HelferID) -{ - - $HelferID = mysqli_real_escape_string($db_link, $HelferID); - - $sql = "select EinzelSchicht.SchichtID ,EinzelSchichtID,Was,DATE_FORMAT(Von,'%a %H:%i') AS Ab,DATE_FORMAT(Bis,'%a %H:%i') AS Bis FROM EinzelSchicht,Schicht,Dienst where EinzelSchicht.SchichtID=Schicht.SchichtID and Schicht.DienstID = Dienst.DienstID and HelferID=" . $HelferID . " order by Von"; - - $db_erg = mysqli_query($db_link, $sql); - - if (! $db_erg) { - echo "AlleSchichtenEinesHelfers ungueltige Abfrage"; - echo $HelferID; - die('Ungueltige Abfrage: ' . mysqli_error($db_link)); - } - - - return $db_erg; -} - -function HelferLoeschen($db_link, $HelferID, $AdminID) -{ - - $HelferID = mysqli_real_escape_string($db_link, $HelferID); - - - $db_erg = Helferdaten($db_link, $HelferID); - while ($zeile = mysqli_fetch_array($db_erg, MYSQLI_ASSOC)) { - $HelferName = $zeile['Name']; - //echo "HelferName=$HelferName
    "; - } - - $db_erg = AlleSchichtenEinesHelfers($db_link, $HelferID); - - $AnzahlHelferschichten = mysqli_num_rows($db_erg); - if ($AnzahlHelferschichten == 0) { - $sql = "Delete from Helfer where HelferID='$HelferID'"; - $db_erg = mysqli_query($db_link, $sql); - if (! $db_erg) { - echo "Helfer $HelferName konnte nicht gelöscht werden
    "; - echo "$sql
    "; - return -2; - } else { - echo "Helfer $HelferName (HelferID:$HelferID) wurde erfolgreich geloescht
    "; - error_log(date('Y-m-d H:i') . "(Admin $AdminID) Helfer loeschen: Name: $HelferName (HelferID:$HelferID)\n", 3, LOGFILE); - return 1; - } + if ($Helferlevel == -1) + { + mysqli_stmt_bind_param($stmt, "ii", $Von, $Bis); } else { + mysqli_stmt_bind_param($stmt, "iii", $Von, $Bis, $HelferLevel); + } + if(!mysqli_stmt_execute($stmt)) { die ( "AlleSchichtenImZeitbereich query failed: " . mysqli_stmt_error($stmt));} + + $result = mysqli_stmt_get_result($stmt); + return $result ?: null; +} + + +function AlleSchichtenEinesHelfers($db_link, $HelferID)#stmt +{ + + $HelferID = mysqli_real_escape_string($db_link, $HelferID); + + $sql = "SELECT EinzelSchicht.SchichtID ,EinzelSchichtID,Was, + DATE_FORMAT(Von,'%a %H:%i') AS Ab, + DATE_FORMAT(Bis,'%a %H:%i') AS Bis + FROM EinzelSchicht,Schicht,Dienst + WHERE EinzelSchicht.SchichtID=Schicht.SchichtID and + Schicht.DienstID = Dienst.DienstID and HelferID=? + ORDER BY Von"; + $stmt = mysqli_prepare($db_link,$sql); + if(!$stmt) { die("AlleSchichtenEinesHelfers prepare failed " . mysqli_error($db_link));} + mysqli_stmt_bind_param($stmt, "i", $HelferID); + if(!mysqli_stmt_execute($stmt){ die("AlleSchichtenEinesHelfers execute failed HelferId $HelferID" . mysqli_stmt_error($stmt));} + $result = mysqli_smt_get_result($stmt); + return $result; +} + +function HelferLoeschen($db_link, $HelferID, $AdminID)#stmt +{ + $result = Helferdaten($db_link, $HelferID); + $HelferName = "(unbekannt)"; + while ($zeile = mysqli_fetch_array($result, MYSQLI_ASSOC)) { + $HelferName = $zeile['Name']; + } + + $result = AlleSchichtenEinesHelfers($db_link, $HelferID); + $AnzahlHelferschichten = mysqli_num_rows($result); + + if ($AnzahlHelferschichten > 0) { echo "Helfer $HelferName hat noch $AnzahlHelferschichten Schichten. Bitte erst die Schichten löschen
    "; return -1; } + + $stmt = mysqli_prepare($db_link, "DELETE FROM Helfer WHERE HelferID = ?"); + if (!$stmt) { + echo "Helfer $HelferName konnte nicht gelöscht werden
    "; + die("HelferLoeschen prepare failed: " . mysqli_error($db_link)); + } + + mysqli_stmt_bind_param($stmt, "i", $HelferID); + if (!mysqli_stmt_execute($stmt)) { + echo "Helfer $HelferName konnte nicht gelöscht werden
    "; + die("HelferLoeschen execute failed: " . mysqli_stmt_error($stmt)); + } + + echo "Helfer $HelferName (HelferID:$HelferID) wurde erfolgreich gelöscht
    "; + error_log(date('Y-m-d H:i') . "(Admin $AdminID) Helfer gelöscht: Name: $HelferName (HelferID:$HelferID)\n", 3, LOGFILE); + + return 1; } function SchichtIdArrayEinesHelfers($db_link, $HelferID) @@ -332,10 +381,6 @@ function AlleSchichtenEinesHelfersVonJetzt($db_link, $HelferID) // TODO: fix GETDATE() array to string conversion $sql = "select EinzelSchicht.SchichtID ,EinzelSchichtID,Was,DATE_FORMAT(Von,'%a %H:%i') AS Ab,DATE_FORMAT(Bis,'%a %H:%i') AS Bis FROM EinzelSchicht,Schicht,Dienst where EinzelSchicht.SchichtID=Schicht.SchichtID and Schicht.DienstID = Dienst.DienstID and HelferID=" . $HelferID . " and Bis>'" . date("Y-m-d H:i:s") . "' order by Von"; - - //$sql = "select EinzelSchicht.SchichtID ,EinzelSchichtID,Was,DATE_FORMAT(Von,'%a %H:%i') AS Ab,DATE_FORMAT(Bis,'%a %H:%i') AS Bis FROM EinzelSchicht,Schicht,Dienst where EinzelSchicht.SchichtID=Schicht.SchichtID and Schicht.DienstID = Dienst.DienstID and HelferID=".$HelferID." and Bis>'2023-05-20' order by Von"; - - //echo $sql; $db_erg = mysqli_query($db_link, $sql); if (! $db_erg) {