ho fatto una tabella <table> nella cui prima riga sono presenti tutte le date del mese, una per ogni colonna;ho estrapolato con una query tutte le etichette delle attività le quali le devo inserire con una serie di cicli nella prima colonna e nel mezzo della tabella devo inserire i lavoratori. Credo di essere arrivato quasi al mio intento ma sono giorni che ci butto il sangue. Per uno esperto è sicuramente una sciocchezza ma per un neofita come in me nel php è un lavoro estenuante. Sono arrivato a livello logico dove voglio ma sul codice non riesco. ve lo posto senza la parte delle query magari qualcuno mi illumina con dei suggerimenti.
Codice PHP:
$i="0"; while ($row = mysqli_fetch_array($risultato)) { $data[$i] = $row['turnazione_data']; $lavoratore[$i] = $row['id_lavoratore']; $ora[$i] = $row['id_orario_turno']; $i++; }//estrapolazione dati query in array con valori etichette turni
$i="0"; while ($row = mysqli_fetch_array($etichetta)) { $baseore[$i] = $row['orturno_etichetta']; $i++; }
//conteggio indici
$contdata= count($data);$contlav = count($lavoratore);$contora = count($ora);$contetichetta = count($baseore);$giorno = "01";$mese = "01";$anno = "2019";$totgiornimese = date("t", strtotime($mese . "/" . $giorno . "/" . $anno));$z="0";//inizio tabellaecho "<table class='tab-turnazione'><tr><td> TURNI </td>";
//inizio ciclo data prima riga$prog ="0";for ($i="0"; $i < $totgiornimese; $i++ ){ echo "<td>" . date("d D", mktime(0,0,0,$mese, $giorno + $prog, $anno)) . "</td>"; $prog++;}echo "</tr>";$prog ="0";$bool="false";
//inizio ciclo prima colonna etichettefor ($y="0"; $y < $contetichetta; $y++){ echo "<tr>"; echo "<td>" . $baseore[$y] . "</td>"; $check_etichetta = $baseore [$y];//inizio ciclo date da indice 0 a tot giorni mese for($j="0"; $totgiornimese >= $j; $j++){ $datatop = date("Y/m/d", mktime(0,0,0,$mese, $giorno + $prog, $anno));//inizio ciclo da indice 0 a tot lavoratori for($x="0"; $contlav > $x; $x++){ if($ora[$x] == $check_etichetta){//inizo ciclo da indice 0 a tot lavoratori con operatore logico per controllo etichetta e data while(($z < $contlav) && ($bool = "false") ){ $check_data = date("Y/m/d", strtotime($data[$z])); // da vedere if($check_data == $datatop){ echo "<td>" . $lavoratore[$x] . "</td>"; $bool = "true"; $prog + 1; } else{ $z++; } } $z="0"; } else { // $x++; //da verificare } } $x="0"; } $j++; echo "</tr>";} ?>
Presumo sia un problema di indici.