Erst anmelden: Login


"; include("templates/footer.inc.php"); exit; } ?>
'; echo "
"; echo ''; echo ''; echo ' '; //echo ''; echo "
"; echo '
'; ?>

Administration - Anfragen

Hallo ,
Herzlich Willkommen im internen Bereich!

Erst anmelden: Login


"; echo $_SESSION['userid']; }else{ if (($_POST["aktion"] ?? '') == "1") { echo "

Anfragen bearbeiten

"; echo "
"; echo '
'; echo '
'; echo '
'; echo '
'; echo "



"; //


?> prepare($sql); $stmt->execute($params); $rows = $stmt->fetchAll(PDO::FETCH_ASSOC); if($art == "1"){ echo ""; }else{ echo "
"; } echo ""; foreach ($rows as $row) { $anfrageid = $row["anfrageid"]; $userid = $row["userid"]; $checked = $row["checked"]; $workerid = $row["workerid"]; $date_created = $row["create_time"]; $update_time = $row["update_time"]; $vorname = $row["vorname"]; $nachname = $row["nachname"]; $mail = $row["email"]; $tel = $row["tele"]; $beantwortet = $row["beantwortet"]; $geburtstag = $row["geburtstag"]; $ausgabegeburstag = $geburtstag; $ort = $row["ort"]; $plz = $row["plz"]; $strasse = $row["strasse"]; $nachricht = $row["nachricht"]; $medikamenteins = $row["medikament1"]; $medikamentzwei = $row["medikament2"]; $medikamentdrei = $row["medikament3"]; $medikamentvier = $row["medikament4"]; $medikamentfuenf = $row["medikament5"]; $medikamentsechs = $row["medikament6"]; $dateiname = $row["dateiname"]; $anfrageart = $row["artname"]; $ordnungsid = $row["ordnungsid"]; $ordnungsstring = GetOrdnungsid($ordnungsid); $WeitereInfos= ""; $sicherenachricht = $row["sicherenachricht"]; if($sicherenachricht == "1"){ $WeitereInfos .= "Interne Anfrage
"; }else{ $WeitereInfos .= "Mailanfrage
"; } if($medikamenteins){ $WeitereInfos .= "Medikament1: $medikamenteins
"; } if($medikamentzwei){ $WeitereInfos .= "Medikament2: $medikamentzwei
"; } if($medikamentdrei){ $WeitereInfos .= "Medikament3: $medikamentdrei
"; } if($medikamentvier){ $WeitereInfos .= "Medikament4: $medikamentvier
"; } if($medikamentfuenf){ $WeitereInfos .= "Medikament5: $medikamentfuenf
"; } if($medikamentsechs){ $WeitereInfos .= "Medikament6: $medikamentsechs
"; } if($nachricht){ $WeitereInfos .= "Nachricht: $nachricht"; } if($dateiname){ $WeitereInfos .= "
Dateiname: $dateiname"; } #$datumausgabe= date("Y-m-d H:i", strtotime($date_created )); $currentDate = new DateTime($date_created); $datumausgabe = $currentDate->format('Y-m-d H:i'); $ausgabeworker = GetWorkerName($workerid); $farbe = GetStatusFarbe($checked); $checkausgabe = GetStatus($checked); $userausgabe = $vorname . " " . $nachname . "
" . $ausgabegeburstag; $adresse = $plz . " " . $ort . "
" . $strasse ; $adresse = $adresse; echo " "; } echo "
PersonAdresseAnfrageart/InfosErstellungStatusAktion
$userausgabe
$mail
Tel:$tel
$adresse$ordnungsstring - $anfrageart
$WeitereInfos
$datumausgabe$update_time
$checkausgabe
$ausgabeworker
"; if($beantwortet){ echo "
"; } echo"
"; // Benutzer nachtragen }else if (($_POST["aktion"] ?? '') == "2") { echo "
"; $anfrageid = (int)($_POST["anfrageid"] ?? 0); if ($anfrageid <= 0) { die("Ungültige Anfrage-ID"); } $sql = " SELECT a.*, p.vorname, p.nachname, p.email, p.tele, p.geburtstag, p.ort, p.plz, p.strasse, aa.artname FROM anfragen a INNER JOIN persons p ON a.requester_person_id = p.person_id INNER JOIN anfrageart aa ON a.anforderungart = aa.artid WHERE a.anfrageid = ? LIMIT 1 "; $stmt = $pdo->prepare($sql); $stmt->execute([$anfrageid]); $row = $stmt->fetch(PDO::FETCH_ASSOC); if (!$row) { echo "Anfrage nicht gefunden."; exit; } // Ticket und Antwort ansehen. $abholort = $row["abholort"] ?? null; $sicherenachricht = $row["sicherenachricht"] ?? null; $anfrageid = $row["anfrageid"]; $checked = $row["checked"]; $workerid = $row["workerid"]; $antwortid = $row["antwortid"] ?? null; $date_created = $row["create_time"]; $vorname = $row["vorname"]; $nachname = $row["nachname"]; $mail = $row["email"]; $tel = $row["tele"]; $geburtstag = $row["geburtstag"]; $ausgabegeburstag = $geburtstag; $ort = $row["ort"]; $plz = $row["plz"]; $strasse = $row["strasse"]; $ordnungsid = $row["ordnungsid"]; $ordnungsstring = GetOrdnungsid($ordnungsid); $nachricht = $row["nachricht"]; $medikamenteins = $row["medikament1"]; $medikamentzwei = $row["medikament2"]; $medikamentdrei = $row["medikament3"]; $medikamentvier = $row["medikament4"]; $medikamentfuenf = $row["medikament5"]; $medikamentsechs = $row["medikament6"]; $anfrageart = $row["artname"]; $antworttext = $row["antworttext"] ?? null; $WeitereInfos = ""; if ($medikamenteins) $WeitereInfos .= "Medikament1: $medikamenteins
"; if ($medikamentzwei) $WeitereInfos .= "Medikament2: $medikamentzwei
"; if ($medikamentdrei) $WeitereInfos .= "Medikament3: $medikamentdrei
"; if ($medikamentvier) $WeitereInfos .= "Medikament4: $medikamentvier
"; if ($medikamentfuenf) $WeitereInfos .= "Medikament5: $medikamentfuenf
"; if ($medikamentsechs) $WeitereInfos .= "Medikament6: $medikamentsechs
"; if ($nachricht) $WeitereInfos .= "Nachricht: $nachricht"; #$datumausgabe= date("d.m.Y H:i", strtotime($date_created )); $currentDate = new DateTime($date_created); $datumausgabe = $currentDate->format('d.m.Y H:i'); $ausgabeworker = GetWorkerName($workerid); $farbe = GetStatusFarbe($checked); $checkausgabe = GetStatus($checked); $userausgabe = $vorname . " " . $nachname; $adresse = $plz . " " . $ort . ", " . $strasse ; #$body = iconv('CP1252//IGNORE', 'UTF-8' , $antworttext); echo "Person:
$userausgabe
$mail

Anfrageinformationen:
$ordnungsstring - $anfrageart
$WeitereInfos

"; if($sicherenachricht == 1){ echo ''; }else{ echo ''; } if($abholort == "1"){ $selectid = "20"; }elseif($abholort == "2"){ $selectid = "21"; } echo "Wählen Sie die gewünschte Mailvorlage aus:

"; $stmt = $pdo->prepare(" SELECT name, templetid FROM mailtemplates WHERE mailbearbeitung = 1 ORDER BY name "); $stmt->execute(); $templates = $stmt->fetchAll(PDO::FETCH_ASSOC); echo ""; echo "

"; // E-Mail Vorlage laden $templetid = $_POST["templetid"] ?? ""; $templetid = trim($templetid); $body = $betreff = $name = ""; if ($templetid !== "") { $stmt = $pdo->prepare(" SELECT betreff, body, name FROM mailtemplates WHERE templetid = ? LIMIT 1 "); $stmt->execute([$templetid]); $rowconfig = $stmt->fetch(PDO::FETCH_ASSOC); if ($rowconfig) { $body = $rowconfig["body"] ?? ""; $betreff = $rowconfig["betreff"] ?? ""; $name = $rowconfig["name"] ?? ""; // Nur wenn du WIRKLICH CP1252 in der DB hast: // (bei utf8mb4 brauchst du das NICHT!) #$name = iconv('CP1252//IGNORE', 'UTF-8', $name); #$betreff = iconv('CP1252//IGNORE', 'UTF-8', $betreff); #$body = iconv('CP1252//IGNORE', 'UTF-8', $body); } } echo "

E-Mail bearbeiten


"; echo ""; echo "Betreff:
"; echo "
"; echo ''; echo ""; echo "

"; echo "
"; echo '
'; echo "

"; echo "

"; ZuruckzumAnfrageOverView(); ?> prepare(" SELECT acc.email, a.sicherenachricht FROM anfragen a LEFT JOIN persons acc ON acc.person_id = a.requester_person_id WHERE a.anfrageid = :anfrageid LIMIT 1 "); $stmt->execute([':anfrageid' => $anfrageid]); $rowuser = $stmt->fetch(PDO::FETCH_ASSOC); if (!$rowuser) { die("Anfrage nicht gefunden."); } $empfaenger = (string)$rowuser["email"]; $sicherenachricht = (int)$rowuser["sicherenachricht"]; // 2) Betreff + Body aus POST // Du speicherst in der DB offenbar CP1252 (weil du später iconv auf CP1252 machst) $betreff_cp1252 = $_POST["betreff"] ?? ""; $body_cp1252 = $_POST["body"] ?? ""; // 3) Anfrage updaten (mit prepared statement!) $stmt = $pdo->prepare(" UPDATE anfragen SET beantwortet = 1, checked = 10, workerid = :workerid, antwortid = :antwortid, antworttext = :antworttext, mailtime = :mailtime WHERE anfrageid = :anfrageid "); $ok = $stmt->execute([ ':workerid' => (int)$user["id"], ':antwortid' => $templetid, ':antworttext' => $body_cp1252, ':mailtime' => date("Y-m-d H:i:s"), ':anfrageid' => $anfrageid, ]); try { // 1) Mail senden $mailOk = false; if ((int)$sicherenachricht === 1) { SendMailMessageVorlage($pdo, "3", $anfrageid, "43"); // muss true/false liefern $mailOk = true; } else { $mailOk = SendMailMessage($pdo, $empfaenger, $_POST["betreff"], $_POST["body"]); // true/false } if (!$mailOk) { throw new RuntimeException("E-Mail konnte nicht versendet werden."); } // 2) DB erst jetzt updaten $stmt = $pdo->prepare(" UPDATE anfragen SET beantwortet = 1, checked = 10, workerid = :workerid, antwortid = :antwortid, antworttext = :antworttext, mailtime = :mailtime WHERE anfrageid = :anfrageid "); $stmt->execute([ ':workerid' => (int)$user["id"], ':antwortid' => (int)$templetid, ':antworttext' => $body_cp1252, ':mailtime' => date("Y-m-d H:i:s"), ':anfrageid' => (int)$anfrageid, ]); echo "

Mail wurde versendet

"; } catch (Throwable $e) { echo "

Fehler

"; echo "E-Mailversand fehlgeschlagen – es wurde nichts gespeichert.
"; } }else if (($_POST["aktion"] ?? '') == "4") { echo "

Urlaubsplanung

"; echo "Während des Urlaubs können keine Anfragen an das Praxis Team gestellt werden.

"; echo ''; try { $heute = date("Y-m-d"); $stmt = $pdo->prepare(" SELECT urlaubid, start, ende, vertretung, vertretertelefon, vertreteradresse, vertreterurl FROM urlaub WHERE ende >= :heute ORDER BY start ASC "); $stmt->execute([':heute' => $heute]); $rows = $stmt->fetchAll(PDO::FETCH_ASSOC); echo "

Aktuell gibt es folgende Urlaubseinträge

"; echo "Soll der Urlaub deaktiviert / gelöscht werden, dann das Anfangs- und Enddatum in die Vergangenheit legen und den Eintrag speichern.

"; echo "

Eintragungshinweis

"; echo "Bei der Einrichtung bedenken, dass freie Tage (Wochenende, Feiertage) nicht erkannt werden.
So sollten Sie bei Urlaub ab Montag hier den Starttermin auf Freitag oder Samstag stellen.
Gleiches gilt für ein Ende an einem Freitag. Tragen Sie dann hier als Ende Sonntag ein.


"; echo '
'; foreach ($rows as $row) { $start = (string)$row["start"]; $ende = (string)$row["ende"]; $vertretung = (string)$row["vertretung"]; $vertretertelefon = (string)$row["vertretertelefon"]; $vertreteradresse = (string)$row["vertreteradresse"]; $vertreterurl = (string)$row["vertreterurl"]; $urlaubid = (int)$row["urlaubid"]; echo "Start: Ende:
Vertretung: "; echo "
Vertretung Telefon:
Vertretung Adresse: "; echo "
Vertretung Webseite: "; echo "
"; } echo '
'; echo "

"; echo ""; // Fix: href="javascript:..." war falsch geschrieben (fehlendes =) echo 'Neuer Zeitslot'; } catch (PDOException $e) { // Kein echo vom SQL direkt ins Frontend in Prod – aber zum Debuggen ok: die("Datenbankfehler: " . htmlspecialchars($e->getMessage(), ENT_QUOTES, 'UTF-8')); } echo "

"; }else if (($_POST["aktion"] ?? '') == "5") { // Termine in DB speichern. $i =0; foreach ($_POST['Starttime'] as $Starttime) { //echo $datum . "
"; if($_POST["Starttime"][$i] != "0000-00-00"){ //echo $_POST["urlaubid"][$i] . "
"; $stmt = $pdo->prepare(" INSERT INTO urlaub (urlaubid, vertretung, start, ende, vertretertelefon, vertreteradresse, vertreterurl) VALUES (:urlaubid, :vertretung, :start, :ende, :telefon, :adresse, :url) ON DUPLICATE KEY UPDATE vertretung = VALUES(vertretung), start = VALUES(start), ende = VALUES(ende), vertretertelefon = VALUES(vertretertelefon), vertreteradresse = VALUES(vertreteradresse), vertreterurl = VALUES(vertreterurl) "); $ok = $stmt->execute([ ':urlaubid' => (int)$_POST['urlaubid'][$i], // 0 = INSERT, >0 = UPDATE ':vertretung' => $_POST['vertretung'][$i], ':start' => $_POST['Starttime'][$i], ':ende' => $_POST['Endetime'][$i], ':telefon' => $_POST['vertretertelefon'][$i], ':adresse' => $_POST['vertreteradresse'][$i], ':url' => $_POST['vertreterurl'][$i], ]); if (!$ok) { throw new RuntimeException("Fehler beim Eintragen in der Datenbank."); } } $i++; } echo "Einträge wurden in der Datenbank gespeichert!

"; }else if (($_POST["aktion"] ?? '') == "6") { echo "

Notfallsprechstunde

"; echo "Während der Notfallsprechstunde gibt es einen Hinweisfeld auf der Hauptseite, aber es können noch Anfragen an das Praxis Team gestellt werden.
"; echo "Wird Urlaub aktiviert, dann gibt es keinen Hinweis auf die Notfallsprechstunde
"; // Check connection try { $heute = date("Y-m-d"); $stmt = $pdo->prepare(" SELECT * FROM notfallsprechstunde WHERE ende >= :heute ORDER BY ende ASC "); $stmt->execute([':heute' => $heute]); $rows = $stmt->fetchAll(PDO::FETCH_ASSOC); } catch (PDOException $e) { die("Datenbankfehler: " . $e->getMessage()); } echo "

Aktuell gibt es folgende Einträge für die Notfallsprechstunde

"; echo "Soll die Notfallsprechstunde deaktiviert / gelöscht werden, dann das Anfangs- und Enddatum in die Vergangenheit legen und den Eintrag speichern.


"; echo '
'; foreach ($rows as $row) { $start = $row["start"]; $ende = $row["ende"]; $hinweis = $row["hinweis"]; $notfallid = (int)$row["notfallid"]; echo "

Termin " . htmlspecialchars($start, ENT_QUOTES, 'UTF-8') . " - " . htmlspecialchars($ende, ENT_QUOTES, 'UTF-8') . "

"; echo "Start: "; echo "Ende:
"; echo "
Hinweis: (Dieser Hinweis wird eins zu eins auf der Hauptseite angezeigt!):
"; echo ""; echo "
"; } echo "
"; echo "

"; echo ""; echo 'Neuer Zeitslot'; echo "

"; }else if (($_POST["aktion"] ?? '') == "7") { // Termine in DB speichern. try { $pdo->beginTransaction(); $insertStmt = $pdo->prepare(" INSERT INTO notfallsprechstunde (start, ende, hinweis) VALUES (:start, :ende, :hinweis) "); $updateStmt = $pdo->prepare(" UPDATE notfallsprechstunde SET start = :start, ende = :ende, hinweis = :hinweis WHERE notfallid = :notfallid "); foreach (($_POST['Starttime'] ?? []) as $i => $start) { $start = (string)$start; $ende = (string)($_POST['Endetime'][$i] ?? ''); $hinweis = (string)($_POST['hinweis'][$i] ?? ''); $notfallid = (int)($_POST['notfallid'][$i] ?? 0); // Skip leere / ungültige Datumseinträge if ($start === '' || $start === '0000-00-00') { continue; } if ($notfallid === 0) { $insertStmt->execute([ ':start' => $start, ':ende' => $ende, ':hinweis' => $hinweis, ]); } else { $updateStmt->execute([ ':start' => $start, ':ende' => $ende, ':hinweis' => $hinweis, ':notfallid' => $notfallid, ]); } } $pdo->commit(); echo "Einträge wurden in der Datenbank gespeichert!

"; } catch (PDOException $e) { if ($pdo->inTransaction()) { $pdo->rollBack(); } die("Fehler beim Eintragen in der Datenbank: " . $e->getMessage()); } echo'
'; } else if (($_POST["aktion"] ?? '') == "8") { $anfrageid = (int)($_POST["anfrageid"] ?? 0); $stmt = $pdo->prepare(" SELECT * FROM anfragen a INNER JOIN persons p ON p.person_id = a.requester_person_id WHERE a.anfrageid = :anfrageid LIMIT 1 "); $stmt->execute([ ':anfrageid' => $anfrageid ]); $rowtime = $stmt->fetch(PDO::FETCH_ASSOC); if (!$rowtime) { die("Anfrage nicht gefunden"); } $vorname = $rowtime["vorname"]; $nachname = $rowtime["nachname"]; $userausgabe = $vorname . " " . $nachname; echo "Name:
$userausgabe
Anforderung: $impfstofftext
"; echo "Wollen Sie wirklich diesen Eintrag löschen?
Dieses ist nicht rückgängig zu machen!
Dann bestätigen Sie die Abmeldung:
"; echo "
"; echo ''; echo '
'; echo ''; echo "
"; echo ""; echo ''; echo '
'; echo ''; echo "
"; echo "

"; echo "

"; ZuruckzumAnfrageOverView(); // Benutzer absagen bestätigen? }else if (($_POST["aktion"] ?? '') == "9") { $anfrageid = (int)($_POST["anfrageid"] ?? 0); if ($anfrageid <= 0) { die("Ungültige Anfrage-ID"); } try { $pdo->beginTransaction(); // sicherstellen, dass Anfrage existiert $stmt = $pdo->prepare("SELECT anfrageid FROM anfragen WHERE anfrageid = :anfrageid LIMIT 1"); $stmt->execute([':anfrageid' => $anfrageid]); if (!$stmt->fetch(PDO::FETCH_ASSOC)) { throw new RuntimeException("Anfrage nicht gefunden"); } // Update vorbereiten/ausführen $stmt = $pdo->prepare(" UPDATE anfragen SET beantwortet = 1, checked = 30, workerid = :workerid, antwortid = 0 WHERE anfrageid = :anfrageid "); $stmt->execute([ ':workerid' => (int)($user["id"] ?? 0), ':anfrageid' => $anfrageid, ]); // Mail senden (muss true liefern oder Exception werfen) $mailOk = SendMailMessageVorlage($pdo, "3", $anfrageid, "5"); $mailOk = true; if ($mailOk !== true) { throw new RuntimeException("E-Mailversand fehlgeschlagen"); } $pdo->commit(); echo "

Die Anfrage wurde erfolgreich gelöscht!


"; echo "Der Kunde erhält gleich eine schriftliche Bestätigung per E-Mail
"; } catch (Throwable $e) { if ($pdo->inTransaction()) { $pdo->rollBack(); } echo "

Fehler:

" . htmlspecialchars($e->getMessage(), ENT_QUOTES, 'UTF-8'); } echo "
"; echo "


"; ZuruckzumAnfrageOverView(); //Termin für den Benutzerraussuchen }else if (($_POST["aktion"] ?? '') == "10") { $anfrageid = (int)($_POST["anfrageid"] ?? 0); if ($anfrageid <= 0) { die("Ungültige Anfrage-ID"); } // 1) Anfrage + Person laden (JOIN persons statt user) $stmt = $pdo->prepare(" SELECT a.anfrageid, a.checked, a.timeid, a.requester_person_id, p.vorname, p.nachname, p.mail, p.tele, p.jahrgang FROM anfragen a INNER JOIN persons p ON p.person_id = a.requester_person_id WHERE a.anfrageid = :anfrageid LIMIT 1 "); $stmt->execute([':anfrageid' => $anfrageid]); $row = $stmt->fetch(PDO::FETCH_ASSOC); if (!$row) { die("Anfrage nicht gefunden"); } $requesterPersonId = (int)$row["requester_person_id"]; $checked = (int)$row["checked"]; $timeid = $row["timeid"]; // kann NULL sein $vorname = $row["vorname"]; $nachname = $row["nachname"]; $mail = $row["mail"]; $tel = $row["tele"]; $jahrgang = $row["jahrgang"]; $userausgabe = $vorname . " " . $nachname; // Debug wie vorher (falls du es noch brauchst) echo htmlspecialchars((string)$timeid, ENT_QUOTES, 'UTF-8'); // 2) Anfrage “löschen/abschließen” (ohne Mail) $stmt = $pdo->prepare(" UPDATE anfragen SET beantwortet = 1, checked = 31, workerid = :workerid, antwortid = 0 WHERE anfrageid = :anfrageid "); $ok = $stmt->execute([ ':workerid' => (int)($user["id"] ?? 0), ':anfrageid' => $anfrageid, ]); if ($ok) { echo "

Der Termin wurde erfolgreich gelöscht!


"; echo "Der Kunde erhält keine schriftliche Bestätigung per E-Mail


"; } else { echo "

Fehler beim Update.

"; } echo "


"; ZuruckzumAnfrageOverView(); }else if (($_POST["aktion"] ?? '') == "11") { $anfrageid_post = (int)($_POST["anfrageid"] ?? 0); if ($anfrageid_post <= 0) { die("Ungültige Anfrage-ID"); } $stmt = $pdo->prepare(" SELECT a.anfrageid, a.checked, a.workerid, a.antwortid, a.antworttext, a.create_time, a.ordnungsid, a.nachricht, a.medikament1, a.medikament2, a.sicherenachricht, a.abholort, p.person_id, p.vorname, p.nachname, p.email, p.tele, p.geburtstag, p.ort, p.plz, p.strasse, aa.artname AS anfrageart_name FROM anfragen a INNER JOIN persons p ON p.person_id = a.requester_person_id INNER JOIN anfrageart aa ON a.anforderungart = aa.artid WHERE a.anfrageid = :anfrageid LIMIT 1 "); $stmt->execute([':anfrageid' => $anfrageid_post]); $row = $stmt->fetch(PDO::FETCH_ASSOC); if (!$row) { die("Anfrage nicht gefunden."); } /* --- Werte aus DB --- */ $anfrageid = (int)$row["anfrageid"]; $checked = (int)$row["checked"]; $workerid = (int)$row["workerid"]; $antwortid = (int)($row["antwortid"] ?? 0); $dateCreated = $row["create_time"] ?? null; $vorname = $row["vorname"] ?? ""; $nachname = $row["nachname"] ?? ""; $mail = $row["email"] ?? ""; $tel = $row["tele"] ?? ""; $geburtstag = $row["geburtstag"] ?? ""; $ausgabegeburstag = $geburtstag; $ort = $row["ort"] ?? ""; $plz = $row["plz"] ?? ""; $strasse = $row["strasse"] ?? ""; $ordnungsid = $row["ordnungsid"] ?? null; $ordnungsstring = GetOrdnungsid($ordnungsid); $nachricht = $row["nachricht"] ?? ""; $medikamenteins = $row["medikament1"] ?? ""; $medikamentzwei = $row["medikament2"] ?? ""; $anfrageart = $row["anfrageart_name"] ?? ""; $antworttext = $row["antworttext"] ?? ""; /* --- Anzeige-Strings --- */ $WeitereInfos = ""; if (!empty($medikamenteins)) { $WeitereInfos .= "Medikament1: " . htmlspecialchars($medikamenteins, ENT_QUOTES, 'UTF-8') . "
"; } if (!empty($medikamentzwei)) { $WeitereInfos .= "Medikament2: " . htmlspecialchars($medikamentzwei, ENT_QUOTES, 'UTF-8') . "
"; } if (!empty($nachricht)) { // Wenn $nachricht HTML enthalten darf: NICHT htmlspecialchars verwenden! // Sonst XSS-Risiko. Dann lieber erlaubte Tags mit strip_tags whitelist. $WeitereInfos .= "Nachricht: " . nl2br(htmlspecialchars($nachricht, ENT_QUOTES, 'UTF-8')); } $datumausgabe = ""; if (!empty($dateCreated)) { $currentDate = new DateTime($dateCreated); $datumausgabe = $currentDate->format('d.m.Y H:i'); } $ausgabeworker = GetWorkerName($workerid); $farbe = GetStatusFarbe($checked); $checkausgabe = GetStatus($checked); $userausgabe = trim($vorname . " " . $nachname); $adresse = trim($plz . " " . $ort . ", " . $strasse); /* --- Betreff + Body der Antwortvorlage laden (optional) --- */ $betreff = ""; $templateBody = ""; if ($antwortid > 0) { $stmtT = $pdo->prepare(" SELECT betreff, body FROM mailtemplates WHERE templetid = :tid LIMIT 1 "); $stmtT->execute([':tid' => $antwortid]); $tpl = $stmtT->fetch(PDO::FETCH_ASSOC); if ($tpl) { // DB ist bei dir oft CP1252 gespeichert: $betreff = iconv('CP1252//IGNORE', 'UTF-8', $tpl["betreff"] ?? ""); $templateBody = iconv('CP1252//IGNORE', 'UTF-8', $tpl["body"] ?? ""); } } // Falls du statt Template den gespeicherten Antworttext anzeigen willst: $body = iconv('CP1252//IGNORE', 'UTF-8', $antworttext); /* --- Output --- */ echo "Person:
" . htmlspecialchars($userausgabe, ENT_QUOTES, 'UTF-8') . "
" . htmlspecialchars($mail, ENT_QUOTES, 'UTF-8') . "
" . htmlspecialchars($tel, ENT_QUOTES, 'UTF-8') . "

" . "Adresse:
" . htmlspecialchars($adresse, ENT_QUOTES, 'UTF-8') . "

" . "Anfrageinformationen:
" . htmlspecialchars($ordnungsstring, ENT_QUOTES, 'UTF-8') . " - " . htmlspecialchars($anfrageart, ENT_QUOTES, 'UTF-8') . "
" . $WeitereInfos . "

" . "Status der Anfrage:
" . htmlspecialchars($checkausgabe, ENT_QUOTES, 'UTF-8') . " - " . htmlspecialchars($datumausgabe, ENT_QUOTES, 'UTF-8') . "
" . htmlspecialchars($ausgabeworker, ENT_QUOTES, 'UTF-8'); echo "

"; echo "Vorlage der Antwortmail:
"; echo "Betreff: " . htmlspecialchars($betreff, ENT_QUOTES, 'UTF-8') . "
"; echo "Inhalt:
"; echo $body . "
"; // bewusst NICHT escaped, wenn HTML im Body erlaubt ist echo "

"; ZuruckzumAnfrageOverView(); }else if (($_POST["aktion"] ?? '') == "benutzersuche") { #echo '
';
		#print_r($_POST);
		#echo '
'; echo "

Anfragenübersicht

"; if(is_null($_POST["userid_input"]) || $_POST["userid_input"] == "" ){ echo "Sie haben keinen Benutzer über die Autovervollständigung ausgewählt.
Deswegen wählen Sie aus diesem Drop-Down-Menü aus.

"; $term = trim(strip_tags($_POST["skill_input"])); $like = "%" . $term . "%"; $sql = " SELECT person_id, vorname, nachname, geburtstag, email, tele FROM persons WHERE vorname LIKE :term OR nachname LIKE :term OR email LIKE :term OR tele LIKE :term ORDER BY nachname, vorname "; $stmt = $pdo->prepare($sql); $stmt->execute([':term' => $like]); $rows = $stmt->fetchAll(PDO::FETCH_ASSOC); echo "
"; echo ''; echo ''; echo ''; echo "

"; echo ""; echo "
"; }else{ ?>

Hier finden Sie die letzten 20 Anfragen des Benutzers.

prepare(" SELECT person_id, vorname, nachname, email, tele, geburtstag FROM persons WHERE person_id = :pid LIMIT 1 "); $stmtPerson->execute([':pid' => $personId]); $rowperson = $stmtPerson->fetch(PDO::FETCH_ASSOC); if (!$rowperson) { die("Person nicht gefunden."); } $vorname = $rowperson["vorname"] ?? ""; $nachname = $rowperson["nachname"] ?? ""; $mail = $rowperson["email"] ?? ""; $tel = $rowperson["tele"] ?? ""; $geburtstag = $rowperson["geburtstag"] ?? ""; $ausgabegeburstag = ($geburtstag === "0000-00-00" || $geburtstag === "" || $geburtstag === null) ? $jahrgang : $geburtstag; echo "Benutzer " . htmlspecialchars($vorname, ENT_QUOTES, 'UTF-8') . " " . htmlspecialchars($nachname, ENT_QUOTES, 'UTF-8') . "

"; $stmt = $pdo->prepare(" SELECT a.anfrageid, a.requester_person_id, a.checked, a.workerid, a.create_time, a.nachricht, a.ordnungsid, a.medikament1, a.medikament2, a.medikament3, a.medikament4, a.medikament5, a.medikament6, aa.artname AS anfrageart_name, p.vorname, p.nachname, p.email, p.tele, p.geburtstag, p.ort, p.plz, p.strasse FROM anfragen a INNER JOIN persons p ON p.person_id = a.requester_person_id INNER JOIN anfrageart aa ON aa.artid = a.anforderungart WHERE a.requester_person_id = :pid ORDER BY a.create_time DESC LIMIT 20 "); $stmt->execute([':pid' => $personId]); echo ''; echo ''; echo ""; while ($row = $stmt->fetch(PDO::FETCH_ASSOC)) { $anfrageid = (int)$row["anfrageid"]; $checked = (int)$row["checked"]; $workerid = (int)$row["workerid"]; $dateCreated = $row["create_time"] ?? ""; $vorname = $row["vorname"] ?? ""; $nachname = $row["nachname"] ?? ""; $mail = $row["email"] ?? ""; $tel = $row["tele"] ?? ""; $geburtstag = $row["geburtstag"] ?? ""; $jahrgang = $row["jahrgang"] ?? ""; $ausgabegeburstag = ($geburtstag === "0000-00-00" || $geburtstag === "" || $geburtstag === null) ? $jahrgang : $geburtstag; $ort = $row["ort"] ?? ""; $plz = $row["plz"] ?? ""; $strasse = $row["strasse"] ?? ""; $nachricht = $row["nachricht"] ?? ""; $med1 = $row["medikament1"] ?? ""; $med2 = $row["medikament2"] ?? ""; $med3 = $row["medikament3"] ?? ""; $med4 = $row["medikament4"] ?? ""; $med5 = $row["medikament5"] ?? ""; $med6 = $row["medikament6"] ?? ""; $anfrageart = $row["anfrageart_name"] ?? ""; $ordnungsid = $row["ordnungsid"] ?? null; $ordnungsstring = GetOrdnungsid($ordnungsid); $WeitereInfos = ""; if (!empty($med1)) $WeitereInfos .= "Medikament1: " . htmlspecialchars($med1, ENT_QUOTES, 'UTF-8') . "
"; if (!empty($med2)) $WeitereInfos .= "Medikament2: " . htmlspecialchars($med2, ENT_QUOTES, 'UTF-8') . "
"; if (!empty($med3)) $WeitereInfos .= "Medikament3: " . htmlspecialchars($med3, ENT_QUOTES, 'UTF-8') . "
"; if (!empty($med4)) $WeitereInfos .= "Medikament4: " . htmlspecialchars($med4, ENT_QUOTES, 'UTF-8') . "
"; if (!empty($med5)) $WeitereInfos .= "Medikament5: " . htmlspecialchars($med5, ENT_QUOTES, 'UTF-8') . "
"; if (!empty($med6)) $WeitereInfos .= "Medikament6: " . htmlspecialchars($med6, ENT_QUOTES, 'UTF-8') . "
"; if (!empty($nachricht)) { $WeitereInfos .= "Nachricht: " . nl2br(htmlspecialchars($nachricht, ENT_QUOTES, 'UTF-8')); } $userausgabe = trim($vorname . " " . $nachname) . "
" . htmlspecialchars((string)$ausgabegeburstag, ENT_QUOTES, 'UTF-8'); $adresse = trim($plz . " " . $ort . "
" . $strasse); $farbe = GetStatusFarbe($checked); $checkausgabe = GetStatus($checked); echo ""; echo ""; echo ""; echo ""; echo ""; } echo "
Person/AdresseAnfrage/StatusAktion
" . htmlspecialchars(trim($vorname . " " . $nachname), ENT_QUOTES, 'UTF-8') . "
" . htmlspecialchars($mail, ENT_QUOTES, 'UTF-8') . "
Tel: " . htmlspecialchars($tel, ENT_QUOTES, 'UTF-8') . "" . "
" . htmlspecialchars($plz . " " . $ort . ", " . $strasse, ENT_QUOTES, 'UTF-8') . "
" . htmlspecialchars($ordnungsstring, ENT_QUOTES, 'UTF-8') . " - " . htmlspecialchars($anfrageart, ENT_QUOTES, 'UTF-8') . "

" . $WeitereInfos . "

" . htmlspecialchars($checkausgabe, ENT_QUOTES, 'UTF-8') . "" . "
" . htmlspecialchars($dateCreated, ENT_QUOTES, 'UTF-8') . "
"; //echo "
"; echo "

"; echo "

Impfübersicht Benutzer

"; $personId = (int)($_POST["userid_input"] ?? 0); if ($personId <= 0) { die("Ungültige Person-ID"); } // Person laden (persons statt user) $stmtPerson = $pdo->prepare(" SELECT person_id, vorname, nachname, email, tele, geburtstag FROM persons WHERE person_id = :pid LIMIT 1 "); $stmtPerson->execute([':pid' => $personId]); $rowperson = $stmtPerson->fetch(PDO::FETCH_ASSOC); if (!$rowperson) { die("Person nicht gefunden."); } $vorname = $rowperson["vorname"] ?? ""; $nachname = $rowperson["nachname"] ?? ""; $mail = $rowperson["email"] ?? ""; $tel = $rowperson["tele"] ?? ""; $geburtstag = $rowperson["geburtstag"] ?? ""; $ausgabegeburstag = ($geburtstag === "0000-00-00" || $geburtstag === "" || $geburtstag === null) ? $jahrgang : $geburtstag; echo "Benutzer " . htmlspecialchars($vorname, ENT_QUOTES, "UTF-8") . " " . htmlspecialchars($nachname, ENT_QUOTES, "UTF-8") . "
"; // Umbuchen-Form (person_id weitergeben) echo "
"; // --- Impftermine zählen (prepared statt query) $sqlImpftermine = " SELECT it.*, ts.* FROM impftermin it INNER JOIN timeslots ts ON it.timeid = ts.timeid WHERE it.userid = :pid ORDER BY ts.date DESC, ts.start "; $stmt = $pdo->prepare($sqlImpftermine); $stmt->execute([':pid' => $personId]); $count = $stmt->rowCount(); echo "

Impftermine

"; if ($count == 0) { echo "Der Benutzer hat keine Impftermine.

"; } else { // Wenn deine Funktion SQL-String erwartet: // Achtung: dann müsste ShowImpfTerminTab intern selbst mit PDO arbeiten // Besser: du gibst ihr $personId und lässt sie selber abfragen. $sqlImpftermine = " SELECT it.*, ts.* FROM impftermin it INNER JOIN timeslots ts ON it.timeid = ts.timeid WHERE it.userid = $personId ORDER BY ts.date DESC, ts.start "; ShowImpfTerminTab($sqlImpftermine); // falls du es so erweitern kannst // Alternativ (wenn ShowImpfTerminTab nur String kann): du musst die Funktion anpassen. } echo "

Warteliste

"; $sqlWarte = " SELECT * FROM warteliste WHERE userid = :pid "; $stmtW = $pdo->prepare($sqlWarte); $stmtW->execute([':pid' => $personId]); $countW = $stmtW->rowCount(); if ($countW == 0) { echo "Der Benutzer hat keinen Wartelistenplatz.

"; } else { ShowWartelisteTab($sqlWarte, [':pid' => $personId]); // falls du es so erweitern kannst } } }else if (($_POST["aktion"] ?? '') == "12") { // Auswertung von Anfragen echo "Hier wird eine Auswertung über alle Tickets angezeigt:

"; $today = date('Y-m-d'); #$siebentagezurueck = date('Y-m-d 00:00:00', strtotime($today . ' -7 day')); $currentDate = new DateTime(); //Use the subtract function to subtract a DateInterval $yesterdayTime = $currentDate->sub(new DateInterval('P7D')); //Get yesterday date $siebentagezurueck = $yesterdayTime->format('Y-m-d 00:00:00'); $currentDate = new DateTime(); //Use the subtract function to subtract a DateInterval $yesterdayTime = $currentDate->sub(new DateInterval('P1Y')); //Get yesterday date $letzterjahrstring = $yesterdayTime->format('Y-m-d 00:00:00'); $currentDate = new DateTime(); //Use the subtract function to subtract a DateInterval $yesterdayTime = $currentDate->sub(new DateInterval('P1M')); //Get yesterday date $letztermonatstring = $yesterdayTime->format('Y-m-d 00:00:00'); #$letztermonatstring = date('Y-m-01 00:00:00', strtotime($today . ' - 1 month')); #$letzterjahrstring = date('Y-01-01 00:00:00', strtotime($today . ' - 1 year')); $diesesjahrzurueck = date('Y-01-01 00:00:00'); $diesesmonatstring = date('Y-m-01 00:00:00'); $sql = " SELECT u.vorname, u.nachname, a.workerid, COUNT(*) AS alltimenum, SUM(CASE WHEN a.create_time >= :diesesjahrzurueck THEN 1 ELSE 0 END) AS allyeartime, SUM(CASE WHEN a.create_time >= :diesesmonatstring THEN 1 ELSE 0 END) AS thismonthtime, SUM(CASE WHEN a.create_time >= :letzterjahrstring AND a.create_time <= :diesesjahrzurueck THEN 1 ELSE 0 END) AS lastyeartime, SUM(CASE WHEN a.create_time >= :letztermonatstring AND a.create_time <= :diesesmonatstring THEN 1 ELSE 0 END) AS lastmonthtime, SUM(CASE WHEN a.create_time >= :siebentagezurueck THEN 1 ELSE 0 END) AS lastweektime, MIN(a.create_time) AS begintime FROM anfragen a INNER JOIN users_worker uw ON a.workerid = uw.workerid INNER JOIN users u ON uw.userid = u.id WHERE a.workerid != 0 GROUP BY a.workerid ORDER BY u.nachname, u.vorname "; $stmt = $pdo->prepare($sql); $stmt->execute([ ':diesesjahrzurueck' => $diesesjahrzurueck, ':diesesmonatstring' => $diesesmonatstring, ':letzterjahrstring' => $letzterjahrstring, ':letztermonatstring' => $letztermonatstring, ':siebentagezurueck' => $siebentagezurueck, ]); echo ""; echo ""; $gesamtletztewoche = 0; $gesamtletztenmonat = 0; $gesamtdiesenmonat = 0; $gesamtdiesesjahr = 0; $gesamtletztesjahr = 0; $gesamtgesamt = 0; while ($row = $stmt->fetch(PDO::FETCH_ASSOC)) { $begintime = $row["begintime"] ?? null; if ($begintime) { $currentDate = new DateTime($begintime); $begintime = $currentDate->format('d.m.Y'); } else { $begintime = "-"; } $workerid = (int)($row["workerid"] ?? 0); $alltimenum = (int)($row["alltimenum"] ?? 0); $allyeartime = (int)($row["allyeartime"] ?? 0); $lastweektime = (int)($row["lastweektime"] ?? 0); $thismonthtime = (int)($row["thismonthtime"] ?? 0); $lastmonthtime = (int)($row["lastmonthtime"] ?? 0); $lastyeartime = (int)($row["lastyeartime"] ?? 0); // Summen $gesamtletztewoche += $lastweektime; $gesamtletztenmonat += $lastmonthtime; $gesamtdiesenmonat += $thismonthtime; $gesamtdiesesjahr += $allyeartime; $gesamtletztesjahr += $lastyeartime; $gesamtgesamt += $alltimenum; $vorname = htmlspecialchars($row["vorname"] ?? "", ENT_QUOTES, 'UTF-8'); $nachname = htmlspecialchars($row["nachname"] ?? "", ENT_QUOTES, 'UTF-8'); echo " "; } echo " "; echo "
Person letzten 7 Tage Dieses Monat Letzter Monat Dieses Jahr Letztes Jahr Seit Beginn
$nachname, $vorname $lastweektime $thismonthtime $lastmonthtime $allyeartime $lastyeartime $alltimenum seit $begintime
Gesamt: $gesamtletztewoche $gesamtdiesenmonat $gesamtletztenmonat $gesamtdiesesjahr $gesamtletztesjahr $gesamtgesamt
"; echo "

Auswertung durchschnittliche Bearbeitungszeit

"; $sql = " SELECT AVG(DATEDIFF(mailtime, create_time)) AS dauer, COUNT(*) AS anzahl FROM anfragen WHERE create_time >= :siebentage AND mailtime IS NOT NULL "; $stmtAvg = $pdo->prepare($sql); $stmtAvg->execute([ ':siebentage' => $siebentagezurueck ]); $row = $stmtAvg->fetch(PDO::FETCH_ASSOC); $dauer = (float)($row["dauer"] ?? 0); $anzahl = (int)($row["anzahl"] ?? 0); $dauerstunden = ceil($dauer * 24); echo " Es wurden $anzahl Anfragen in den letzten sieben Tagen bearbeitet.
Die Bearbeitung erfolgt durchschnittlich nach $dauerstunden Stunden.
"; }else if (($_POST["aktion"] ?? '') == "13") { //Infomail über Impfung versenden $impfstoff = (int)($_POST["impfstoff"] ?? -1); // Mapping: welche Kombination aus impfenangebot + impfstoff soll gezogen werden? // (entspricht deiner alten Logik, nur korrekt geklammert) switch ($impfstoff) { case 0: $impfenangebot = 1; $zielImpfstoff = 1; break; case 1: $impfenangebot = 1; $zielImpfstoff = 2; break; case 2: $impfenangebot = 2; $zielImpfstoff = 1; break; case 3: $impfenangebot = 2; $zielImpfstoff = 2; break; default: die("Ungültiger Impfstoff-Parameter"); } // 1) Warteliste holen (max 30) // Wichtig: Klammern, sonst falsche Treffer durch OR/AND $sql = " SELECT w.warteid, w.userid AS person_id, w.timeid, w.hash FROM warteliste w WHERE w.impfenangebot = :angebot AND (w.impfstoff = 0 OR w.impfstoff = :zielImpfstoff) LIMIT 30 "; $stmt = $pdo->prepare($sql); $stmt->execute([ ':angebot' => $impfenangebot, ':zielImpfstoff'=> $zielImpfstoff ]); $wartelisteRows = $stmt->fetchAll(PDO::FETCH_ASSOC); foreach ($wartelisteRows as $row) { $personId = (int)$row["person_id"]; $warteid = (int)$row["warteid"]; $timeid = $row["timeid"]; // falls vorhanden $hash = $row["hash"]; // falls vorhanden // Wenn du debuggen willst: // echo htmlspecialchars((string)$timeid, ENT_QUOTES, 'UTF-8') . "
"; // 2) Person aus persons laden $stmtPerson = $pdo->prepare(" SELECT vorname, nachname, email, tele FROM persons WHERE person_id = :pid LIMIT 1 "); $stmtPerson->execute([':pid' => $personId]); $person = $stmtPerson->fetch(PDO::FETCH_ASSOC); if (!$person) { // Wenn es Alt-Daten gibt, die noch keine Person haben: // überspringen statt crashen continue; } $vorname = $person["vorname"] ?? ""; $nachname = $person["nachname"] ?? ""; $mail = $person["email"] ?? ""; $tel = $person["tele"] ?? ""; $userausgabe = trim($vorname . " " . $nachname); // 3) Mail rausschicken (deine Funktion nutzt schon PDO) // (Wenn die Vorlage die Persondaten selbst lädt: ok.) SendMailMessageVorlage($pdo, "2", $warteid, "7"); } //Bearbeitung der Mailvorlagen ermöglichen }else if (($_POST["aktion"] ?? '') == "14") { ?> prepare(" SELECT betreff, body, name FROM mailtemplates WHERE templetid = :tid LIMIT 1 "); $stmt->execute([':tid' => $templetid]); $rowconfig = $stmt->fetch(PDO::FETCH_ASSOC); if (!$rowconfig) { die("Mailtemplate nicht gefunden."); } $body = $rowconfig["body"]; $betreff = $rowconfig["betreff"]; $name = $rowconfig["name"]; $betreff = iconv('CP1252//IGNORE', 'UTF-8' , $betreff); //$body = iconv('CP1252//IGNORE', 'UTF-8' , $body); $name = iconv('CP1252//IGNORE', 'UTF-8' , $name); echo "

E-Mailvorlage bearbeiten


"; echo "Vorlage: $name
"; echo "
Folgende Variablen können Sie nutzen:"; echo "
%BENUTZERVORNAME% für Vorname des Patienten"; echo "
%BENUTZERNACHNAME% für Nachname des Patienten"; echo "
%BENUTZERGEBURTSTAG% für Geburtstag des Patienten"; echo "
%BENUTZERADRESSE% für Adresse (Ort PLZ, Straße) des Patienten"; echo "
%REZEPTART% für die Art der Anfrage"; echo "
%MEDIKAMENTNUMMEREINS% für Medikament 1"; echo "
%MEDIKAMENTNUMMERZWEI% für Medikament 2"; echo "
%ANFRAGENACHRICHT% für die vom Patienten eingegebene Nachricht (max. 150 Zeichen)"; echo "
%ANFRAGENLOGIN% für den Bestätigungslink/ Überprüfungslink der Anfrage. Achtung: Muss mindestens ein Mal an den Patienten versendet werden."; echo "

"; echo "
"; echo "Betreff:
"; echo "
"; echo ''; echo ""; echo "

"; echo "
"; echo '
'; // Speichern der E-Mail Vorlagen } else if (($_POST["aktion"] ?? '') == "15") { $templetid = (int)($_POST["templetid"] ?? 0); $betreff = iconv('UTF-8', 'CP1252//IGNORE', $_POST["betreff"] ?? ""); $body = iconv('UTF-8', 'CP1252//IGNORE', $_POST["body"] ?? ""); $stmt = $pdo->prepare(" UPDATE mailtemplates SET betreff = :betreff, body = :body WHERE templetid = :tid "); $stmt->execute([ ':betreff' => $betreff, ':body' => $body, ':tid' => $templetid ]); echo "Speicherung der Vorlage erfolgt!

"; // Auswahl der E-Mail Vorlagen } else if (($_POST["aktion"] ?? '') == "16") { echo "
"; echo "Wählen Sie die zu bearbeitende Mailvorlage aus:

"; $stmt = $pdo->prepare(" SELECT name, templetid FROM mailtemplates WHERE mailbearbeitung = 1 ORDER BY name "); $stmt->execute(); $rows = $stmt->fetchAll(PDO::FETCH_ASSOC); echo ""; echo "

"; echo "


"; // Sperrliste E-Mails } else if (($_POST["aktion"] ?? '') == "17") { $stmt = $pdo->prepare("SELECT email FROM user_block"); $stmt->execute(); $rows = $stmt->fetchAll(PDO::FETCH_ASSOC); echo "

Sperrliste

"; echo "Aktuell sind folgende Benutzer auf der Sperrliste:

"; foreach ($rows as $row) { echo htmlspecialchars($row["email"], ENT_QUOTES, 'UTF-8') . "
"; } echo "

"; //Bearbeitung der Mailvorlagen ermöglichen }else if (($_POST["aktion"] ?? '') == "18") { ?> E-Mailvorlage anlegen
"; echo "
Folgende Variablen können Sie nutzen:"; echo "
%BENUTZERVORNAME% für Vorname des Patienten"; echo "
%BENUTZERNACHNAME% für Nachname des Patienten"; echo "
%BENUTZERGEBURTSTAG% für Geburtstag des Patienten"; echo "
%BENUTZERADRESSE% für Adresse (Ort PLZ, Straße) des Patienten"; echo "
%REZEPTART% für die Art der Anfrage"; echo "
%MEDIKAMENTNUMMEREINS% für Medikament 1"; echo "
%MEDIKAMENTNUMMERZWEI% für Medikament 2"; echo "
%ANFRAGENACHRICHT% für die vom Patienten eingegebene Nachricht (max. 150 Zeichen)"; echo "
%ANFRAGENLOGIN% für den Bestätigungslink/ Überprüfungslink der Anfrage. "; echo "

"; echo ""; echo "Name der Vorlage:
"; echo "
"; echo "Betreff:
"; echo "
"; echo "Inhalt:
"; echo ''; echo ""; echo "

"; echo "
"; echo '
'; // Speichern der E-Mail Vorlagen }else if (($_POST["aktion"] ?? '') == "19") { $name = iconv('UTF-8', 'CP1252//IGNORE', $_POST["name"] ?? ""); $betreff = iconv('UTF-8', 'CP1252//IGNORE', $_POST["betreff"] ?? ""); $body = iconv('UTF-8', 'CP1252//IGNORE', $_POST["body"] ?? ""); $stmt = $pdo->prepare(" INSERT INTO mailtemplates (betreff, body, name, mailbearbeitung) VALUES (:betreff, :body, :name, 1) "); $stmt->execute([ ':betreff' => $betreff, ':body' => $body, ':name' => $name ]); echo "Speicherung der Vorlage erfolgt!

"; }else if (($_POST["aktion"] ?? '') == "20") { $anfrageid = (int)($_POST["anfrageid"] ?? 0); if ($anfrageid <= 0) { die("Ungültige Anfrage-ID"); } // optional: prüfen ob Anfrage existiert (entspricht deinem SELECT) $stmtCheck = $pdo->prepare("SELECT anfrageid FROM anfragen WHERE anfrageid = :id LIMIT 1"); $stmtCheck->execute([':id' => $anfrageid]); if (!$stmtCheck->fetch(PDO::FETCH_ASSOC)) { die("Anfrage nicht gefunden"); } // Mail verschicken (bei dir schon auf PDO umgestellt) SendMailMessageVorlage($pdo, "3", $anfrageid, "42"); // Anfrage updaten $stmt = $pdo->prepare(" UPDATE anfragen SET beantwortet = 1, checked = 29, workerid = :workerid, antwortid = 0 WHERE anfrageid = :id "); $ok = $stmt->execute([ ':workerid' => (int)$user["id"], ':id' => $anfrageid ]); if ($ok && $stmt->rowCount() > 0) { echo "

Die Anfrage wurde erfolgreich gelöscht!


"; echo "Der Kunde erhält gleich eine schriftliche Bestätigung per E-Mail
"; } else { echo "

Update fehlgeschlagen oder keine Zeile geändert.

"; } echo "
"; echo "


"; ZuruckzumAnfrageOverView(); }else{ echo '

Welche Aktion möchtest du durchführen?











Urlaub / Hinweis planen





'; } $stmt = $pdo->prepare(" SELECT impfid, impfname FROM impfstoff WHERE aktivtermin = 1 "); $stmt->execute(); $javascriptimpfstoff = ""; while ($rowimpf = $stmt->fetch(PDO::FETCH_ASSOC)) { $impfid = (int)$rowimpf["impfid"]; $impfstofftext = htmlspecialchars($rowimpf["impfname"], ENT_QUOTES, 'UTF-8'); $javascriptimpfstoff .= ""; } } ?>