Celle unite su tabella dinamica generata da select sql

di il
0 risposte

Celle unite su tabella dinamica generata da select sql

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.

Devi accedere o registrarti per scrivere nel forum
0 risposte