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'> </td>\n";
} else {
$color = $colore[$curEventId];
$testo = $TESTO_NOTE[$curEventId];
//--- calcolo dell'altezza e posizione del div
$ora_corrente = (int) substr($J, 0, 2);
//--- 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] = " ";
} // 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'> </td>\n";
}
print "</tr>\n";
} // if ($curId != -1)
}
?>
</table>
</body>
</html>