Visualizzazione dei risultati da 1 a 8 su 8
  1. #1
    Utente di HTML.it L'avatar di lukezz
    Registrato dal
    Feb 2010
    Messaggi
    494

    Creare filtri di ricerca

    Salve,
    ho una pagina di ricerca, e tramite degli input cerco un hotel o struttura.

    Nella pagina dell'hotel ho una query che mi preleva tutti i dati da più tabelle, dopo inserisco questi dati in un array tramite array_push cosi da poterli ordinare a piacimento dell'utente tramite array_multisort.

    Lateralmente vorrei inserire un div con dei link in base a quello che ho selezionato e cliccando sopra mi elimina dalla ricerca (dall'array) tutto cioè che non serve, esempio:

    Ho prelevato dal database in base alla ricerca 10 hotel:

    Struttura1 | 5 stelle | Hotel
    Struttura2 | Nessuna stella | Appartamento
    Struttura3 | 5 stelle | Hotel
    Struttura4 | 2 stelle | Hotel
    Struttura5 | 4 stelle | Hotel
    Struttura6 | 2 stelle | Hotel
    Struttura7 | Nessuna stella | B&B
    Struttura8 | Nessuna stella | Appartamento
    Struttura9 | 5 stelle | Hotel
    Struttura10 | Nessuna stella| B&B

    Nel div di destra vorrei una cosa del genere:

    Filtra per:

    Stelle____________
    5 stelle (3)
    4 stelle (1)
    2 stelle (2)
    Nessuna stella (4)

    Tipologia struttura____________
    Appartamento (2)
    Hotel (6)
    B&B (2)

    Quindi i filtri dovrei prelevarli dai risultati (non voglio visualizzare tutte le stelle se non ci sono strutture ad esempio con 3 stelle), ho provato con un ciclo for:

    Codice PHP:
    <?php
    for ($s 1$s <= $totaldehoteles$s++) {
                       
    $ss         $s 1;
                       
    $stars   $arrayhotelsearch[$ss]['hotel_stars'];
             echo 
    "<li><a href='#'>$stars<small>(numero di stutture)</small></a>/li>";
             }                                            
    ?>
    Però cosi facendo mi stampa ovviamente tutti i duplicati.

    Qualche idea?

  2. #2
    Utente di HTML.it L'avatar di MySQL
    Registrato dal
    May 2015
    Messaggi
    729
    sì, che PHP non c'entra nulla in questo caso.
    Ti serve una select con count e group by, con la quale poi alimenterai la div di destra.

    Detto fra di noi non è che sia superfico, perchè se cambi un parametro ragionevolmente devi ricaricare la pagina, ci vorrebbe nel caso un'interfaccina ajax

  3. #3
    Utente di HTML.it L'avatar di lukezz
    Registrato dal
    Feb 2010
    Messaggi
    494
    Io pensavo ad una select dinamica, se riesco prima a raggruppare ad esempio le stelle cosi:

    5 stelle (3)
    4 stelle (1)
    2 stelle (2)

    Cosi se clicco su 5 stelle ricarico la pagina e aggiungo alla query where stelle = 5 (con un bel GET)

    Il fatto è raggruppare le stelle in quel modo

  4. #4
    Utente di HTML.it L'avatar di MySQL
    Registrato dal
    May 2015
    Messaggi
    729
    codice:
    select quantestelle,count(*) as quanti from hotels  group by quantestelle order by quantestelle desc
    se sei pigrissimo e non ti interessa per il php avere il numero di stelle
    codice:
    concat(quantestelle,' (',count(*),')')

  5. #5
    Utente di HTML.it L'avatar di lukezz
    Registrato dal
    Feb 2010
    Messaggi
    494
    quantestelle sarebbe il campo che contiene le stelle?

  6. #6
    Utente di HTML.it L'avatar di MySQL
    Registrato dal
    May 2015
    Messaggi
    729
    bhè direi di sì, non so come si chiami

  7. #7
    Utente di HTML.it L'avatar di lukezz
    Registrato dal
    Feb 2010
    Messaggi
    494
    Se dovessi fare invece una fascia di prezzo? ad esempio ho dei prezzi e vorrei unirli per fascia da a, è possibile con mysql?

  8. #8
    Utente di HTML.it L'avatar di MySQL
    Registrato dal
    May 2015
    Messaggi
    729
    codice:
    SELECT fascia,COUNT(*) AS quanti FROM
    (
      SELECT CASE 
          WHEN imponibile>=0 AND imponibile<=100 THEN 'tra 0 e 100'
          WHEN imponibile>100 AND imponibile<=200 THEN 'tra 100 e 200'
       ELSE 'più di 200'
      END as fascia
     FROM documenti
    WHERE imponibile IS NOT NULL
    ) AS  boh
    GROUP BY fascia ORDER BY fascia DESC
    Ultima modifica di MySQL; 27-06-2015 a 10:29

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.