En mi DB tengo una tabla llamada tarifas, y dentro hay 5 campos que son
- id_tarifa
- coche
- fecha_inicio
- fecha_fin
- p_1
- p_2, p_3, p_4, p_5, p_6, p_7, p_14
quiero hacer un sistema que calcula el precio del alquiler de un coche para las fechas escogidas por el cliente. si el periodo está en una unica tarifa no hay problema el sistema funciona correctamente, el problema es cuando pertenece a diferentes tarifa, que tambien funciona pero me coge la tarifa equibocada. le paso el código para que le puedan echar un vistazo
Código:
cuando ejecuto el script con un periodo de varias tarifas siempre me saca la del primer campo de la tabla, aunque la tarifa correcta sea la última.<?php //Funcion para calcular precio del alquiler de coches. function calcular_precio($recogida,$entrega,$coche){ //declara $total como variable global global $total; $SacarTarifa = mysql_query("SELECT * FROM tarifas where coche='$coche' AND inicio<='$recogida' AND fin>='$entrega'", conectar()) or die(mysql_error()); //Si el periodo de la reserva está comprendido entre el inicio y el fin de la tarifa aplicada if(mysql_num_rows($SacarTarifa)>=1){ $dataTarifa = mysql_fetch_array($SacarTarifa); //contar dias de la reserva $dias = abs((strtotime($entrega) - strtotime($recogida))/86400); //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; } } //Si el periodo de la reserva tiene diferentes tarifas, saco el precio desde la tarifa donde se encuentra $recogida. else{ $SacarTarifaM = mysql_query("SELECT * FROM tarifas where coche='$coche' AND inicio <= '$recogida'", conectar()) or die(mysql_error()); $dataTarifaM = mysql_fetch_array($SacarTarifaM); $diasM = abs((strtotime($entrega) - strtotime($recogida))/86400); //aplico los precios switch ($dias1){ case "1": $total=$dataTarifaM['p_1']; break; case "2": $total=$dataTarifaM['p_2']; break; case "3": $total=$dataTarifaM['p_3']; break; case "4": $total=$dataTarifaM['p_4']; break; case "5": $total=$dataTarifaM['p_5']; break; case "6": $total=$dataTarifaM['p_6']; break; case "7": $total=$dataTarifaM['p_7']; break; case "14": $total=$dataTarifaM['p_14']; break; } if(($diasM>7)&&($diasM<14)){ $total=($dataTarifaM['p_7']/7)*$diasM; }if($diasM>14){ $total=($dataTarifaM['p_14']/14)*$diasM; } } //Devolver el total de la reserva return $total; } ?>
alguna recomendacion o sugerencia??