Visualizzazione dei risultati da 1 a 3 su 3

Discussione: calendario con tabella

  1. #1

    calendario con tabella

    Salve a tutti, vorrei realizzare un calendario molto semplice... dovrebbe essere una tabella con in alto i giorni della settimana che partono però dalla data odierna e vanno avanti per 5 giorni... sotto una tabella con delle ampie celle ognuna corrispondente a un intervallo orario che parte per es dalle 7.30 del mattino e va avanti fino alle 24 con intervalli di 90 minuti... 7.30 - 9.00 etc
    Qualcuno può indicarmi la strada da seguire? Qualche script o altro? Grazie

  2. #2
    Utente di HTML.it L'avatar di badaze
    Registrato dal
    Jun 2002
    residenza
    Lyon
    Messaggi
    5,372
    Avevo pubblicato questo script in questo forum un anno fa... Quindi pochi ricordi.

    aaa0010.jpg

    Codice PHP:
    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
    <html>
    <head>
    <title>Untitled</title>
    <?php 
     $altezzaRiga 
    45;
    ?>
    <style type="text/css">
    <!--
    .table   {border: 3px solid black;vertical-align:top}
    .riga    {height:<?php print $altezzaRiga;?>px;alignment:top;}
    .td      {border: 1px dotted gray;vertical-align:top}
    .td_ora  {border: 1px solid black;}
    -->
    </style>
    </head>
    <body>
    <?php 
      
    //======== simolazione dei dati del db
      //=== Primo evento 
      
    $i                      0;
      
    $id_note[$i]            = 101;    
      
    $data_inizio[$i]        = 2.15;
      
    $data_fine[$i]          = 2.30;
      
    $TESTO_NOTE[$i]         = "Evento dalle 2.15 alle 2.30";
      
    $colore[$i]             = "blue";
      
    $timestamp_datimiei[$i] = $data_inizio[$i];
      
    $timestamp_datafine[$i] = $data_fine[$i];
     
      
    //=== Secondo evento 
      
    $i                      1;
      
    $id_note[$i]            = 213;    
      
    $data_inizio[$i]        = 8;
      
    $data_fine[$i]          = 11;
      
    $TESTO_NOTE[$i]         = "Evento dalle 8 alle 11";
      
    $colore[$i]             = "yellow";
      
    $timestamp_datimiei[$i] = $data_inizio[$i];
      
    $timestamp_datafine[$i] = $data_fine[$i];
     
      
    //=== Terzo evento 
      
    $i                      2;
      
    $id_note[$i]            = 346;    
      
    $data_inizio[$i]        = 15;
      
    $data_fine[$i]          = 18;
      
    $TESTO_NOTE[$i]         = "Evento dalle 15 alle 18";
      
    $colore[$i]             = "green";
      
    $timestamp_datimiei[$i] = $data_inizio[$i];
      
    $timestamp_datafine[$i] = $data_fine[$i];
     
      
    //=== Quarto evento 
      
    $i                      3;
      
    $id_note[$i]            = 488;    
      
    $data_inizio[$i]        = 20;
      
    $data_fine[$i]          = 22;
      
    $TESTO_NOTE[$i]         = "Evento dalle 20 alle 22";
      
    $colore[$i]             = "#ff7f50";
      
    $timestamp_datimiei[$i] = $data_inizio[$i];
      
    $timestamp_datafine[$i] = $data_fine[$i];
     
      
    //=== Quinto evento 
      
    $i                      4;
      
    $id_note[$i]            = 567;    
      
    $data_inizio[$i]        = 3.35;
      
    $data_fine[$i]          = 4;
      
    $TESTO_NOTE[$i]         = "Evento dalle 3.35 alle 4";
      
    $colore[$i]             = "orange";
      
    $timestamp_datimiei[$i] = $data_inizio[$i];
      
    $timestamp_datafine[$i] = $data_fine[$i];  
     
      
    //=== Sesto evento 
      
    $i                      5;
      
    $id_note[$i]            = 616;    
      
    $data_inizio[$i]        = 7;
      
    $data_fine[$i]          = 8;
      
    $TESTO_NOTE[$i]         = "Evento dalle 7 alle 8";
      
    $colore[$i]             = "cyan";
      
    $timestamp_datimiei[$i] = $data_inizio[$i];
      
    $timestamp_datafine[$i] = $data_fine[$i];  
     
      
    //=== Settimo evento 
      
    $i                      6;
      
    $id_note[$i]            = 703;    
      
    $data_inizio[$i]        = 11;
      
    $data_fine[$i]          = 13;
      
    $TESTO_NOTE[$i]         = "Evento dalle 11 alle 13";
      
    $colore[$i]             = "maroon";
      
    $timestamp_datimiei[$i] = $data_inizio[$i];
      
    $timestamp_datafine[$i] = $data_fine[$i];  
     
      
    //=== Ottavo evento 
      
    $i                      7;
      
    $id_note[$i]            = 703;    
      
    $data_inizio[$i]        = 10;
      
    $data_fine[$i]          = 14;
      
    $TESTO_NOTE[$i]         = "Evento dalle 10 alle 14";
      
    $colore[$i]             = "lightblue";
      
    $timestamp_datimiei[$i] = $data_inizio[$i];
      
    $timestamp_datafine[$i] = $data_fine[$i];   
     
      
    //=== Nono evento 
      
    $i                      8;
      
    $id_note[$i]            = 703;    
      
    $data_inizio[$i]        = 12.15;
      
    $data_fine[$i]          = 15;
      
    $TESTO_NOTE[$i]         = "Evento dalle 12.15 alle 15";
      
    $colore[$i]             = "cadetblue";
      
    $timestamp_datimiei[$i] = $data_inizio[$i];
      
    $timestamp_datafine[$i] = $data_fine[$i];   
     
      
    //=== decimo evento 
      
    $i                      9;
      
    $id_note[$i]            = 213;    
      
    $data_inizio[$i]        = 6.20;
      
    $data_fine[$i]          = 12.15;
      
    $TESTO_NOTE[$i]         = "Evento dalle 6.20 alle 12.15";
      
    $colore[$i]             = "cornflowerblue";
      
    $timestamp_datimiei[$i] = $data_inizio[$i];
      
    $timestamp_datafine[$i] = $data_fine[$i];
      
      
    //=== Primo evento 
      
    $i                      10;
      
    $id_note[$i]            = 101;    
      
    $data_inizio[$i]        = 2.35;
      
    $data_fine[$i]          = 7.55;
      
    $TESTO_NOTE[$i]         = "Evento dalle 2.35 alle 7.55";
      
    $colore[$i]             = "pink";
      
    $timestamp_datimiei[$i] = $data_inizio[$i];
      
    $timestamp_datafine[$i] = $data_fine[$i];  
      
     
    //===============================
     //=== Salvo il numero degli eventi
      
    $numEventi $i;
      
    //=== Preparo l'array delle ore
     
    $arrayOre = array();
     
    $arrayJ   = array();
     for(
    $index=0;$index 24;$index++) {
      
    $arrayOre[$index] = -1;
      if(
    $index<10) {
        
    $arrayJ[$index] = "0" $index ":00:00";
       } else {
        
    $arrayJ[$index] = $index ":00:00";
       } 
    // if($index<10) 
     
    // for($index=0;$index < 24;$index++)  
     
     //=== In ogni ora "occupata" metto l'indice dell'evento
     
    for($index=0;$index <= $numEventi;$index++) {
       for(
    $index2=$data_inizio[$index];$index2<$data_fine[$index];$index2++) {
          if (
    $index2==$data_inizio[$index]) {
         
    $index2 = (int) $index2;
       }
       
          if (
    $index2==$data_fine[$index]) {
         
    $index2 = (int) $index2 1;
       }   
       
       if (
    $arrayOre[$index2] == -1) {
          
    $arrayOre[$index2] = $index;
      } else {
        
    //--- Se c'è più di un evento per l'ora lo aggiungo
       //    avro' la forma evento1,evento2,evento3
        
    $arrayOre[$index2] .= ','.$index;
      } 
    // if ($arrayOre[$index2] == -1)
      
    // for($index2=$data_inizio[$index];$index2<$data_fine[$index]...
     
    // for($index=0;$index <= $numEventi;$index++) 
     
      //=== Faccio la conta degli eventi per ora e cerco la profondità
      
    $maxEventsPerHour 0;
      for(
    $index=0;$index 24;$index++) {
      if (
    $arrayOre[$index] != -1) {
        
    $arrTmp explode(',',$arrayOre[$index]);
       
    $conta  count($arrTmp);
       if ( 
    $conta $maxEventsPerHour) {
        
    $maxEventsPerHour $conta;
       } 
    // if ( $conta > $maxEventsPerHour) 
       
       
    foreach($arrTmp as $key => $idEvent) {
         if (!isset(
    $arrMaxPosEvent[$idEvent])) {
          
    $arrMaxPosEvent[$idEvent] = $key;
        } else {
          if (
    $key $arrMaxPosEvent[$idEvent]) {
          
    $arrMaxPosEvent[$idEvent] = $key;
         } 
    // if ($key > $arrMaxPosEvent[$value]) 
        
    // if (!isset($arrMaxPosEvent[$value]))
       
    // foreach($arrTmp as $key => $value)
       
      
    // if ($arrayOre[$index] != -1) 
     
    // for($index=0;$index < 24;$index++)  
     
     //=== Mi creo un array delle posizioni di ogni evento nella tabella finale
     
    $arrEventPosition = array();
      for(
    $index=0;$index 24;$index++) {
      for(
    $pos=0;$pos<$maxEventsPerHour;$pos++) {
       
    $arrEventPosition[$index][$pos] = 'x';
      } 
    // for($pos=0;$pos<=$maxEventsPerHour;$pos++)
     
    // for($index=0;$index < 24;$index++)   
     
      
    for($index=0;$index 24;$index++) {
       if (
    $arrayOre[$index] != -1) {
         
    $arrTmp explode(',',$arrayOre[$index]);
       foreach(
    $arrTmp as $key => $idEvent) {
         
    $idPosition $arrMaxPosEvent[$idEvent];
         
    $arrEventPosition[$index][$idPosition] = $idEvent;
       } 
    // foreach($arrTmp as $key => $idEvent)
      
    // if ($arrayOre[$index] != -1) {
     
    // for($index=0;$index < 24;$index++)  
    ?>
    <table cellspacing="0" cellpadding="0" class="table">
    <?php 
     $idIndex 
    0;
     for(
    $index=0;$index 24;$index++) {
      
    $curId $arrayOre[$index];
      
    $J     $arrayJ[$index];
      if (
    $curId != -1) {
       print 
    "<tr class='riga'>\n";
      print 
    "<td class='td_ora'>$J</td>\n";
         
    $arrayHourEvents $arrEventPosition[$index];
      foreach(
    $arrayHourEvents as $key => $curEventId) {
       if (
    $curEventId == 'x') {
         print 
    "<td class='td'>&nbsp;</td>\n";  
       } else {
               
    $color  $colore[$curEventId];
               
    $testo  $TESTO_NOTE[$curEventId]; 
               
    //--- calcolo dell'altezza e posizione del div
         
    $ora_corrente = (int) substr($J02);
         
    //--- data inizio
         
    $diL          $data_inizio[$curEventId];
         
    $di           = (int) $diL;
         
    $minuti_di    = (int) (($diL $di) * 100);
         
         
    //--- data fine
         
    $dfL          $data_fine[$curEventId];
               
    $df           = (int) $dfL;
         
    $minuti_df    = (int) (($dfL $df) * 100);
         
         
    //--- Posizione e altezza di default
         
    $top          0;
         
    $alt          100;
         
         if (
    $ora_corrente == $di) {
           if (
    $minuti_di != 0) {
          
    $top = (int) (($minuti_di 60) * 100);
          
    $alt = (int) (100 $top);
        }
         }
         
         if (
    $ora_corrente == $df) {
           if (
    $minuti_df != 0) {
          
    //$walt = (int) (((60 - $minuti_df - $minuti_di) / 60) * 100); 
          
    $walt = (int) (((60 $minuti_df) / 60) * 100);  
          
    $alt  $alt $walt;
        } 
         } 
         
         
    $top = (int) $top;
         
    $alt = (int) $alt;
         
    $idIndex++;
         print 
    "<td class='td'>";
         print 
    "<div style='display:none;' id='oraid_$idIndex'>$testo</div>";
         print 
    "<div style='background-color:$color;height:$alt%;position:relative;top:${top}%;width:100%' 
         onclick=\"javascript:location='modifica_pagina.htm?id=
    $curEventId'\" alt='kkkk'>$testo</div>";
         print 
    "</td>";
         
    $TESTO_NOTE[$curEventId] = "&nbsp;";
       } 
    // if ($curEventId == 'x')
      
    // foreach($arrayHourEvents as $key => $curEventId)
      
    print "</tr>\n";
      } else {
        print 
    "<tr class='riga' onclick=\"javascript:location='nuova_pagina.htm?timestamp=$index'\">\n";
        print 
    "<td class='td_ora'>$J </td>\n"
     for (
    $max=0;$max<$maxEventsPerHour;$max++) {
       print 
    "<td class='td'>&nbsp;</td>\n"
     }
        print 
    "</tr>\n";  
      } 
    // if ($curId != -1)
     
    }  
     
    ?>
    </table> 
    </body>
    </html>
    Ridatemi i miei 1000 posts persi !!!!
    Non serve a nulla ottimizzare qualcosa che non funziona.
    Cerco il manuale dell'Olivetti LOGOS 80B - www.emmella.fr

  3. #3
    ok, veramente grazie mille, mi metto subito a lavoro!

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.