Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 13
  1. #1
    Utente di HTML.it
    Registrato dal
    Mar 2008
    Messaggi
    30

    [PHP/MYSQL]Stampa attributo multivalore

    Codice PHP:
    <?php 
    include("config.php");
    $db mysql_connect($db_host$db_user$db_password);
        if (
    $db == FALSE)
          die (
    "Errore nella connessione. Verificare i parametri nel file config.php");
    mysql_select_db($db_name$db)
        or die (
    "Errore nella selezione del database. Verificare i parametri nel file config.php");
        
    $id=$_GET['id'];
    $query "SELECT Titolo, Genere FROM scheda_film WHERE id_film ='$id'";
    $result mysql_query($query$db) or die (mysql_error());

    $row mysql_fetch_array($result);
    echo 
    "Titolo: ".$row[Titolo]."
    "
    ;
    echo 
    "Genere: ".$row[Genere]."
    "
    ;
    Genere è multivalore, quindi io vorrei stampare tutti i generi appartenenti a quel film uno di fianco all'altro separati da virgola.
    Come si fa?
    Devo far due query distinte o si può usare un qualche ciclo?
    Grazie

  2. #2
    Nella tabella genere come sono separati i generi in ogni record?

    <ALCIO />
    Per cortesia: no PVT Tecnici
    ******* LINKS *******
    SRL
    MetalWave

  3. #3
    Utente di HTML.it
    Registrato dal
    Mar 2008
    Messaggi
    30
    Genere(id_genere, genere)

  4. #4
    Scusami, ho scritto male io la mia domanda.
    Intendevo..... nella tabella scheda_film la colonna genere di un qualsiasi record, cosa contiene?

    <ALCIO />
    Per cortesia: no PVT Tecnici
    ******* LINKS *******
    SRL
    MetalWave

  5. #5
    Utente di HTML.it
    Registrato dal
    Mar 2008
    Messaggi
    30
    codice:
    DROP VIEW IF EXISTS `prova_cinema`.`scheda_film`;
    CREATE OR REPLACE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost`
    SQL SECURITY DEFINER VIEW `scheda_film` AS select `film`.`id_film` AS `id_film`,`film`.`titolo`
    AS `Titolo`,`genere`.`genere` AS `Genere` from ((`film` join `genere`) join `genere_del_film`)
    where ((`genere_del_film`.`id_genere` = `genere`.`id_genere`) and (`film`.`id_film` = `genere_del_film`.`id_film`));
    Questa è la vista che ho creato.
    In scheda_film.genere ci sta il nome del genere (drammatico, commedia ecc).

  6. #6
    no aspetta, calmo!

    Ti chiedevo non come creassi quella tabella, ma se mi facevi un esempio di cosa contiene quella colonna.
    Cosa c'è scritto dentro? Come sono formattati i dati? Scrivi solo un genere per ogni film oppure c'è una stringa con diverse parole all'interno? Se ci sono più parole, come sono separate?


    <ALCIO />
    Per cortesia: no PVT Tecnici
    ******* LINKS *******
    SRL
    MetalWave

  7. #7
    Utente di HTML.it
    Registrato dal
    Mar 2008
    Messaggi
    30
    Scusa
    Dentro a genere c'è una sola parola, è un varchar normalissimo.

  8. #8
    :-?
    Genere è multivalore, quindi io vorrei stampare tutti i generi appartenenti a quel film uno di fianco all'altro separati da virgola. Come si fa?
    Se genere contiene una sola parola, allora la query è errata.
    Suppongo, quindi che per ogni id_film corrispondano più record all'interno della tabella e quindi che la colonna titolo sia anche ridondante.

    Mi sembra di capire, e correggimi se sbaglio, che la tua tabella sia strutturata più o meno come segue:

    codice:
       titolo     |   genere    |   id_film  | 
    --------------+-------------+------------+
     titolo_film1 |  poliziesco |     4      |
    --------------+-------------+------------+
     titolo_film1 |    giallo   |     4      |
    --------------+-------------+------------+
     titolo_film1 |  thriller   |     4      |
    --------------+-------------+------------+
    Sbaglio??
    Prima di buttare giu codice dimmi se sono sulla giusta strada.

    <ALCIO />
    Per cortesia: no PVT Tecnici
    ******* LINKS *******
    SRL
    MetalWave

  9. #9
    Utente di HTML.it
    Registrato dal
    Mar 2008
    Messaggi
    30
    Io ho una tabella:
    film (id_film, titolo ecc)
    genere(id_genere, genere)
    genere_film(id_film,id_genere)

    La vista che ho postato invece mi da risultato come quello del tuo esempio.

  10. #10
    Al posto di una vista, secondo me, hai bisogno di una JOIN.
    Ma secondo me hai messo c'è comunque una tabella di troppo.

    Io toglierei la tabella genere_film e strutturerei genere come segue:

    codice:
    genere(id_genere, genere, id_film)
    Fai così:

    Codice PHP:
    $sql "
    SELECT f.titolo AS titolo,  g.genere AS genere
    FROM film f, genere g
    WHERE f.id_film = g.id_film
    "

    In questo modo, torni due colonne titolo e genere.
    La prima contiene il titolo del film che ha per identificativo ID_FILM.
    La seconda tutti i genere segnati per il film che ha lo stesso ID_FILM.

    Spero di essere stato chiaro.
    <ALCIO />
    Per cortesia: no PVT Tecnici
    ******* LINKS *******
    SRL
    MetalWave

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