Ciao a tutti.
Dovrei inserire la possibilità di scelta tra un hotel a 3 stelle ed uno a 4 in un form di prenotazione vacanza.

ho inserito corretttamente i campi necessari nel database, li richiamo con una query e ne definisco le variabili e la loro chiamata mediante delle if .

Ma c'è qualcosa che salto o che manca perchè no funziona come dovrebbe.
Se scelgo poi tre stelle mi mette il prezzo del 4 stelle ( tra l'altro sbagliato di qualche decina d'euro ) e se metto 4 stelle me lo aumenta ulteriormente inun prezzo che non c'entra nulla.
Qui sotto il codice.

Codice PHP:
function costi_pacchetto($data1,$nome_pck,$extra_nightsb,$extra_nightsa,$insurance,$hotel,$letto,$num_viag,$user,$pwd,$host,$dbname,$lingua){

# Calcola i costi di un pacchetto turistico considerando la stagione (alta o bassa) le notti extra, il tipo di sistemazione etc..
 
$letto_old=$letto;
if (
$extra_nightsa=="") {
  
$extra_nightsa=0;


if (
$extra_nightsb=="") {
  
$extra_nightsb=0;




$tariffa_extra_nights=0;
$tariffa_giorno_bassa=0;
$tariffa_giorno_alta=0;
$prezzo_persona=0;
$disclaimer_prezzo=0;
$tariffa_giorno_bassa_3stelle=0;
$tariffa_giorno_alta_3stelle=0;

#print "lingua = *".$_SESSION['lang']."*
nome pacchetto = *".$nome_pck."*
\
n";
$query = "SELECT FROM pacchetti WHERE lingua=\"".$lingua."\" AND nome=\"".$nome_pck."\"";
$rquery1=dbquery2($host$user$pwd$query"1");
                
if (!
$rquery1) {
  
$errore=1;
  print 
"<script language='javascript'>\n";
  print 
"alert('Errore nella query: " quota($query) . "\\nModulo: util.php\\nDescrizione dell\'errore: " quota(mysql_error()) . "\\nElaborazione terminata.')\n";
  print 
"</script>\n";
  exit;
} else {
  
$riga mysql_fetch_assoc($rquery1);
  
$numrows=mysql_num_rows($rquery1); 
  if (
$numrows>0) {
    
$codice=$riga['codice']; 
    
$nome=$riga['nome']; 
    
$durata=$riga['durata']; 
    
$suppl_singola=$riga['suppl_singola']; 
    
$suppl_singola3=$riga['suppl_singola3'];
    
$exn_double_occ_bs=$riga['exn_double_occ_bs']; 
    
$exn_double_occ_as=$riga['exn_double_occ_as']; 
    
$exn_singola_bs=$riga['exn_singola_bs']; 
    
$exn_singola_as=$riga['exn_singola_as']; 
     
$exn_double3_occ_bs=$riga['exn_double3_occ_bs'];
    
$exn_double3_occ_as=$riga['exn_double3_occ_as'];
    
$exn_singola3_bs=$riga['exn_singola3_bs']; 
    
$exn_singola3_as=$riga['exn_singola3_as']; 
    
$lingua=$riga['lingua']; 
    
$prezzo_as=$riga['prezzo_as']; 
    
$prezzo_bs=$riga['prezzo_bs']; 
    
$prezzo3_as=$riga['prezzo3_as']; 
    
$prezzo3_bs=$riga['prezzo3_bs']; 
    
$deposito=$riga['deposito']; 
    
$giorni_dep=$riga['giorni_dep']; 
    
$carico_ass=$riga['carico_ass'];  
  } else {
#    print "<script language='javascript'>\n";
    
print "Errore nella query: " quota($query) . "
Modulo: p_step3.php
Descrizione dell'errore: La query non ha ritornato risultati
Lingua="
.$_SESSION['lang']."
Nome Pacchetto="
.$nome_pck."
Elaborazione terminata."
;
#    print "alert('Errore nella query: " . quota($query) . "\\nModulo: p_step3.php\\nDescrizione dell\'errore: La query non ha ritornato risultati\\nLingua=".$_SESSION['lang']."\nNome Pacchetto=".$nome_pck."\nElaborazione terminata.')\n";
#    print "</script>\n";
  
exit;
  }
}
$tariffa_giorno_bassa=$prezzo_bs/$durata;
$tariffa_giorno_alta=$prezzo_as/$durata;
#tariffa hotel tre stelle
$tariffa_giorno_bassa_3stelle=$prezzo3_bs/$durata;
$tariffa_giorno_alta_3stelle=$prezzo3_as/$durata;

# carico l'array con l'elenco dei giorni del pacchetto base
for ($i=0;$i<$durata;$i++) {
  
$mat_giorni_pck[$i]=mktime(000$data1[1], $data1[2]+$i$data1[0]);
}
# carico l'array con l'elenco dedi giorni before (se richiesti)
$sw_mat_extra_nightsb=0;
$sw_mat_extra_nightsa=0;
for (
$i=$extra_nightsb;$i>0;$i--) {
  
$sw_mat_extra_nightsb=1;
  
$mat_extra_nightsb[$i]=mktime(000$data1[1], $data1[2]-$i$data1[0]);
  
$value=date("Y-m-d",$mat_extra_nightsb[$i]);
}
# carico l'array con l'elenco dedi giorni after (se richiesti)
for ($i=$extra_nightsa;$i>0;$i--) {
  
$sw_mat_extra_nightsa=1;
  
$mat_extra_nightsa[$i]=mktime(000$data1[1], $data1[2]+$i+$durata-1$data1[0]);
  
$value=date("Y-m-d",$mat_extra_nightsa[$i]);
}

$query "SELECT * FROM stagioni ORDER BY inizio_bassa";
$rquery1=dbquery2($host$user$pwd$query"1");
                
if (!
$rquery1) {
  
$errore=1;
  print 
"<script language='javascript'>\n";
  print 
"alert('Errore nella query: " quota($query) . "\\nModulo: p_step3.php\\nDescrizione dell\'errore: " quota(mysql_error()) . "\\nElaborazione terminata.')\n";
  print 
"</script>\n";
  exit;
} else {
  
$idx=0;
  
$giornibassa=0;
  
$giornialta=0;
  
$giorniextrabassa=0;
  
$giorniextraalta=0;
# Ciclo sui periodi di bassa stagione letti dalla tabella stagioni 
  
while ($riga mysql_fetch_assoc($rquery1)) {
    
$pezzididata=explode("-"$riga["inizio_bassa"]);
    
$giornoiniziobassa=$pezzididata[1];
    
$meseiniziobassa=$pezzididata[0];
    
$pezzididata=explode("-"$riga["fine_bassa"]);
    
$giornofinebassa=$pezzididata[1];
    
$mesefinebassa=$pezzididata[0];
# Per ogni periodo di bassa stagione trovato in tabella stagioni ciclo sulle date del pacchetto base per calcolare il numero di giorni di bassa stagione
    
foreach ($mat_giorni_pck as $value) {
      
$annoitem=date("Y",$value);
      
$dataunixstart=mktime(000$meseiniziobassa$giornoiniziobassa$annoitem);
      
$dataunixfine=mktime(000$mesefinebassa$giornofinebassa$annoitem);
      if (
$value>=$dataunixstart && $value<=$dataunixfine){
        ++
$giornibassa;
      }
    }
# Per ogni periodo di bassa stagione trovato in tabella stagioni ciclo sulle date dei giorni extra before per calcolare il numero di giorni extra before di bassa stagione

    
if ($sw_mat_extra_nightsb==1) {
      foreach (
$mat_extra_nightsb as $value) {
        
$annoitem=date("Y",$value);
        
$dataunixstart=mktime(000$meseiniziobassa$giornoiniziobassa$annoitem);
        
$dataunixfine=mktime(000$mesefinebassa$giornofinebassa$annoitem);
        if (
$value>=$dataunixstart && $value<=$dataunixfine){
          ++
$giorniextrabassa;
        }
      }
    }
# Per ogni periodo di bassa stagione trovato in tabella stagioni ciclo sulle date dei giorni extra after per calcolare il numero di giorni extra after di bassa stagione
    
if ($sw_mat_extra_nightsa==1) {
      foreach (
$mat_extra_nightsa as $value) {
        
$annoitem=date("Y",$value);
        
$dataunixstart=mktime(000$meseiniziobassa$giornoiniziobassa$annoitem);
        
$dataunixfine=mktime(000$mesefinebassa$giornofinebassa$annoitem);
        if (
$value>=$dataunixstart && $value<=$dataunixfine){
          ++
$giorniextrabassa;
        }
      }
    }
  }
}

# dopo aver calcolato i giorni di bassa stagione ricavo per differenza quelli di alta sia per il pacchetto base che per gli eventuali giorni extra.

$giornialta=$durata-$giornibassa;
$giorniextraalta=$extra_nightsb+$extra_nightsa-$giorniextrabassa;

# verifico che la data di inizio del pacchetto sia o meno all'interno dei giorni di definizione deposito
$datadeposito=mktime(000date("m",time()), date("d",time())+$giorni_depdate("Y",time()));
if (
$datadeposito>=$mat_giorni_pck[0]) {
# siamo all'interno dei giorni di deposito, quindi si paga per intero
  
$swacconto=0;
  if (
$letto==2) {
# se il cliente chiede "separate beds" ed è oltre il periodo di acconto dovrà pagare il letto singolo salvo che venga poi rimborsato nel caso in cui si riesca a soddisfare la sua richiesta e dovrà essere visualizzato il disclaimer adeguato accanto al prezzo
    
$letto=3;
    
$disclaimer_prezzo=1;
  }
} else {
# siamo fuori dai giorni di deposito, quindi si paga l'acconto
  
$swacconto=1;
  if (
$letto==2) {
# se il cliente chiede "separate beds" ed è fuori dal periodo di acconto dovrà essere visualizzato il disclaimer adeguato accanto al prezzo
    
$disclaimer_prezzo=2;
  }
}

# Calcolo la componente extra nights del costo del pacchetto
if ($letto==3) {
# camera singola o "separate beds" trasformata in singola (vedi if precedente)
  
$tariffa_extra_nights=($giorniextrabassa*$exn_singola_bs)+($giorniextraalta*$exn_singola_as);
}
elseif (
$letto==&& $hotel==1)
{

$tariffa_extra_nights=($giorniextrabassa*$exn_singola3_bs)+($giorniextraalta*$exn_singola3_as);

}

elseif (
$hotel==1)

{

$tariffa_extra_nights=($giorniextrabassa*$exn_double3_occ_bs)+($giorniextraalta*$exn_double3_occ_as);

}

 else {
  
$tariffa_extra_nights=($giorniextrabassa*$exn_double_occ_bs)+($giorniextraalta*$exn_double_occ_as);
}

# Calcolo il costo del pacchetto
#se il cliente richiede l'hotel a 3 stelle

if ($hotel==1) {
$prezzo_persona=($giornibassa*$tariffa_giorno_bassa_3stelle)+($giornialta*$tariffa_giorno_alta_3stelle)+$tariffa_extra_nights;

}
else{
$prezzo_persona=($giornibassa*$tariffa_giorno_bassa)+($giornialta*$tariffa_giorno_alta)+$tariffa_extra_nights;
}


# Se il cliente richiede la stanza singola applico il supplemento che è indipendente dalla stagione
if ($letto==3) {
  
$prezzo_persona=$prezzo_persona+$suppl_singola;
}

#Se il cliente richiede la stanza singola ma l'albergo a 3 stelle

elseif ($letto==&& $hotel==1)
{
$prezzo_persona=$prezzo_persona+$suppl_singola3;

}

# Sed il cliente richiede l'assicurazione carico il prezzo per persona della percentuale letta in tabella pacchetti
if ($insurance=="y") {
  
$prezzo_persona+=($prezzo_persona/100)*$carico_ass;
}

$prezzo_totale=$prezzo_persona*$num_viag;

# Imposto il prezzo del deposito
if ($swacconto==1) {
  
$acconto=$deposito*$num_viag;
} else {
  
$acconto=$prezzo_totale;
}

return array (
$prezzo_persona$prezzo_totale$acconto$disclaimer_prezzo$giornialta$giornibassa);


Dove sbaglio? Probabilmente in più punti..