La primera imagen son mis registros en mi base de datos, 'enr_biometrics_id' es un ID de usuario, simplemente lo nombro así. no importa el 'log_no'
Ahora, quiero mostrar los registros de enr_biometrics_id = '000000001' desde la fecha 2021-07-01 - 2021-07-15, al igual que la imagen a continuación usando y mostrar espacios en blanco en ningún registro en la fecha 2021-07-01 - 2021 -07-15. ¡Gracias por la ayuda por adelantado!
Tengo un código ahora mismo:
<?php include('config/config.php'); ?> <table border="1"> <tr> <th>Log Date</th> <th>Logs</th> <th>Logs</th> <th>Logs</th> <th>Logs</th> <th>Logs</th> </tr> <?php $start_period = "2021-07-01"; $end_period = "2021-07-15"; date_default_timezone_set('UTC'); while (strtotime($start_period) <= strtotime($end_period)) { ?> <tr> <td><?php echo "$start_period"; ?></td> <?php $logs_query = mysqli_query($conn, "SELECT * FROM tb_daily_time_record WHERE date_added BETWEEN '$start_period' AND '$end_period' AND enr_biometrics_id='000000001' ")or(die(mysql_error())); while($row_logs = mysqli_fetch_assoc($logs_query)){ $date_logs = $row_logs['date_added']; $t_logs = $row_logs['time_log']; ?> <td> <?php echo $t_logs; ?> </td> <?php } ?> </tr> <?php $start_period = date ("Y/m/d", strtotime("+1 days", strtotime($start_period))); } ?> <tr> </table>
Obtener un resultado como este MyCoderightnow
Esta sería mi solución a la información que está dando. Probablemente sea posible optimizar esto, pero da una buena idea de una solución.
Suma corta, verifico si la fila actual tiene la misma cadena que la fila anterior, si este no es el caso, creo una nueva fila
$result = 'SELECT * FROM table'; // query .. $checkdate=''; echo '<table>'; foreach ($result as $row) { if ($row['date_added'] != $checkdate) { $checkdate = $row['date_added']; echo '</tr> <tr> <td>'.$row['time_log'].'</td> <td>'.$row['time_log'].'</td>'; continue; } echo '<td>'.$row['time_log'].'</td>'; } echo '</tr></table>';