Ich bin ja nie voreingenommen, oder anders gesagt - ich nehme Worte im netz nie so, wie sie geschrieben stehen (zwecks falsch verstehen ect),
aber dein Ausrufezeichen am Ende sagt mir, dass Du das so meinst, was Du da schreibst 
Nur weil hier nicht gerade 20 Mitglieder posten (keine Zeit ect) und ich Dich nicht verstehe ... deswegen ist die Diskussion doch nicht "nicht sachlich".
Ich hatte Dir ja sogar ein Bsp geschrieben.
Du brauchst nur noch dein Table da rein bauen.
Ich sehe übrigens, was Du mit den Table-Head meinst.
Das kommt daher, dass Du in der foreach-Schleife immer einen neuen Table pro db-Eintrag ausgibst:
// ...
<?php foreach($mitarbeiterstatistik as $array){
// ...
if ($group != $array['ms_KW'])
{ echo '<h3 class="header"> Kalenderwoche: ' . htmlspecialchars($array['ms_KW']) . "</h3>";
$group = $array['ms_KW']; } ?>
<table>
<thead>
<tr>
<th>Datum</th>
<th>Neue Kunden angelegt</th>
<th>Neue Erinnerungen</th>
<th>Erinnerungen bearbeitet</th>
</tr>
</thead>
Alles anzeigen
Dafür gibts 2 Lösungen:
- table und thead vor der Schleife ausgeben und in der Schleife dann nur noch eine tr pro loop/Datensatz
- einen String verketten:
// obere teil des tables (soll ja nur einmal vorkommen)
$table = '
<table>
<thead>
<tr>
<th>Datum</th>
<th>Neue Kunden angelegt</th>
<th>Neue Erinnerungen</th>
<th>Erinnerungen bearbeitet</th>
</tr>
</thead>
<tbody>
';
foreach( ... deine schleife ... ){
// ...
// jeden datensatz (tr) an $table anhängen
// achtung: aus <?php ... wird verketten ' . $var . '
$table .= '
<tr>
<td><span style="width:20px; display:inline-block;";>' . $wochentage[date("w", $zeit)] . '</span> - ' . enDate2deDate($array['ms_datum']) . '</td>
/* rest des verkettens musst du machen =) */
<td><span style="width:20px; display:inline-block; text-align: right; margin-right: 7px;";><?php if ($kdgesamt > '0'): echo $kdgesamt;?></span> davon <span style="width:20px; display:inline-block; text-align: right; font-weight: bold; margin-left: 10px;";><?php echo $array['ms_kd_aktiv']; ?></span> aktiv und <span style="width:16px; display:inline-block; text-align: right; font-weight: bold;";><?php echo $array['ms_kd_inaktiv']; ?></span> gesperrt <?php endif;?></td>
<td><?php if ($array['ms_erinnerungen_n'] != ''): echo $array['ms_erinnerungen_n']; endif; ?></td>
<td><?php echo $array['ms_erinnerungen_b']; ?></td>
</tr>
';
// ...
}
// und nach der schleife muss natürlich noch das "ende" des tables angehangen werden:
$table .= '
</tbody>
</table>
';
// und jetzt hast Du einen kompletten table in der var $table die du ausgeben kannst:
echo $table;
Alles anzeigen
Ich empfehle trotzdem noch was ich im Post Ausgabe gruppieren geschrieben hab.
Denn wenn Du nicht sortierst
und in der db die KW nicht in geordneter Reihenfolge stehen,
dann bekommst Du mehrere von Deinen h3 KW Überschrifen der gleichen KW.