Visualizzazione dei risultati da 1 a 4 su 4
  1. #1
    Utente di HTML.it L'avatar di blekm
    Registrato dal
    Jun 2004
    Messaggi
    8,310

    cercasi calendario con casella di testo per ogni giorno: gestione?

    cerco (se esiste) un calendario che mi mostri ogni giorno del mese con accanto una casella di testo dove andrò ad inserire le ore lavorate quel giorno per quel dipendente...

    ho cercato, ma ho trovato solo calendari stile "date picker", niente del genere come serve a me.

    mi servirebbe una cosa del genere (vedi allegato)

    inoltre, come gestire il database con queste informazioni? Una tabella unica con salvataggio
    - id_dipendente
    - giorno
    - ore lavorate

    nel giro di breve mi troverò una tabella grossina

    qualche consiglio?
    Immagini allegate Immagini allegate
    Il portale sul turismo a Lucca

    Siti web Lucca

    Vendo Tex a colori di Repubblica (primi 100 numeri) - info in pvt.

  2. #2
    Utente di HTML.it L'avatar di blekm
    Registrato dal
    Jun 2004
    Messaggi
    8,310
    up
    Il portale sul turismo a Lucca

    Siti web Lucca

    Vendo Tex a colori di Repubblica (primi 100 numeri) - info in pvt.

  3. #3
    Utente di HTML.it L'avatar di blekm
    Registrato dal
    Jun 2004
    Messaggi
    8,310
    ho trovato una soluzione, posto qua il codice.

    Allo stesso tempo ho anche trovato un bug, i mesi che iniziano di domenica non vengono visualizzati, e non riesco a capire il perchè

    qualche idea?

    Codice PHP:
    //Trovo i dati fondamentali:
    // Array con i giorni dei mesi
    $dati['giorni_mesi'] =  array(31031303130313130313031); 
    // Mese corrente ( numerico )
    $dati['mese_num'] = date("n",  time()); 
    // Mese Corrente ( testuale )
    $dati['mese_text'] = date("F"time());
    // Oggi ( numerico senza eventuali zeri ) 
    $dati['oggi'] = date("j"time()); 
    // Oggi ( nella settimana, numerico )
    $dati['oggi_sett'] = date("w"time()); 
    // Anno
    $dati['anno'] = date("Y"time()); 
    // Giorno della settimana del primo giorno dell'anno
    $dati['start'] = date("w"mktime(0,0,0$dati['mese_num'], 1$dati['anno'])); 
    // Calcolo dei giorni di febbraio
    $dati['giorni_mesi'][1] = (($dati['mese_num']%400) == 0) ? 29 28
    // Giorni del mese corrente
    $dati['giorni_mese'] = $dati['giorni_mesi'][$dati['mese_num']-1]; 
    // Settimane del mese corrente arrotondato per eccesso.
    $dati['settimane_mese'] = ceil($dati['giorni_mese']/7); 

    //
    // Vi sarete accorti che:
    // 1) Nel calcolo dei giorni del mese corrente c'è un -1: Questo è perchè l'array inizia da 0, non da 1
    // 2) Ho arrotondato per eccesso il calcolo delle settimane: Per evitare giorni nascosti nell'ultima settimana
    // 3) I giorni della settimana trovati da date() iniziano da 0 ( Domenica ) fino a 6 ( Sabato )
    //

    // Se il conteggio reale dei giorni può partire
    $info['can_start'] = FALSE
    // Giorni da accumulare
    $info['to_less'] = 0

    $text '
    <style type="text/css">
    table { border:1px solid black; }
    td.cal_days { padding-left:35px; border:1px solid grey; }    
    td { padding:10px; }
    td { border:1px solid silver; } 
    </style>
    <div align="center">'
    .$dati['mese_text'].'</div>
    '
    .
    '<table align="center">
        <tr>
            <td class="cal_days">Lun</td>
            <td class="cal_days">Mar</td>
            <td class="cal_days">Mer</td>
            <td class="cal_days">Gio</td>
            <td class="cal_days">Ven</td>
            <td class="cal_days">Sab</td>
            <td class="cal_days">Dom</td>
        </tr>'
    // Schema fisso dei giorni della settimana

    //
    // Ciclo madre: Continua per tutte le settimane del mese
    //

    for($ciclo 0$ciclo <= $dati['settimane_mese']; $ciclo++)
    {
        
    // Aggiungo una griglia
        
    $text .= '<tr>'

        
    // Ciclo Figlio ( SubCiclo ): Avanza per tutti i giorni della settimana
        
    for($subciclo 1$subciclo <= 7$subciclo++)
        {
            
    // Controllo se il ciclo può partire e se il giorno del ciclo figlio
            // corrisponde a quello della settimana del primo giorno del mese
            // Se tutti e due sono FALSE:
            
    if($subciclo != $dati['start'] && $info['can_start'] == FALSE)
            {
                
    // 1) Aggiungo una casella vuota
                
    $text .= '<td class="cal_day"></td>'
                
    // 2) Aggiungo un giorno da levare
                
    $info['to_less']++; 

                
    // 3) Faccio ricominciare il ciclo finchè uno dei due casi si riveli TRUE
                
    continue; 
            }
            else
            {
                
    // Muto il valore di can_start in TRUE
                
    $info['can_start'] = TRUE
            }
            
            
    //
            // Naturalmente solo uno dei due casi può rivelarsi TRUE: Solo ' $subciclo != $dati['start'] '
            // dato che can_start diverrà TRUE solo quando si avvererà la prima condizione. Così il conto può partire
            //
            // Ora mi calcolo il giorno corrente, Sommando il valore corrente della variabile di questo ciclo ai giorni
            // delle settimane trascorse ( Grazie alla moltiplizacione per 7 di $ciclo ) e levando infine i giorni
            // accumulati in precedenza. Vi ricordo che questo di seguito è la variabile contenente il giorno da mostrare,
            // non quello di oggi

            // Calcolo il giorno da mostrare
            
    $dati['current_day'] = $subciclo+($ciclo*7)-$info['to_less']; 
            
            
    // Controllo ci restano ancora giorni del mese
            
    if($dati['current_day'] <= $dati['giorni_mese'])
            {
                
    // Se si...
                //
                // Vorrete fare capire il giorno di oggi, no? Quindi cambiamo stile
                // alla cella in caso questa corrisponda a quella di oggi.
                //

                // Controllo se il giorno da mostrare è quello di oggi
                
    if($dati['current_day'] == $dati['oggi']) 
                {
                    
    // Cambio stile in 'oggi' se è oggi
                    
    $tdclass 'oggi'
                } else {
                    
    // Cambio stile in 'Default' se non è oggi
                    
    $tdclass 'default'
                }

                
    $empty_space "";
                if (
    strlen($dati['current_day']) == 1)
                {
                    
    $empty_space "";
                }
                
                
    // Poi aggiungo la cella
                
    $text .= '<td class="'.$tdclass.'">'.$empty_space.$dati['current_day'].' <input type="text" size="4" maxlength="4" name='.$dati['current_day'].'-'.$dati['mese_num'].'/></td>'
            } 
            else
            {
                
    // Se invece non ci restano più giorni del mese, faccio terminare il ciclo
                
    break;
            }
            
            
    // Finisce qui il SubCiclo, se ci sono ancora settimane da mostrare il ciclo continuerà, se no, si fermerà.
        
    }

        
    // Chiudo la griglia
        
    $text .= '</tr>'
    }

    // Chiudo la tabella
    $text .= '</table>'

    echo 
    $text;
    ?> 
    Il portale sul turismo a Lucca

    Siti web Lucca

    Vendo Tex a colori di Repubblica (primi 100 numeri) - info in pvt.

  4. #4
    Utente di HTML.it L'avatar di blekm
    Registrato dal
    Jun 2004
    Messaggi
    8,310
    up
    Il portale sul turismo a Lucca

    Siti web Lucca

    Vendo Tex a colori di Repubblica (primi 100 numeri) - info in pvt.

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2024 vBulletin Solutions, Inc. All rights reserved.