• User Attivo

    Funzione per gestire le liste mysql (esiste?)

    Scusate il titolo ma non sapevo come spiegare la richiesta? Più che altro è un consiglio che chiedo su come gestire il sito che devo fare.

    In pratica devo catalogare degli album di cantanti e strutturare un database mysql in modo da contenere nome artista - nome album - foto copertina - e titoli dei brani.

    E' proprio per l'ultimo elemento che non so come sia meglio organizzare. Esistono funzioni mysql specifiche per gestire liste di più elementi in modo che al click di un inserzione mi si apre una scheda dettagliata con tutti i titoli dei brani?


  • User Attivo

    Per questo tipo di gestione ti consiglio di usare tre tabelle.
    La prima riferita all'artista composta da due campi id, nome
    La seconda riferita all'album composta da id, id_artista, nomealbum, foto
    La terza riferita ai titoli delle canzoni dell'album (come penso abbia capito) composta da id, id_artista, id_album, titolo_brano

    Quest'ultima è strutturata in modo che, ai titoli delle canzoni, arrivino i valori dell'artista, dell'album per tutti i titoli associati.
    Così facendo ti ritroverai a fare una query che selezionerà il cantante e l'album ad esso associato in modo da estrapolare i titoli delle canzoni.

    Spero sia stato d'aiuto.

    Fammi sapere ti saluto.


  • User Attivo

    Grazie per la risposta. Come temevo, da quello che leggo, devo usare quelle famose e sconosciute (per me) JOIN tra tabelle che non ho mai capito come funzionano.


  • User Attivo

    In questo caso potresti farne anche a meno delle JOIN.
    Provaci, dai fai uno sforzo, perchè potresti spronare il tuo modo di programmare.


  • User Attivo

    Ciao, scusa il ritardo ma non ho potuto rispondere prima. Per adesso ho risolto in questo modo, o almeno credo di aver risolto.

    [php]
    <?php
    $query = "SELECT artista.nome_artista AS nome, album.nome_album AS album, album.prezzo AS prezzo, album.foto_big AS foto FROM album LEFT JOIN artista ON album.id_artista = artista.id WHERE album.id = '".$_GET['id']."'";
    $result = mysql_query($query);
    while ($row = mysql_fetch_array($result)){
    echo $row['foto'];
    $query = "SELECT album.id AS id, canzoni.id_album AS id_album, canzoni.titolo_brano AS brani FROM canzoni LEFT JOIN album ON canzoni.id_album = album.id WHERE album.id = '".$_GET['id']."'";
    $result = mysql_query($query);
    while($brani = mysql_fetch_array($result)){
    echo "<li>".$brani['brani']."</li>";
    }
    echo $row['nome'];echo $row['album'];echo $row['prezzo'];
    }
    ?>

    [/php]
    Sicuramente non è il modo ottimale per risolvere, se avete suggerimenti sono tutt'occhi.
    a presto.