Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 16
  1. #1

    correlazione con più dati in un campo

    Salve mi aiutate a risolvere un problema che mi fa impazzire
    ho una tabella eventi con un campo dove inserisco l'elenco degli artisti che vi partecipano in questo modo
    artisti: nome_cognome,nome_cognome,nome_cognome...
    poi ho una tabella artisti per i dati di ciascun artista
    ora vorrei stambare l'evento con gli artisti correlati e lincare alla loro scheda curriculum, esiste una funzione per sisolvere questo prolema, quando faccio la query me li stampa tutti insieme come se fosse un informazione unica e non riesco a dividerli l'uno dall'altro

    $query = "SELECT * FROM eventi WHERE evento_id='".$_GET['id']."'";

    //$result = mysql_query($query, $db);
    $select = @mysql_query($query) or die("Query fallita !");

    //"if($result["catNome"]) "
    while($result = @mysql_fetch_array($select)) {

    echo ".....
    Artisti: ". $result["artisti"]."
    ....

  2. #2
    Utente di HTML.it L'avatar di Kdes
    Registrato dal
    Oct 2006
    Messaggi
    171
    credo che dovrai metterli in una variabile e visualizzarli.
    avevo fato anch'io, tanto tempo fa una cosa del genere con gli attori della mia videoteca e li salvavo in una variabile distinta per ognuno e poi la lavoravo, in questo caso tuo credo che si debba fare la stessa cosa.

    Non chiedetemi quanti anni ho!!!!

  3. #3
    Utente di HTML.it L'avatar di clasku
    Registrato dal
    Aug 2006
    Messaggi
    3,197
    se questi
    "artisti: nome_cognome,nome_cognome,nome_cognome..."

    sono sempre separati da virgole puoi considerare la possibilità di usare la funzione explode() per separarli ed ottenere i singoli artisti

  4. #4
    ho provato così ma mi stampa Array

    $query = "SELECT *, artisti='$artisti' FROM eventi WHERE evento_id='".$_GET['id']."'";

    //$result = mysql_query($query, $db);
    $select = @mysql_query($query) or die("Query fallita !");
    //inserisco la funzione per separare la stringa del campo artisti
    $explode = explode(",",$artisti);

    //"if($result["catNome"]) "
    while($result = @mysql_fetch_array($select)) {

    echo ".....
    Artisti: $explode
    <a href=\"../artisti.php?id=". $result["artisti_id"]. "\"> $explode</a>
    ....

  5. #5
    Utente di HTML.it L'avatar di clasku
    Registrato dal
    Aug 2006
    Messaggi
    3,197
    beh se la usi così la funzione explode non va mica...
    explode restituisce un array, che devi poi ciclare per poterlo utilizzare

    se devo essere sincero, nel codice che hai scritto ho visto un po' di cose strane...

    tipo questa
    $query = "SELECT *, artisti='$artisti' FROM eventi WHERE evento_id='".$_GET['id']."'";
    quel artisti='$artisti' cosa significa?

  6. #6
    volevo associare il campo artisti della tabella eventi alla variabile $artisti, ma non funziona

  7. #7
    Utente di HTML.it L'avatar di Luke70
    Registrato dal
    Jul 1999
    Messaggi
    767
    Per come hai strutturato il tuo DB, l'elenco degli artisti ti esce come una stringa unica: devi esploderla utilizzando explode e la virgola come separatore.
    In questo modo però ottiene solo nome e cognome, nessun altra info che ti potrebbe invece essere utile (l'id o l'url della loro scheda ad esempio).

    Solitamente una relazione molti a molti come quella che hai tu (molti eventi legati a molti artisti) viene gestita con 3 tabelle:
    - elenco eventi
    - elenco artisti
    - tabella di correlazione (contiene IdEvento e IdArtista)

    Ad esempio, se nell'evento con id=5 hanno partecipato gli artisiti con id 5, 3,13,45 , nella tabella di correlazione avrai:
    IdEvento IdArtista
    5 5
    5 3
    5 13
    5 45

    Grazie a questa tabella potrai creare delle query che dato un certo evento ti restituisce gli artisti presenti e viceversa

  8. #8
    ho creato la terza tabella
    con 2 campi quello eventi_id che corrisponde all'eventi_id della tabella eventi
    e artisti_id che corrisponde a artisti_id della tabella artisti
    come suggerito poi ho creato tramite join la relazione tra la tabella eventi e quella di correlazione ma mi dice query fallita perchè?

    $query = "SELECT * FROM eventi as o LEFT JOIN eventi_artisti as c ON o.eventi_id = c.eventi_id WHERE eventi_id='$_GET[id]'";


    $select = @mysql_query($query) or die("Query fallita !");
    $array = explode(',',$artisti);
    while($result = @mysql_fetch_array($select))

    {
    ...
    <a href=\"www.miosito.it/artisti.php?id=" . $result["artista_id"] . "\">"$array[]"</a>
    .....
    ";
    }

  9. #9
    Utente di HTML.it L'avatar di Luke70
    Registrato dal
    Jul 1999
    Messaggi
    767
    Prova così

    Codice PHP:
    $query "SELECT * FROM eventi as o LEFT JOIN eventi_artisti as c ON eventi.eventi_id = eventi_artisti.eventi_id WHERE eventi.eventi_id='$_GET[id]'"

  10. #10
    si grazie ora la query funziona ma mi stampa tutta la stringa come un unico dato
    e linka a uno solo,
    perchè non funziona io vorrei un risultato così
    <a href=\"www.miosito.it/artisti.php?id=" . $result["artista_id"] . "\">artista1</a>,
    <a href=\"www.miosito.it/artisti.php?id=" . $result["artista_id"] . "\">artista2</a>,
    <a href=\"www.miosito.it/artisti.php?id=" . $result["artista_id"] . "\">artista3</a>,
    ...
    come faccio ad ottenerlo?
    $array = explode(',',$artisti);
    while($result = @mysql_fetch_array($select))

    {
    ...
    <a href=\"www.miosito.it/artisti.php?id=" . $result["artista_id"] . "\">"$array[]"</a>
    .....
    ";
    }

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.