ho sentito il cliente e ora lavoriamo in ORE. cmq il problema viene riprosto. Vi allego il codice magari qualcuno piu in gamba di me ci capisce qualcosa... provate
copiatelo cosi com'è in una pagina PHP. Create in una tabella che volete ad esempio CALENDARIO i campi ID (autoincrementale), commessa (varchar), data (tipo data), tempooccupato (intero). Fate un prova con una commessa che dura quanto volete. Esprimetelo in secondi che poi saranno convertiti in ore. Il limnite è circa 35.000.000 secondi.
Create A MANO un record (uno solo) che contenga un tempooccupato pari a 49. E'necessario che ci sia questo record. Questo è il programma ridotto all'osso che non tiene conto di ferie e che deve avere il record iniziale
<?
$DB = "database" ;
mysql_connect("localhost","","") or die("ERRORE: Database non connesso");
mysql_select_db($DB) or die("ERRORE: Database $DB non selezionato");
function crea_domani($adesso)
{
// mi passa la data di oggi e restituisce quella di domani
// le date sono ENTRAMBE nel formato americano
list($anno,$mese,$giorno) = explode("-",$adesso);
$domani=date ("Y-m-d" ,mktime(0,0,0, date($mese), $giorno+1,$anno));
return $domani;
}
function crea_Calendario($id_commessa, $secondi, $data, $calendario)
{
echo "
INIZIO : $id_commessa, $secondi, $data, $calendario
";
// Preparazione delle variabili per la loro elaborazione
$giorno = 49; // ore in un giorno dei 7 operai
$query = "SELECT SUM(tempooccupato) FROM $calendario WHERE data='$data'";
$dati = mysql_Query($query) or die (mysql_error());
$row = mysql_fetch_Array($dati);
$tempoRecord = $row[0];
switch ($tempoRecord) // controllo il dato che ho estratto
{
case $tempoRecord= $giorno:
{
// sono in questo caso: Giorno attuale è pieno per cui devo lavorare nel giorno successivo (DOMANI)
if ($secondi <= $giorno)
{ echo "
1
";
// se la commessa dura al massimo quanto un giorno
// - lavoro domani
// - il tempo occupato è l'intero tempo della commessa
$domani = crea_domani($data);
$query = "INSERT INTO $calendario (commessa, data, tempooccupato) VALUES ('$id_commessa','$domani','$secondi')";
$dati = mysql_query($query) or die (mysql_error());
echo "
scrivo: $query
";
}
else
{
// devo spalmare la commessa su piu giorni
// - creo domani
// - mi calcolo il resto da passare alla funzione calendario
// in tabella scrivo la quantita massima lavorativa cioè $GIORNO
echo "
2
";
$domani = crea_domani($data);
$resto = $secondi - $giorno;
$query = "INSERT INTO $calendario (commessa, data, tempooccupato) VALUES ('$id_commessa', '$domani', '$giorno')";
$dati = mysql_query($query) or die (mysql_error());
echo "
scrivo: $query
";
echo "2a";
crea_Calendario($id_commessa, $resto, $domani, $calendario) ;
}
break;
}
} // FINE SWITCH
} // FINE FUNZIONE
// -------------------- I N I Z I O P R O G R A M M A ++++++++++++++++++++
$calendario = "calendario" ;
$secondi_commessa = 40000000; // tempo di durata della commessa
$ore = round($secondi_commessa / 3600 );
$id_commessa = "0010";
$oggi = "2005-07-31" ;
crea_Calendario($id_commessa, $ore, $oggi, $calendario);
/* ************************************************** ************** */
echo "<table border=1 align=center width=50%><tr><td>Operatore</td><td>data in tabella</td><td>tempo da inserire</td></tr>" ;
echo "<tr><td align=center colspan='3'>La commessa ha una durata di $secondi_commessa secondi</td></tr>";
echo "</table>";
?>