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.