Pues no creo que sea necesario hacer otra tabla para las fechas sin servicio... simplemente un registro más en la misma tabla...
id|nombretarifa|fecha_inicio|fecha_final|tarifa|Se rvicio
1|'verano 2003'|20030515|20030801|550|SI
2|'Otoño 2003'|20030802|20031215|480|SI
3|'Fuera de Ser'|20031213|20040201|0|NO
Y puedes cambiar el código mas o menos así...
Código PHP:
<?
// Te conectas a la BD
$fecha1=20030727;
$fecha2=20030805;
// Estas fechas son las que traes de los campos...
// Procura que esten en el formato YYYYMMDD
$dif=((strtotime($fecha2))-(strtotime($fecha1)))/86400;
$tarifa=0;
$mensaje="";
for ($i=0;$$i<$dif;$i++){
$qr_tarifa=mysql_query("select * from tarifas where fecha_inicio>=($fecha1 + interval $i day) and fecha_final<=('$fecha1' + interval $i day)");
$rs_tarifa=mysql_fetch_array($qr_tarifa);
if ($rs_tarifa["Servicio"]=="NO"){
$tarifa=0;
$mensaje="Lo sentimos, para algunas fechas seleccionadas no hay servicio, por favor intentelo de nuevo";
break;
}
$tarifa +=$rs_tarifa["tarifa"];
}
$mensaje=($mensaje=="")?"A continuacion le presentamos la tarifa para las fechas seleccionadas" : $mensaje;
echo $mensaje;
echo "Tarifa total: ".$tarifa;
?>
Bueno parece que eso es todo lo que se me ocurre