Visualizzazione dei risultati da 1 a 9 su 9
  1. #1
    Utente di HTML.it
    Registrato dal
    Jun 2017
    residenza
    Trentino Alto-Adige
    Messaggi
    10

    [MySQL] Query che fornisca risultati di ricerca multipla

    Ciao a tutti. Spiego brevemente scenario e problema.
    Ho un database che contiene 230 applicativi. Contenuti in TbApplicativi. Le caratteristiche di ogni applicativo come: device, sistema operativo, categoria di appartenenza, costo (pagamento/gratuito) sono gestite tramite relazione molti a molti.
    Io sto creando un sito che ha come scopo quello di fornire una piattaforma per interrogare il DB con richieste combinate. Attraverso un form io chiedo all'utente le caratteristiche che preferisce e mostro gli applicativi che le soddisfano.

    Il codice che ho scritto fino ad ora mi va a creare una tabella per ogni caratteristica selezionata nei form.

    Riporto il codice PHP con cui vado a interrogare il DB e a formare la tabella di visualizzazione dei risultati in HTML.
    Nell'esempio vado a chiedere al db ti farmi avere i dati degli applicativi per le scelte effettuate dall'utente riguardo: Categoria(11 categorie presenti), Devices (5 devices presenti) e Sistemaoperativo (5 sistemi operativi).

    codice:
    $Categorie = isset($_POST['Categorie']) ? $_POST['Categorie'] : array();                
    $Devices = isset ($_POST['Devices']) ? $_POST['Devices'] : array();                
    $SOi = isset ($_POST['SOi']) ? $_POST['SOi'] : array();                
    foreach($Categorie as $categoria){                    
    foreach ($Devices as $device){                        
    foreach ($SOi as $SO){                           
    echo "<h2 style= 'color: SteelBlue; margin-top: 40px'>Risultato per ". $nomecategoria. " " . $device . " " . $SO . "</h2>";
    $query="SELECT tbapplicativi.NomeApplicativo as NomeApplicativo, tbproduttori.NomeProduttore as NomeProduttore,tbapplicativi.Descrizione as Descrizione, tbapplicativi.LinkAlSito as Link,  GROUP_CONCAT(DISTINCT tbsistemioperativi.SistemaOperativo SEPARATOR ', ') AS SistemaOperativo, GROUP_CONCAT(DISTINCT tbdevices.NomeDevice SEPARATOR ', ') AS NomeDevices
    		FROM tbapplicativi, tbcategorie, tbsistemioperativi, tbconnappso, tbdevices, tbconnappdevices, tbproduttori
    		WHERE tbapplicativi.FkCategoria = $categoria AND tbconnappso.FkSO = $SO AND tbconnappdevices.FkDevices = $device AND tbapplicativi.PkApplicativo = tbconnappso.FkApp AND tbsistemioperativi.PkSo = tbconnappso.FkSO AND
    		tbapplicativi.PkApplicativo = tbconnappdevices.FkApp AND tbdevices.PkDevice = tbconnappdevices.FkDevices AND tbapplicativi.FkProduttore = tbproduttori.PkProduttore
    		GROUP BY tbapplicativi.PkApplicativo AND tbcategorie.PkCategoria";
    $result= mysql_query($query);
    $numfields = mysql_num_fields($result);
    echo "<div style='width:100%;max-height:720px;overflow-y: scroll; margin-bottom: 68px;'>
    <table id='tabellarisultati' class='sortable'>\n<tr>";
    for ($i=0; $i < $numfields; $i++) {
    echo '<th>'.mysql_field_name($result, $i).'</th>';
    } echo "</tr>\n";
    while ($row = mysql_fetch_row($result)) {
    echo '<tr><td>'.implode($row,'</td><td>')."</td></tr>\n";
    }
    echo "</table></div>\n";
    }
    }
    }

    Ciò che voglio è avere una tabella che contenga tutti i risultati.

    Grazie per l'aiuto.

  2. #2

  3. #3
    Utente di HTML.it
    Registrato dal
    Jun 2017
    residenza
    Trentino Alto-Adige
    Messaggi
    10
    Quote Originariamente inviata da optime Visualizza il messaggio
    la query è corretta?
    La query da come risultato una tabella in cui viene visualizzato ogni applicativo che risponde ai criteri selezionati.

  4. #4
    il problema è una via di mezzo tra db e php. lato db puoi sistemare con qualcosa del tipo

    ... AND (tbconnappso.FkSO = $SO OR $SO IS NULL) ...
    lato php devi fare arrivare un NULL per indicare "tutto"

  5. #5
    Utente di HTML.it
    Registrato dal
    Jun 2017
    residenza
    Trentino Alto-Adige
    Messaggi
    10
    Anzi scusa.
    Ogni criterio selezionato va a generare una tabella in cui vengono mostrati i risultati che lo soddisfano.
    Se io seleziono:
    web, pc, smarphone per quanto riguarda i devices
    windows, ios, android per quanto riguarda i Sistemi operativi

    il sistema mi genera una tabella. Quindi 6 tabelle in cui mi mostra gli applicativi che soddisfano i criteri.

  6. #6
    mi sto perdendo: tu cosa vorresti invece?

  7. #7
    Utente di HTML.it
    Registrato dal
    Jun 2017
    residenza
    Trentino Alto-Adige
    Messaggi
    10
    Il mio è un problema di output. Vorrei che i dati venissero visualizzati tutti su un unica tabella e non su n tabelle quanti sono i criteri di ricerca.

  8. #8
    Se non è un problema di database fatti spostare nel forum php, chiedi a un moderatore

  9. #9
    Utente di HTML.it
    Registrato dal
    Jun 2017
    residenza
    Trentino Alto-Adige
    Messaggi
    10
    Quote Originariamente inviata da optime Visualizza il messaggio
    Se non è un problema di database fatti spostare nel forum php, chiedi a un moderatore
    Come si fa?

Tag per questa discussione

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 © 2024 vBulletin Solutions, Inc. All rights reserved.