Pagina 2 di 2 primaprima 1 2
Visualizzazione dei risultati da 11 a 20 su 20
  1. #11
    codice:
    date_add(valida_da,interval day)) = 2 )
    vedi che tra interval e day non mette il valore, quel prezzo_come o come si chiama la variabile. ricontrolla
    IP-PBX management: http://www.easypbx.it

    Old account: 2126 messages
    Oldest account: 3559 messages

  2. #12
    Utente di HTML.it L'avatar di allin81
    Registrato dal
    Mar 2011
    Messaggi
    1,875
    tu hai messo $period, io c'ho messo $prezzo_come, ma anche se ci metto direttamente il numero 7 mi da lo stesso errore.
    Anche se ci metto $durata.
    Non ho capito che ci devo mettere e cosa indica sta query

  3. #13
    Utente di HTML.it L'avatar di allin81
    Registrato dal
    Mar 2011
    Messaggi
    1,875
    ho modificato qualcosina, questa e' la query attuale con il relativo risultato ed errore:

    Codice PHP:
    $query_offerte="SELECT id_offerta, titolo, DATE_FORMAT(valida_da, '%d/%m/%Y') AS valida_da_ita, DATE_FORMAT(valida_fino, '%d/%m/%Y') AS valida_fino_ita, minimo_notti, prezzo, prezzo_come, trattamento, id_albergo, mezzo_di_trasporto FROM tbl_offerte where

    ( month(valida_da)=
    $mese and month(valida_fino)=$mese and datediff(valida_fino,valida_da)>=$durata )
    or
    ( month(valida_da)=
    $mese and month((date_add(valida_da,interval $durata day)) = $mese )
    or
    ( month(valida_fino)=
    $mese and month((date_sub(valida_fino,interval $durata day))=$mese)";

    //se l'utente ha inserito anche la durate applichiamo il filtro

    if($durata=="2"){
    $query_offerte .= " AND prezzo_come<=5 ";
    }
    if(
    $durata=="3"){
    $query_offerte .= " AND prezzo_come>=6 AND prezzo_come<=9 ";
    }
    if(
    $durata=="4"){
    $query_offerte .= " AND prezzo_come>9 ";
    }

    $query_offerte .= "ORDER by prezzo/prezzo_come";

    echo
    "$query_offerte

    "

    Se cerco per il mese di febbraio un soggiorno da 6 a 9 notti questo e' il risultato di quella query:

    SELECT id_offerta, titolo, DATE_FORMAT(valida_da, '%d/%m/%Y') AS valida_da_ita, DATE_FORMAT(valida_fino, '%d/%m/%Y') AS valida_fino_ita, minimo_notti, prezzo, prezzo_come, trattamento, id_albergo, mezzo_di_trasporto FROM tbl_offerte where ( month(valida_da)=2 and month(valida_fino)=2 and datediff(valida_fino,valida_da)>=3 ) or ( month(valida_da)=2 and month((date_add(valida_da,interval 3 day)) = 2 ) or ( month(valida_fino)=2 and month((date_sub(valida_fino,interval 3 day))=2) AND prezzo_come>=6 AND prezzo_come<=9 ORDER by prezzo/prezzo_come

    l'errore che esce sotto e'

    You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'ORDER by prezzo/prezzo_come' at line 7

    ma non capisco perche'

  4. #14
    Utente di HTML.it L'avatar di allin81
    Registrato dal
    Mar 2011
    Messaggi
    1,875
    niente, mi sono arenato su questo pezzo di codice tuo...

  5. #15
    Originariamente inviato da allin81
    niente, mi sono arenato su questo pezzo di codice tuo...
    se mi dai tempo mi installo mysql e ti faccio un esempio pratico, però ora sono impegnato :P
    IP-PBX management: http://www.easypbx.it

    Old account: 2126 messages
    Oldest account: 3559 messages

  6. #16
    Utente di HTML.it L'avatar di allin81
    Registrato dal
    Mar 2011
    Messaggi
    1,875
    si si ok, no problem
    ma intanto mi dici quel pezzo di query cosa dovrebbe fare?

  7. #17
    allora
    codice:
    $query_offerte="SELECT id_offerta, titolo, DATE_FORMAT(valida_da, '%d/%m/%Y') AS valida_da_ita, DATE_FORMAT(valida_fino, '%d/%m/%Y') AS valida_fino_ita, minimo_notti, prezzo, prezzo_come, trattamento, id_albergo, mezzo_di_trasporto FROM tbl_offerte where 
    
    1=1 and (
    ( month(valida_da)=$mese and month(valida_fino)=$mese and datediff(valida_fino,valida_da)>=$durata ) 
    or 
    ( month(valida_da)=$mese and month((date_add(valida_da,interval $durata day)) = $mese ) 
    or 
    ( month(valida_fino)=$mese and month((date_sub(valida_fino,interval $durata day))=$mese))"; 
    
    //se l'utente ha inserito anche la durate applichiamo il filtro 
    
    if($durata=="2"){ 
    $query_offerte .= " AND prezzo_come<=5 "; 
    } 
    if($durata=="3"){ 
    $query_offerte .= " AND prezzo_come>=6 AND prezzo_come<=9 "; 
    } 
    if($durata=="4"){ 
    $query_offerte .= " AND prezzo_come>9 "; 
    } 
    
    $query_offerte .= "ORDER by prezzo/prezzo_come"; 
    
    echo"$query_offerte
    
    ";
    solo che così $durata = 1/2/3/4 (ovvero le opzioni del form) e non ritorna quindi il dato sperato... la query praticamente dice:

    seleziona tutto dalla tabella tbl_offere dove
    uno è uguale a uno (e vabbeh è un collante) E

    caso 1) valida_da e valida_fino sono del mese ricercato e la durata dell'offerta (=valida_fino - valida_da) in giorni è maggiore o uguale della durata richiesta ($durata)

    oppure

    caso 2) valida_da è del mese ricercato e valida_fino di un altro mese, e valida_da + il numero di giorni di soggiorno richiesto ricade sempre nel mese richiesto (tipo inizia il 15 marzo finisce ad aprile, quindi se cerco 5 giorni a marzo allora "15 marzo" è di marzo e "15 marzo + 5giorni" è sempre di marzo e quindi la seleziono)

    oppure caso 3)
    valida_fino è del mese ricercato e valida_da di un altro mese, e valida_fino MENO il numero di giorni ricercato ricade sempre nel mese richiesto ( offerta che iniza dal 15 marzo e finisce il 6 aprile, se cerco 5 giorni ad aprile allora "6 aprile meno 5 giorni" resta sempre in aprile e quindi visualizzo l'offerta)

    il problema qui è quel tuo prezzo_come che non ho capito a cosa serva
    IP-PBX management: http://www.easypbx.it

    Old account: 2126 messages
    Oldest account: 3559 messages

  8. #18
    Utente di HTML.it L'avatar di allin81
    Registrato dal
    Mar 2011
    Messaggi
    1,875
    ok ho capito la tua query, ora la provo.
    Il prezzo_come serve ad indicare l'offerta per quante notti e', ad esempio
    - se c'e' 1, e' per una notte
    - se c'e' 2, e' per 2 notti,
    -7 per 7 notti, ecc ecc

    In pratica io metto l'offerta dal 10 aprile al 24 maggio e in prezzo_come metto 7, il che significa che per tutto quel periodo, chi prenota un soggiorno di 7 notti paga quel prezzo, credo che devo metterlo per forza, no?

  9. #19
    Utente di HTML.it L'avatar di allin81
    Registrato dal
    Mar 2011
    Messaggi
    1,875
    niente, ho provato con la tua query e questo e' il risultato:

    SELECT id_offerta, titolo, DATE_FORMAT(valida_da, '%d/%m/%Y') AS valida_da_ita, DATE_FORMAT(valida_fino, '%d/%m/%Y') AS valida_fino_ita, minimo_notti, prezzo, prezzo_come, trattamento, id_albergo, mezzo_di_trasporto FROM tbl_offerte where 1=1 and ( ( month(valida_da)=2 and month(valida_fino)=2 and datediff(valida_fino,valida_da)>=3 ) or ( month(valida_da)=2 and month((date_add(valida_da,interval 3 day)) = 2 ) or ( month(valida_fino)=2 and month((date_sub(valida_fino,interval 3 day))=2)) AND prezzo_come>=6 AND prezzo_come<=9 ORDER by prezzo/prezzo_come

    You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'ORDER by prezzo/prezzo_come' at line 8


    ci sta quel where 1=1 che ho provato ad eliminare ma lo stesso non va...

  10. #20
    Utente di HTML.it L'avatar di allin81
    Registrato dal
    Mar 2011
    Messaggi
    1,875
    up

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.