echo $begrüßung;
$query = "SELECT * FROM cisco_weekplan_termin WHERE termin_fach = '".$session->get_user_fach()."'
SELECT * ist grundsätzlich zu vermeiden!
Was sind deine Argumente, SELECT * so grundsätzlich abzulehnen?
AND termin_startdate
BETWEEN '".$starttime."'
AND '".$endtime."'
ORDER by termin_startdate";
Escaping von variablen Daten ist grundsätzlich immer anzuwenden!
Ich hätte das ja zu der ersten Zeile des Statements angemerkt. Ich habe die (schwache) Hoffnung, dass $date vor dem ersten Schleifendurchlauf ähnlich erstellt wird wie das darin passiert. In dem Fall kann kein escape-kritisches Zeichen da drin stehen und auch nicht in $starttime und $endtime. (Ein Escaping schadet aber auch nicht wenn es überflüssig ist. Es ist für den Fall einer Änderung sinnvoll, wenn nicht selbst berechnete Werte beziehungsweise escape-relevante Zeichen Verwendung finden.)
echo "$verabschiedung $name";