Visualizzazione dei risultati da 1 a 3 su 3
  1. #1
    Utente di HTML.it L'avatar di Frankos
    Registrato dal
    Nov 2002
    Messaggi
    505

    evidenziare i giorni liberi n un calendario

    Ciao,

    ho un problema di concetto.
    Dunque, ho un database MySQL in cui c'é una tabella che mi da, per diversi appartamenti di vacanza, il periodo in cui sono occupati.
    Esempio: ho un record per l'appartamento con ID_immobile=10 in cui la data di inizio occupazione é x e la data di fine occupazione é y.
    Poi un altro record sempre per ID_immobile=10 con data di inizio w e data di fine z.
    A questo punto ho un calendario (la classica tabellina con i numeri dei giorni in ogni cella) in cui devo evidenziare in rosso i giorni in cui l'immobile in oggetto é occupato.
    Premetto che per ogni immobile i periodi di occupazione possono essere parecchi, ma in ogni modo non sovrapposti.

    Come procedere?
    Sempre più in alto...
    www.webdition.com

  2. #2

    Re: evidenziare i giorni liberi n un calendario

    Originariamente inviato da Frankos
    Ciao,

    ho un problema di concetto.
    Dunque, ho un database MySQL in cui c'é una tabella che mi da, per diversi appartamenti di vacanza, il periodo in cui sono occupati.
    Esempio: ho un record per l'appartamento con ID_immobile=10 in cui la data di inizio occupazione é x e la data di fine occupazione é y.
    Poi un altro record sempre per ID_immobile=10 con data di inizio w e data di fine z.
    A questo punto ho un calendario (la classica tabellina con i numeri dei giorni in ogni cella) in cui devo evidenziare in rosso i giorni in cui l'immobile in oggetto é occupato.
    Premetto che per ogni immobile i periodi di occupazione possono essere parecchi, ma in ogni modo non sovrapposti.

    Come procedere?
    supp. che la tabella sia:

    OCCUPAZIONI(ID_immobile, dataInizio, dataFine)

    io farei così:
    Codice PHP:
    $id xxx
    $query 
    "SELECT UNIX_TIMESTAMP(dataInizio) AS dataInizio, ".
                 
    "UNIX_TIMESTAMP(dataFine) AS dataFine " 
             
    "FROM OCCUPAZIONI WHERE id=$id ORDER BY dataInizio";
    $nomiDati = array('dataInizio''dataFine');
    $dateOccupazioni caricaQuery($query$nomiDati);

    //###############

    function giornoOccupato($giorno$mese$anno$dateOccupazioni) {
        
    $data mktime(0,0,0,$mese,$giorno,$anno);

        
    // ricerca sequenziale (una ricerca binaria è migliore)
        
    $i=0;
        
    $occupato false;
        while(
    $i<count($dateOccupazioni
              && 
    $dateOccupazioni[$i]['dataInizio'] <= $data
              
    && !$occupato
        {
            if (
    $data <= $dateOccupazioni[$i]['dataFine'])
                
    $occupato true;
            
    $i++;
        }
        
        return 
    $occupato


    la funzione giornoOccupato, a partire dal giorno, mese, anno e dall'array associativo delle date inizio e fine, ritorna true se il giorno è occupato.

    Dove c'è "//###############" puoi mettere il tuo codice che genera la tebella-calendario, e ad es. se è una cella e vuoi evidenziare con lo sfondo rosso le date occupate, allora fai qualcosa del tipo:

    ....
    <td bgcolor="<?= (giornoOccupato(11,6,2005,$dateOccupazioni) ? "FFFFFF" : "COCOCO") ?>">
    </td>


    p.s. la funzione caricaQuery l'ho scritta qui:http://forum.html.it/forum/showthrea...hreadid=922257

  3. #3
    Utente di HTML.it L'avatar di Frankos
    Registrato dal
    Nov 2002
    Messaggi
    505
    grazie cicciox80

    ora provo ad applicare il codice che mi hai postato
    Sempre più in alto...
    www.webdition.com

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 © 2025 vBulletin Solutions, Inc. All rights reserved.