Entonces, yo lo que haría es seleccionar todos los registros y agruparlos por fecha con una consulta. Posteriormente para clasificarlos en tablas, podría hacer algo así:
    Código PHP:
    $fecha_actual = "";
while($rs = mysqli_fetch...)
{
    if($fecha_actual != $rs['fecha'])
    {
        //CREO TABLA
        //GUARDO LA NUEVA FECHA
        $fecha_actual = $rs['fecha'];
    }
    
    //MUESTRO LAS FILAS
    
    if($fecha_actual != $rs['fecha'])
    {
        //CIERRO TABLA
    }
} 
    
  También puedes, antes de crear la tabla hacer una función que te clasifique los resultados directamente entre arrays y te lo devuelva:    
Código PHP:
Ver original-     //OBJETO MYSQL 
-         array('dni' => 123132, 'fecha' => '12/12/2015'), 
-         array('dni' => 123132, 'fecha' => '12/12/2015'), 
-         array('dni' => 123132, 'fecha' => '12/12/2015'), 
-         array('dni' => 123132, 'fecha' => '12/12/2015'), 
-     ), 
-     //OBJETO MYSQL 
-         array('dni' => 123132, 'fecha' => '1/01/2016'), 
-         array('dni' => 123132, 'fecha' => '1/01/2016'), 
-         array('dni' => 123132, 'fecha' => '1/01/2016'), 
-         array('dni' => 123132, 'fecha' => '1/01/2016'), 
-     ), 
- ) 
De ese modo, simplemente tendrías que crear una tabla por cada array, y dentro de cada tabla sus resultados. Seguro que hay muchas más formas, solo hay que pensar un poco.