- Home
- Categorie
- Coding e Sistemistica
- Coding
- query su minimo di notti
-
Ciao,
puoi postare il codice utilizzato? Altrimenti è difficile dirti dov'è il problema.
-
questa e' una delle clausole:
[php]
elseif($durata=="3"){
$query_offerte .=" and (minimo_notti = 0 OR minimo_notti = 1 OR minimo_notti = 3)";
}
[/php]
a me sembra che sta fatta bene, anzi forse potrei correggerla indicando che minimo_notti deve essere minore o uguale a $durata (che sarebbe il campo select del modulo)
-
Ma il problema non la dava con 4 notti?
-
con tutte, le prove le stavo facendo con il 4, cmq ora ho modificato cosi':
[php]
//Se la durata è compresa tra 1 e 14 (notti) mi dice che l'offerta da tirare fuori deve essere inferiore o uguale alla data di scadenza dell'offerta
if($durata!="16"){
$query_offerte .= "AND DATE_ADD(STR_TO_DATE('$arrivo', '%Y-%m-%d'), INTERVAL +$durata DAY) <= valida_fino ";
}// Se la durata è uguale a 16 significa che vuole vedere tutte le offerte e quindi non ci sono filtri da applicare
elseif($durata=="16"){
$query_offerte .= "";
}//Se la durata è diversa sia da 14 notti che da tutte le offerte (16) significa che deve mostrare tutte le offerte che hanno come minimo di notti un valore minore o uguale alla data scelta
elseif(($durata!="14")and($durata!="16"))
{
$query_offerte .=" and (minimo_notti <= $durata)";
}
[/php]
Per logica dovrebbe essere corretto cosi, no?
-
No perchè al terzo if non ci arrivi mai, viene sempre soddisfatta una delle condizioni precedenti.
-
e quindi devo mettere il terzo al primo posto?
-
Si, se lo metti sopra funziona come vuoi tu.
-
sicuro che non va in conflitto con gli altri 2?
-
Il problema è cosa stai facendo più che altro, perchè hai 2 if che agiscono sul numero di notti mentre l'altra condizione utilizza un campo totalmente diverso.
-
in che senso? tutti e 3 gli if tengono conto della durata.
Spiego meglio:
Ho un form composto dal campo "arrivo" dove inserisco la data tipo gg-mm-aaaa e sotto ho il campo "durata" dove ho questi valori1 notte (value 1)
2 notti (value 2)
3 notti (value 3)
4 notti (value 4)
5 notti (value 5)
6 notti (value 6)
7 notti (value 7)
14 notti (value 14)
tutte le offerte (value 16)quindi:
- se l'utente sceglie il valore 16, non ci saranno filtri e mostrerà tutti i prezzi
- se l'utente sceglie un valore diverso da 14 o da 16 vedrà tutti i prezzi, anche quelli che hanno un minimo di notti impostato, per esempio se l'offerta ha un minimo di notti pari a 3 e l'utente cerca un'offerta per 4 notti, questa offerta dovrà uscire
- se l'utente cerca per 14 notti (questo ancora sto cercando di gestirlo) e magari in 14 notti sono comprese tue offerte settimanali come ad esempio una dal 2 al 9 agosto e l'altra dal 9 al 16 agosto, allora dovra' tirarmi fuori la somma delle 2 offerte...
-
credo che cosi sia ancora migliore, facendo solo 2 condizioni
[php]
//Se la durata è compresa tra 1 e 14 (notti) mi dice che l'offerta da tirare fuori deve essere inferiore o uguale alla data di scadenza dell'offerta con il minimo di notti impostato
if($durata!="16"){
$query_offerte .= " and (minimo_notti <= $durata) AND DATE_ADD(STR_TO_DATE('$arrivo', '%Y-%m-%d'), INTERVAL +$durata DAY) <= valida_fino ";
}// Se la durata è uguale a 16 significa che vuole vedere tutte le offerte e quindi non ci sono filtri da applicare
elseif($durata=="16"){
$query_offerte .= "";
}
[/php]
ora dovrei lavorare sulla 14 notti...