Mi sa di soluzione un po arrabattata ma funziona perfettamente.
Ho usato il while perche non sono riuscito immediatamente a farlo con il for each.
Noterai che ho tentato di trattare il peso in modo da ottenere es : 4:00
L'ho commentato perchè se io vado a confrontare
2:00>1:00 mi da false
2:00>1 mi da true
Non mi chiedere il perchè.
C'è un replicazione del routine come puoi notare.
Il problema si presentava quando l'inizio della giornata fosse impegnato ma il resto libero.
Ovviamente non faceva il controllo.
In quel caso ho settato ll'inizio del successivo intervento come $end (orario di fine lavoro tecnico)
Be ci sara da migliorarlo ma funziona e alla grande.... per ora va bene cosi..
Grazie mille
Codice PHP:
$sql="SELECT int_OraInizio, int_OraFine FROM interventi WHERE int_idtecnico = '".$rktec['tec_idtecnico']."' AND int_datafissata = '".$datafissata."' "; //echo $sql."
";
$res_fasce=mysql_query($sql);
$start = "09:00";
$end = "18:00";
if($OraInizio=="" || $OraFine==""){
//TRATTO IL PESO PER TRASFORMARLO DA INTERO A HH:II DA SISTEMARE
$peso = intval($peso);
//$peso = $peso . ":00";
//DA RISTUDIARE COME UTILIZZARE IL PESO
//------------------------------------------------TEST 2
$last_intervento_fine = $start;
$counter = 0;
$nfasce = mysql_num_rows($res_fasce);
while($intervento = mysql_fetch_array($res_fasce)){
$counter++;
$slot_libero = differenza_ora($last_intervento_fine,$intervento['int_OraInizio'],":");
if($slot_libero >= $peso){
$OraInizio = $last_intervento_fine;
$OraFine = somma_ora($OraInizio ,$peso.":00",":");
break;
}else{
$last_intervento_fine =$intervento['int_OraFine'];
}
if($nfasce == $counter){
$slot_libero = differenza_ora($last_intervento_fine,$end,":");
if($slot_libero >= $peso){
$OraInizio = $last_intervento_fine;
$OraFine = somma_ora($OraInizio ,$peso.":00",":");
break;
}else{
$last_intervento_fine =$intervento['int_OraFine'];
}
}
}
echo "OraInizio:".$OraInizio." OraFine:".$OraFine;exit();