Visualizzazione dei risultati da 1 a 9 su 9
  1. #1
    Utente di HTML.it L'avatar di allin81
    Registrato dal
    Mar 2011
    Messaggi
    1,875

    Pagina che mostra tutti i record all'inizio e che restringe la ricerca con un menu

    Ho la pagina offerte.php che mi mostra tutti le offerte e fin qui non ho problemi.
    Nella stessa pagina ho inserito una specie di motore di ricerca composto da un menu a tendina dove seleziono le stelle e quando premo invio mi deve dare solo gli hotel che hanno quelle stelle ma sempre nella stessa pagina.

    Ricapitolando:
    - quando apro quella pagina voglio vedere tutte le offerte
    - quando seleziono per esempio 3 stelle, voglio vedere solo gli hotel 3 stelle in quella pagina

    Il problema e' visualizzare tutte le offerte appena apro la pagina, perche' poi dopo in base alle stelle riesco a visualizzare le stelle che voglio...

  2. #2
    Più facile mostrare tutti gli hotel.

    Se poi senza cambiare pagina vuoi che al cambiamento della scelta vengano mostrati solo hotel con almeno tot stelle... quello è Javascript, senza bisogno di ajax per di più.

  3. #3

    Re: Pagina che mostra tutti i record all'inizio e che restringe la ricerca con un menu

    Originariamente inviato da allin81
    Ho la pagina offerte.php che mi mostra tutti le offerte e fin qui non ho problemi.
    Nella stessa pagina ho inserito una specie di motore di ricerca composto da un menu a tendina...
    Il principio di fondo è quello dei filtri.
    Quindi modificare la query principale sulla base delle "stelle" selezionate.

    Dal menu a tendina fai partire una variabile POST che modifica la query.


    Il form punta alla stessa pagina che mostra i risultati.
    La select del menu a tendina la chiami per esempio: stelle

    a monte di tutto modifichi la query se e solo se esiste una variabile stelle nell'array post.

    Codice PHP:
    // query principale
    $query="SELECT * FROM tabella";

    // se esiste una variabile filtro
    if(!isset($_POST['stelle'])):

    // modifico la query
    $query.="WHERE stelle = '".(int)$_POST['stelle']."'";

    endif;

    //....e da qui in poi esegui la query e mostri i risultati 

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

    Re: Re: Pagina che mostra tutti i record all'inizio e che restringe la ricerca con un menu

    Originariamente inviato da andrealeti
    Il principio di fondo è quello dei filtri.
    Quindi modificare la query principale sulla base delle "stelle" selezionate.

    Dal menu a tendina fai partire una variabile POST che modifica la query.


    Il form punta alla stessa pagina che mostra i risultati.
    La select del menu a tendina la chiami per esempio: stelle

    a monte di tutto modifichi la query se e solo se esiste una variabile stelle nell'array post.

    Codice PHP:
    // query principale
    $query="SELECT * FROM tabella";

    // se esiste una variabile filtro
    if(!isset($_POST['stelle'])):

    // modifico la query
    $query.="WHERE stelle = '".(int)$_POST['stelle']."'";

    endif;

    //....e da qui in poi esegui la query e mostri i risultati 
    forse hai capito cosa mi serve, cmq per la precisione il campo nel menu non e' stelle ma aeroporto (di partenza)

    Attualmente sto facendo cosi':
    Codice PHP:
    $sql "select id_pacchetto, hotel, data, DATE_FORMAT(data, '%d/%m/%Y') AS data_formattata, aeroporto, destinazione, durata, prezzo, settimana_supplementare, disponibilita, tour_operator from pacchetti where 1"

    //CASO IN CUI L'AEROPORTO EQUIVALE A TUTTI GLI AEROPORTI
    if ($seleziona_aeroporto == "0") {
        
    $sql .= " and hotel=\"5 Stelle Formula Roulette\" and disponibilita > 0 and data > NOW() order by data asc";
    }

    //CASO IN CUI L'AEROPORTO E' STATO SELEZIONATO, DEVE USCIRE IL NOME DELL'AEROPORTO
    if ($seleziona_aeroporto != "0") {
        
    $sql .= " and hotel=\"5 Stelle Formula Roulette\" and disponibilita > 0 and data > NOW() and aeroporto = \"$seleziona_aeroporto\" order by data asc";

    Cosi' facendo non ho problemi quando seleziono l'aeroporto, il problema ce l'ho quando apro per la prima volta la pagina che non esce nessu risultato.

    Come faccio ad usare il tuo codice?
    Il menu a tendina si chiama seleziona_aeroporto

  5. #5
    Prima di tutto togli quel Where 1 dalla query principale.
    Non serve assolutamente a niente.

    poi guarda attentamente il codice che ti ho postato.
    E' la soluzione.

  6. #6
    Utente di HTML.it L'avatar di allin81
    Registrato dal
    Mar 2011
    Messaggi
    1,875
    Originariamente inviato da andrealeti
    Prima di tutto togli quel Where 1 dalla query principale.
    Non serve assolutamente a niente.

    poi guarda attentamente il codice che ti ho postato.
    E' la soluzione.
    si, ho provato come dici tu, appena apro la pagina mi dicei impossibile eseguire l'interrogazione,
    se faccio una ricerca si toglie questo messaggio e mi tira fuori tutti i record
    Codice PHP:
    $sql "select id_pacchetto, hotel, data, DATE_FORMAT(data, '%d/%m/%Y') AS data_formattata, aeroporto, destinazione, durata, prezzo, settimana_supplementare, disponibilita, tour_operator from pacchetti"
    if(!isset(
    $_POST['seleziona_aeroporto'])): 
    $sql.="WHERE aeroporto = '".(int)$_POST['seleziona_aeroporto']."'"
    endif;
    $risultato = @mysql_query($sql) or die("Impossibile eseguire l'interrogazione"); 

  7. #7
    c'è un ! intruso - MEA CULPA - nell if(!isset.....

    togli il punto esclamativo altrimenti ti nega la condizione.

    Ad ogni modo nel where OVVIAMENTE con il tipecasting (int)
    stai dicendo al database

    SELECT id_pacchetto, hotel, data, DATE_FORMAT(data, '%d/%m/%Y') AS data_formattata, aeroporto, destinazione, durata, prezzo, settimana_supplementare, disponibilita, tour_operator

    FROM pacchetti

    WHERE aeroporto <<-- questo deve essere un intero e non una stringa tipo "MALPENSA"

  8. #8
    Utente di HTML.it L'avatar di allin81
    Registrato dal
    Mar 2011
    Messaggi
    1,875
    Originariamente inviato da andrealeti
    c'è un ! intruso - MEA CULPA - nell if(!isset.....

    togli il punto esclamativo altrimenti ti nega la condizione.

    Ad ogni modo nel where OVVIAMENTE con il tipecasting (int)
    stai dicendo al database

    SELECT id_pacchetto, hotel, data, DATE_FORMAT(data, '%d/%m/%Y') AS data_formattata, aeroporto, destinazione, durata, prezzo, settimana_supplementare, disponibilita, tour_operator

    FROM pacchetti

    WHERE aeroporto <<-- questo deve essere un intero e non una stringa tipo "MALPENSA"
    ok ho trovato l'errore.
    In pratica alla fine della prima query dovevo mettere uno spazio perche' quando andavo a concatenare con il where me lo dava attaccato...
    Tutto bene, ti ringrazio per l'aiuto

  9. #9
    Era un errore di sintatti SQL!

    Felice di esserti stato utile

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.