echo $begrüßung;
habe es nun mit einer Fallunterscheidung versucht, bekomme aber nur leere Arrays.
Ich vermute der Fehler liegt im while($row = $result->fetch) {
wüsste aber nicht, wie ich es besser machen kann.
Prüfe mit Kontrollausgaben (mit var_dump()), ob deine Vermutung stimmt. Stell außerdem das error_reporting zum Entwickeln auf E_ALL, dann bekommst du Hinweise beim Zugriff auf nicht existente Variablen angezeigt. In deinem Fall müsste das $result->fetch angekreidet werden, denn das wird sicher keine Instanzvariable sein. Ein Funktionsaufruf wäre passender.
Apropos besser machen. MySQL kann Datumswerte auch als Unix-Timestamp liefern und PHP kann damit besser umgehen. Es entfällt damit der Zwischenschritt über einen formatierten String.
$sql = "SELECT DATE_FORMAT(termin_startdate, '%w' ) as weekday,
SELECT UNIX_TIMESTAMP(termin_startdate) weekday, ...
$tmp[ date( "N",strtotime($row['termin_startdate']) ) ][] = $row;
$tmp[date("N",$row['termin_startdate'])][] = $row;
echo "$verabschiedung $name";