gente problema recuelto, es verdad eso que en el baño lo ves todo claro... jajajaja
el código anterior era muy largo, lo he semplificado sólo con un if(){}
y es el siguiente:
Código PHP:
<?php
//Funcion para calcular precio del alquiler de coches.
function calcular_precio($recogida,$entrega,$coche){
//declara $total como variable global
global $total;
//contar dias de la reserva
$dias = abs((strtotime($entrega) - strtotime($recogida))/86400);
$SacarTarifa = mysql_query("SELECT * FROM tarifas where coche='$coche' AND inicio<='$recogida' AND fin>='$entrega'", conectar()) or die(mysql_error());
if(mysql_num_rows($SacarTarifa)<=0){
//Si el periodo de la reserva tiene diferentes tarifas
$SacarTarifa = mysql_query("SELECT * FROM tarifas where coche='$coche' AND fin>='$recogida'", conectar()) or die(mysql_error());
}
$dataTarifa = mysql_fetch_array($SacarTarifa);
//Aplicar los precios de la tarifa segun los dias elegidos
switch ($dias){
case "1": $total=$dataTarifa['p_1']; break;
case "2": $total=$dataTarifa['p_2']; break;
case "3": $total=$dataTarifa['p_3']; break;
case "4": $total=$dataTarifa['p_4']; break;
case "5": $total=$dataTarifa['p_5']; break;
case "6": $total=$dataTarifa['p_6']; break;
case "7": $total=$dataTarifa['p_7']; break;
case "14": $total=$dataTarifa['p_14']; break;
}
//si los dias son 8,9,10,11,12,13
if(($dias>7)&&($dias<14)){
$total=($dataTarifa['p_7']/7)*$dias;
}
//Si los dias son más de 14 dias
if($dias>14){
$total=($dataTarifa['p_14']/14)*$dias;
}
//Devolver el total de la reserva
return $total;
}
?>
el problema era que siempre me seleccionaba la primera tarifa, porque es la que tiene fecha inicio menor de todas y por eso siempre la coge, lo que he hecho fue cambiar inicio por fin en la consulta con if() y puuum problema resuelto...
gracias por su interes