Ver Mensaje Individual
  #2 (permalink)  
Antiguo 22/06/2012, 12:05
KimboKim
 
Fecha de Ingreso: abril-2011
Mensajes: 67
Antigüedad: 13 años, 11 meses
Puntos: 6
Respuesta: Problemas con consulta SQL

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