Stampare coppie di valori

felino

Utente Attivo
12 Dic 2013
928
10
18
Aci Catena (Catania)
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:

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:

marino51

Utente Attivo
28 Feb 2013
3.039
192
63
Lombardia
ciao, un po' complicato da seguire ma essendo l'ultimo elemento,
potrebbe essere che il foreach abbia terminato e tu, con key+1, vada a prendere un valore successivo che non esiste

foreach($r_giorni as $key => $val){
...... strtotime($r_giorni[$key+1]));
ciao
marino
 

felino

Utente Attivo
12 Dic 2013
928
10
18
Aci Catena (Catania)
L'obiettivo finale è realizzare qualcosa di simile a questo: link.

Quindi ho pensato di modificare la struttura della tabelal settimana_schema in:
ID - PeriodName - Start - End

esempio:
1 - giugno_1 - 31/06/2014 - 07/06/2014

cosa ne pensate?

Da lì viene meglio effettuare anche la relativa visualizzazione.

Grazie.
 

felino

Utente Attivo
12 Dic 2013
928
10
18
Aci Catena (Catania)
Ragazzi, alla fine ho rifatto l'intera tabella settimana_schema come:

id - checkin - checkout

così da avere la doppia coppia di lavori.

Anche se avrei potuto usare una solo colonna dato che checkin è uguale all'ultimo checkout inserito.
 
Discussioni simili
Autore Titolo Forum Risposte Data
G leggere file txt e stampare con php il contenuto a video PHP 7
F stampare a video i risultati della query PHP 1
elpirata Ricavare e stampare indirizzo ip da array associativo PHP 0
B Stampare una porzione della pagina PHP 0
V Come stampare su Excel tabella con rowspan e colspan Javascript 2
elpirata Stampare carattere simbolo euro PHP 10
W Stampare file PDF in varie modalità. Windows e Software 5
L pdo (stampare un valore con ritorno a funzione) PHP 0
P [PHP] Aggiungere giorni e stampare risultato da data inserita in input PHP 3
P [PHP] Stampare record di diverse tabelle ma con nomi uguali PHP 6
K [PHP] Stampare tabella da database differenti. PHP 4
M Stampare con php e mysql PHP 8
L [PHP] stampare un'array di un database PHP 0
J modifica spooler di stampa per stampare in ordine di nome i files pdf Windows e Software 2
T PHP+MYSQL: stampare record con numero progressivo PHP 3
cristoforo58 Stampare dei valori XML in PHP PHP 0
elpirata [PHP] Stampare i valori di una variabile scritta su più righe PHP 1
K [PHP] Cancellare e Stampare tabella PHP 3
M [PHP] come stampare un Qr-code in FPDF PHP 8
M [Javascript] "Stampare" nel codice Var JS Javascript 5
N [PHP] stampare pagina html PHP 0
fulviozecchin [Java] Stampare intervallo tra due interi senza cicli Java 2
F [PHP] Stampare dati inviati tramite ajax PHP 0
elpirata [RISOLTO]Stampare giorno della settimana in tabella php PHP 6
elpirata [PHP] [RISOLTO] Stampare classe css in base al risultato della query PHP 6
Fuego2806 Stampare dati Form su immagine di sfondo con html HTML e CSS 1
Fuego2806 [PHP] Stampare dati Form su immagine di sfondo con html PHP 70
webmachine [PHP] Problema: Stampare tutte le occorrenza di una SELECT PHP 2
momeraths come stampare immagini contenute in un database PHP 7
I stampare in video i dati inseriti nel db PHP 1
M Sito "e-commerce", stampare dati di registrazione e dati dell'acquisto da pagine diverse PHP 7
L Stampare immagine php PHP 2
elpirata Stampare a video in echo table il risultato di una query PHP 4
Shyson Stampare lista in ordine decrescente Database 1
A Stampare senza sidebar Javascript 0
F stampare array php PHP 3
N Non stampare valori duplicati PHP 1
T Stampare maschera fronte/retro MS Access 0
C Stampare font personalizzati HTML e CSS 2
S estrarre e stampare a video un record in un div PHP 7
N FPDF stampare pdf automaticamente su stampante impostata PHP 0
M Stampare valore di un array PHP 1
P Stampare a video PHP 1
P Stampare '<?' in php PHP 7
D Stampare una query in una tabella MySQL 2
P Stampare valore font-size da css con javascript Javascript 2
V Stampare file di Illustrator Webdesign e Grafica 0
K Stampare più pagine con fpdf PHP 5
felino Stampare un define dentro un require_once PHP 7
H Stampare a video dei file da DB PHP 2

Discussioni simili