Buona sera a tutti,
sto cercando di capire come migliorare l'impatto visivo di una tabella che viene popolata dai dati prelevati da una select sql:
la select è una join che prende i dati da due tabelle di cui una master e l'altra slave.
per ogni record della master corrispondono con lo stesso valore id-master piu records con valori id_slave diversi.
La tabella generata in html viene popolata dinamicamente dalla select appunto, che preleva i record con valore data che va indietro di un mese fino a tre giorni avanti la data corrente.
Come dicevo vorrei che nella colonna "id_registrazione", dove vengono stampati i valori del campo id_master, le celle con lo stesso valore venissero accorpate, cosicchè apparirebbe evidente e ben leggibili, nella colonna accanto (id_servizio), i records inseriti nello stesso momento, cioè che hanno lo stesso valore id-registrazione.
Inserisco lo script attuale:
<?php
//blocco connessione al database
require_once('../configuration.php');
//blocco query al database
$select_sql="SELECT
gbgar_serv_master.id_master,
id,
autista,
stato,
data,
tipologia,
macchina,
servizi_da_svolgere,
note
FROM gbgar_serv_master
LEFT JOIN gbgar_serv_slave
ON gbgar_serv_master.id_master=gbgar_serv_slave.id_master
WHERE
data between DATE_ADD(CURDATE(), INTERVAL -30 DAY)
and DATE_ADD(CURDATE(), INTERVAL 3 DAY);";
//controllo sull'avvenuta esecuzione della query al database
$risultato_select=$Conn->query($select_sql);
if($risultato_select == FALSE){
die("Errore nell'esecuzione della query: " . $select_sql);
}
echo"<pre>";
print_r($risultato_select);
echo"</pre>";
//blocco di creazione intestazione tabella
echo"<h1>Servizi assegnati agli autisti</h1>";
echo
"<div class=\"table\">
<table class=\"serv\">
<thead>
<th class='id-reg'>ID MASTER</th>
<th class='id-reg'>ID SERVIZIO</th>
<th class='autista'>AUTISTA</th>
<th class='s_d_t_m'>STATO</th>
<th class='s_d_t_m'>DATA</th>
<th class='s_d_t_m'>TIPOLOGIA</th>
<th class='s_d_t_m'>MACCHINA</th>
<th class='s_n'>SERVIZI DA SVOLGERE</th>
<th class='s_n'>NOTE</th>
</thead>";
//impostazione ciclo di prelievo dei records
/*col metodo fetch_assoc viene prelevata una riga alla volta secondo i criteri impostati nelle condizioni "where" della select.*/
//inizializzo variabile vuota per la riga corrente prelevata
$id_registro_corrente = "";
while($records = $risultato_select->fetch_assoc()){
$id_registro=$records["id_master"];
$id_servizio=$records["id"];
$autista=$records["autista"];
$stato=$records["stato"];
$data=$records["data"];
$tipologia=$records["tipologia"];
$macchina=$records["macchina"];
$servizio_da_svolgere=$records["servizi_da_svolgere"];
$note=$records["note"];
//conversione formato data
$timestamp_data = strtotime($data);
$formato_data = 'd / m / Y';
$newdate = date($formato_data,$timestamp_data);
echo"<tr>
<td>$id_registro</td>
<td>$id_servizio</td>
<td>$autista</td>
<td>$stato</td>
<td>$newdate</td>
<td>$tipologia</td>
<td>$macchina</td>
<td>$servizio_da_svolgere</td>
<td>$note</td>
</tr>";
}
echo"</table>"; //chiusura della class tabella
echo "</div>"; // chiusura del div class table
$Conn->close();
?>
Mi potete aiutare?
Come ricavo il valore da assegnare all'attributo rowspan="n" applicato al tag <td> ?
Ma poi devo inserire anche un ciclo, penso, dove ogni volta va confrontato id_master corrente con il precedente...
e la condizione secondo la quale se i valori son uguali non deve stampare il tag td altrimenti invece lo deve stampare col valore rowspan corretto.
Insomma a livello teorico penso di aver capito questo ma dal lato pratico, cioè come metterlo in codice insomma, spero nel vs eventuale aiuto.
Aggiungo, che non è detto che ci siano per forza più record con lo stesso id_master.
...oppure forse ci sono vie più veloci e pratiche?
Grazie per eventuali suggerimenti
Filippo P.