Salve a tutti,
chiedo il vostro supporto.
Ho un tabella (settimana_schema) strutturato come:
id - giugno_1 - giugno_2 - giugno_3- giugno_4- giugno_5 - luglio_1- luglio_2- luglio_3- luglio_4 - luglio_5 - agosto_1 - agosto_2 - agosto_3 - agosto_4 - agosto_5 - settembre_1 - settembre_2- settembre_3- settembre_4- settembre_5
dove tranne il campo ID si tratta di campi DATE.
La mia esigenza è far visualizzare i valore in coppia, mi spiego:
giugno_1 - giugno_2
giugno_2 - giugno_3
giugno_3 - giugno_4
giugno_4 - giugno_5
giugno_5 - luglio_6
Praticamente ci sono quasi, funziona tutto tranne per l'ultima colonna:
1) ho dichiarato un array che contiene esattamente i mesi di mio interesse;
2) ricavo il nome delle colonne presenti nel database;
3) rimuovo i campi che contengono valori del tipo 0000-00-00
4) visualizzo solo il giorno per ogni campo
5) l'obiettivo finale è ottenere una tabella di questo tipo:
Giugno Luglio Agosto Settembre
01-08 08-15 15-22 22-29 29-06 06-13 13-20 20-27 27-03 03-10 10-17 17-24 24-31 31-07 07-14 14-21 21-28 28-01
Il problema si presenta esattamente nell'ultimo campo, ove:
settembre_3 vale 2014-09-21
settembre_4 vale 2014-09-28
settembre_5 vale 0000-00-00
Quindi settembre dovrebbe fermarsi alla coppia 21-28, senza visualizzare l'ultima coppia.
Per far tutto ciò ho usato il seguente codice:
Spero che sia strato chiaro.
chiedo il vostro supporto.
Ho un tabella (settimana_schema) strutturato come:
id - giugno_1 - giugno_2 - giugno_3- giugno_4- giugno_5 - luglio_1- luglio_2- luglio_3- luglio_4 - luglio_5 - agosto_1 - agosto_2 - agosto_3 - agosto_4 - agosto_5 - settembre_1 - settembre_2- settembre_3- settembre_4- settembre_5
dove tranne il campo ID si tratta di campi DATE.
La mia esigenza è far visualizzare i valore in coppia, mi spiego:
giugno_1 - giugno_2
giugno_2 - giugno_3
giugno_3 - giugno_4
giugno_4 - giugno_5
giugno_5 - luglio_6
Praticamente ci sono quasi, funziona tutto tranne per l'ultima colonna:
1) ho dichiarato un array che contiene esattamente i mesi di mio interesse;
2) ricavo il nome delle colonne presenti nel database;
3) rimuovo i campi che contengono valori del tipo 0000-00-00
4) visualizzo solo il giorno per ogni campo
5) l'obiettivo finale è ottenere una tabella di questo tipo:
Giugno Luglio Agosto Settembre
01-08 08-15 15-22 22-29 29-06 06-13 13-20 20-27 27-03 03-10 10-17 17-24 24-31 31-07 07-14 14-21 21-28 28-01
Il problema si presenta esattamente nell'ultimo campo, ove:
settembre_3 vale 2014-09-21
settembre_4 vale 2014-09-28
settembre_5 vale 0000-00-00
Quindi settembre dovrebbe fermarsi alla coppia 21-28, senza visualizzare l'ultima coppia.
Per far tutto ciò ho usato il seguente codice:
PHP:
<?php
$array_mesi = array('giugno', 'luglio', 'agosto', 'settembre');
foreach($array_mesi as $mese){
//PRELEVO LO SCHEMA DELLA TABELLA
$q_settimana = mysql_query("SELECT COLUMN_NAME
FROM INFORMATION_SCHEMA.COLUMNS
WHERE table_name = 'settimane_schema'
AND table_schema = 'fiorellamalagnino'
AND column_name LIKE '".$mese."%'") or die ( mysql_error() );
//MI COSTRUISCO LA QUERY
//STRINGA di appoggio per il nome delle colonne di quel mese (giugno_1, giugno_2, etc...)
$eln_sett = "";
while($r_settimana = mysql_fetch_array($q_settimana)){
$eln_sett .= $r_settimana[0].',';
//STRINGA per avere sempre il nome delle colonne
$eln_sett_gg .= $r_settimana[0].',';
}
//RIMUOVO LA VIRGOLA DALL'ULTIMO ELEMENTO
$eln_sett = substr_replace($eln_sett, "", -1);
//QUERY PER VERIFICARNE IL VALORE;
$q_verifica = mysql_query("SELECT ".$eln_sett." FROM settimane_schema WHERE id = 1 ") or die ( mysql_error() );
$r_verifica = mysql_fetch_array($q_verifica);
$count_sett = 0;
//CONTEGGIO PER IL COLUMN SPAN
foreach (array_unique($r_verifica) as $sett_stato){
if($sett_stato != 0000-00-00){ $count_sett++; }
}
echo '<td colspan="'.$count_sett.'" align="center" class="disp_mese">'.ucfirst($mese).'</td>';
}
?>
</tr>
<!-- GIORNI -->
<tr>
<?php
$eln_sett_gg = substr_replace($eln_sett_gg, "", -1);
$q_giorni = mysql_query("SELECT ".$eln_sett_gg." FROM settimane_schema WHERE id = 1") or die ( mysql_error() );
$r_giorni = mysql_fetch_array($q_giorni);
//Rimuovo gli elmenti vuoti, cioè 0000-00-00
$r_giorni = array_diff($r_giorni,array('0000-00-00'));
$r_giorni = array_values(array_unique($r_giorni));
$eln_sett_gg_single = explode(",", $eln_sett_gg);
foreach($r_giorni as $key => $val){
$date = date("d",strtotime($val));
$date_next = date("d",strtotime($r_giorni[$key+1]));
echo '<td style="padding: 3px" align="center"><font size="1"><span style="font-size:92%">'.$date.'-'.$date_next.'</span></font></td>';
}
?>
</tr>
<tr>
</table>
Spero che sia strato chiaro.
Ultima modifica: