Buongiorno a tutti. Spiego brevemente il mio problema.
Ho un DB contenente 230 applicativi. Devo creare una pagina internet che mi consenta di interrogare il DB dando la possibilità di selezionare i criteri di ricerca.
In questa fase sto cercando di visualizzare nel modo corretto la SELECT relativa agli applicativi di determinate categorie.
L'utente seleziona 3 categorie e io devo mostrare una tabella contenente tutti gli applicativi di quelle categorie.
Per prima cosa ho aperto il tag tabella:
codice:
<table id='tabellarisultati' class='sortable'>\n<tr>";
poi ho settato l'array $Categorie con i dati selezionati dall'utente tramite POST:
codice:
$Categorie = isset($_POST['Categorie']) ? $_POST['Categorie'] : array();
e poi ho avviato il mio ciclo foreach che spulcia l'array dalla prima categoria fino all'ultima:
codice:
foreach($Categorie as $categoria){
La query che ho strutturato per estrapolare i dati è funzionante e già verificata, ma estrapola i dati una categoria alla volta (ovviamente
):
codice:
$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 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";
eseguo la query e setto il numero di campi:
codice:
$result= mysql_query($query);$numfields = mysql_num_fields($result);
Con un ciclo do il nome ad ogni colonna:
codice:
for ($i=0; $i < $numfields; $i++) {
echo '<th>'.mysql_field_name($result, $i).'</th>';
}
e chiudo la prima riga:
poi estrapolo tutti i dati dal mio risultato e li inserisco in ogni riga:
codice:
while ($row = mysql_fetch_row($result)) {
echo '<tr><td>'.implode($row,'</td><td>')."</td></tr>\n";
}
chiudo foreach e tabella:
codice:
}
echo "</table></div>\n";
Bene, alla luce di tutto questo lavoro la tabella che mi viene generata è una tabella che mantiene separati i valori per Categoria e pur essendo in una singola tabella sembrano essere separati concettualmente. (Quindi output non in linea con le aspettative)
Io vorrei creare un ciclo che mi vada ad aggiornare ogni volta la query e poi vada, con il comando "UNION", ad accostarla a quella successiva. Una volta finito il ciclo vorrei che venisse eseguita la QUERY con tutti gli UNION.
Ho già visto che le query con UNION darebbero il risultato sperato.
Grazie in anticipo.
Grazie.