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>