Visualizzazione dei risultati da 1 a 10 su 10
  1. #1

    Elenco con raggruppamento

    Salve,
    ho un piccolo problema, ma non essendo molto pratico con php, non so risolverlo.
    Ho una tabella 'argomenti', con i seguenti campi: id, sezione, argomento, file.
    Nella tabella possiamo avere più record con il campo 'sezione' uguale.
    Come faccio ad avere un elenco dei record, e a fare in modo che se ci sono dieci record con lo stesso nome di sezione, quest'ultimo venga visualizzato una sola volta, in corrispondenza della prima occorrenza con quella sezione. Insomma vorrei avere un raggruppamento nella colonna delle sezioni.

    Qualcuno può darmi una mano?

    grazie
    Luciano

  2. #2
    select distinct sezione, argomento, file from tabella where .....
    Un uomo è vecchio solo quando i rimpianti, in lui, superano i sogni. A. Einstein

  3. #3
    Con la parola chiave DISTINCT, funziona se nella query seleziono solo il campo sezione.
    Ma se come mi serve, seleziono tutto il record, allora non va più bene.
    Poi se ho dieci record con lo stesso nome di sezione, io devo comunque visualizzarli tutti e dieci, solo che nella colonna sezione, vorrei visualizzare il nome della sezione solo nella prima riga. e così via.

    Esempio:

    sezione1 argomento1 file1
    argomento2 file2
    argomento3 file3

    sezione2 argomento4 file4
    argomento5 file5

    sezione3 argomento6 file6

    sezione4 argomento7 file7
    argomento8 file8
    argomento5 file9
    Luciano

  4. #4
    Utente di HTML.it L'avatar di nicola75ss
    Registrato dal
    Nov 2004
    Messaggi
    12,923
    Tramite php puoi ottenere una visualizzazione del genere. Direttamente in mysql non è possibile.

  5. #5
    E' questo il punto. In php ho poca dimestichezza, avendo sempre programmato in Coldfusion.

    Avendo questo codice:

    Questa è la query:
    mysql_select_db($database_matematika, $matematika);
    $query_rsArgomenti = "SELECT id_arg, sezione, argomento FROM argomenti ORDER BY sezione ASC";
    $rsArgomenti = mysql_query($query_limit_rsArgomenti, $matematika) or die(mysql_error());
    $row_rsArgomenti = mysql_fetch_assoc($rsArgomenti);

    Questa è la tabella:
    <table>
    <tr>
    <td>sezione</td>
    <td>Id_arg</td>
    <td>Argomento</td>
    </tr>

    <?php do { ?>
    <tr>
    <td><?php echo $row_rsArgomenti['sezione']; ?></td>
    <td><?php echo $row_rsArgomenti['id_arg']; ?></td>
    <td><?php echo $row_rsArgomenti['argomento']; ?></td>
    </tr>
    <?php } while ($row_rsArgomenti = mysql_fetch_assoc($rsArgomenti)); ?>
    </table>

    Come faccio a risolvere il mio problema?
    Luciano

  6. #6
    Utente di HTML.it L'avatar di nicola75ss
    Registrato dal
    Nov 2004
    Messaggi
    12,923
    In sintesi dovresti fare una query in cui ordini i risultati per sezione.
    Inizializzi la variabile $sezione a un contenuto fittizio.
    Mentre cicli la query fai un if. Se la sezione è diversa dalla precedente visualizzi le vari voci comprese la sezione e assegni di volta in volta a $sezione l'ultimo valore estratto per il successivo confronto, altrimenti visualizzi le altre voci escludendola. Spero di aver reso l'idea.

  7. #7
    Il concetto è chiarissimo. Potresti mostrarmi come lo posso tradurre in codice, nell'esempio che ho inviato? Scusami se insisto, ma mi trovo nella spiacevole situazione di dover risolvere in tempi stretti un problema che mi ha trovato impreparato. Ho incominciato a dare uno squardo a manuali e guide di php, ma mi ci vorrà un po di tempo.
    Nel frattempo mi devo arrangiare.

    Grazie cmq
    Luciano

  8. #8
    Utente di HTML.it L'avatar di nicola75ss
    Registrato dal
    Nov 2004
    Messaggi
    12,923
    grosso modo una cosa del genere. verifica che non ci siano errori. è giusto per darti un'idea.
    Codice PHP:
    $query mysql_query("SELECT id_arg, sezione, argomento FROM argomenti ORDER BY sezione");
    echo 
    "<table>";
    $sezione 'fittizia';
    while (
    $row mysql_fetch_assoc($query) ) 
    {
        if (
    $row['sezione'] != $sezione 
        {
        echo 
    "<tr><td colspan=\"2\">[b]$row[sezione][/b]</td></tr>";
        echo 
    "<tr><td>$row[id_arg]</td>";
        echo 
    "<td>$row[argomento]</td></tr>";
        
    $sezione $row['sezione'];
        }
        else 
        {        
        echo 
    "<tr><td>$row[id_arg]</td>";
        echo 
    "<td>$row[argomento]</td></tr>";
        }
    }
    echo 
    "</table>"

  9. #9
    Grazie 1000
    Luciano

  10. #10
    Utente di HTML.it L'avatar di nicola75ss
    Registrato dal
    Nov 2004
    Messaggi
    12,923
    prego.

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.