Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 15
  1. #1
    Utente di HTML.it
    Registrato dal
    Apr 2007
    Messaggi
    234

    Interazione tra tabelle

    Ciao a tutti, ripropongo un mio vecchio problema che purtroppo mi si ripresenta e non riesco a risolvere..
    ho due tabelle: "prodotti" e "artisti"
    Pesco tutto quello che mi serve da prodotti compreso il nome artista ma che nella tabella "prodotti" è identificato con un numero...

    Il nome dell'artista corretto viene associato a questi numeri nella tabella "artisti" dedicata esclusivamente ad associare i vari numeri..es: nel campo "idar" ho 95846..affianco nel campo "nomear" ho Peppino di Capri...e così via!

    Con la query che ho qua sotto cerco di fare stampare nel mio campo di testo i nomi degli artisti ma con scarso risultato perchè mi si visualizzano solo i numeri...


    Codice PHP:
    <?php

    $tot 
    15;    # il numero di prodotti da visualizzare
    $i 0;        # variabile che servirà da indice (che incrementeremo)
    $query "SELECT A.artp,A.artp2,A.artp3,A.artp4,A.artp5,A.idpr,A.eticp,A.titp,A.recee,DATE_FORMAT(A.datap, '%d-%m-%Y')AS data_it,A.imgcop,A.supp,A.przp,A.idcat,A.sottp,A.divarp1,A.divarp2,A.divarp3,A.divarp4,B.idar,B.nomear,A.shoppr,A.onl
                FROM prodotti AS A INNER JOIN artisti = B
                ON A.artp = B.idar
                WHERE  A.onl <> 'n' && A.onl <> 'p' && A.shoppr = 'n'
                ORDER by A.datap desc
                LIMIT 0,
    $tot";
    $result mysql_query($query) or die(mysql_error());
    $output 'tot='.mysql_num_rows($result);
    while(
    $prodotti mysql_fetch_array($result))
    {
        
    $output .='&data'.$i.'='.$prodotti['data_it'];
        
    $output .='&supporto'.$i.'='.$prodotti['supp'];
        
    $output .='&idcat'.$i.'='.$prodotti['idcat'];
        
    $output .='&artista'.$i.'='.$prodotti['artp']. " ".urlencode($prodotti['divarp1']). " ".$prodotti['artp2']. " ".urlencode($prodotti['divarp2']). " ".$prodotti['artp3']. " ".urlencode($prodotti['divarp3']). " ".$prodotti['artp4']. " ".urlencode($prodotti['divarp4']). " ".$prodotti['artp5'];
        
    $output .='&prezzo'.$i.'='.$prodotti['przp'];
        
    $output .='&link'.$i.'='.$prodotti['idpr'];
        
    $output .='&titolo'.$i.'='.urlencode($prodotti['titp']);
        
    $output .='&sottotitolo'.$i.'='.$prodotti['sottp'];
        
    $output .='&receeng'.$i.'='.urlencode(substr($prodotti['recee'],0,10000));
        
    $output .='&img'.$i.'='.$prodotti['imgcop'];
        
    $i++;
    }
    echo 
    $output;

    ?>
    come fare?
    Spero possiate aiutarmi!
    Ciao
    Claudio

  2. #2
    Utente di HTML.it
    Registrato dal
    Apr 2007
    Messaggi
    234
    mi permetto di fare un up, sperando che qualcuno mi dia una dritta per risolvere il problema..
    Ciao
    Claudio

  3. #3
    scusa, forse non ho capito, ma nel codice vedo che non usi mai la colonna nomear

    mi aspetto un $prodotti['nomear']

    da qualche parte

  4. #4
    Io invece ho notato questo

    FROM prodotti AS A INNER JOIN artisti = B

    non dovrebbe essere artisti AS B??

  5. #5
    Utente di HTML.it
    Registrato dal
    Apr 2007
    Messaggi
    234
    si in effetti se faccio così mi stampa il nome dell'artista1 (artp)
    ma gli altri rimangono i numeri al posto dei nomi..

    Come faccio ad assegnargli anche artp2, artp3 ecc...?


    Codice PHP:
    <?php
    include '../../../../mysqlconn.php';

    $tot 15;    # il numero di prodotti da visualizzare
    $i 0;        # variabile che servirà da indice (che incrementeremo)
    $query "SELECT A.artp,A.artp2,A.artp3,A.artp4,A.artp5,A.idpr,A.eticp,A.titp,A.recee,DATE_FORMAT(A.datap, '%d-%m-%Y')AS data_it,A.imgcop,A.supp,A.przp,A.idcat,A.sottp,A.divarp1,A.divarp2,A.divarp3,A.divarp4,B.idar,B.nomear,A.shoppr,A.onl
                FROM prodotti AS A INNER JOIN artisti = B
                ON A.artp = B.idar
                WHERE  A.onl <> 'n' && A.onl <> 'p' && A.shoppr = 'n'
                ORDER by A.datap desc
                LIMIT 0,
    $tot";
    $result mysql_query($query) or die(mysql_error());
    $output 'tot='.mysql_num_rows($result);
    while(
    $prodotti mysql_fetch_array($result))
    {
        
    $output .='&data'.$i.'='.$prodotti['data_it'];
        
    $output .='&supporto'.$i.'='.$prodotti['supp'];
        
    $output .='&idcat'.$i.'='.$prodotti['idcat'];
        
    $output .='&artista'.$i.'='.$prodotti['nomear']. " ".urlencode($prodotti['divarp1']). " ".$prodotti['artp2']. " ".urlencode($prodotti['divarp2']). " ".$prodotti['artp3']. " ".urlencode($prodotti['divarp3']). " ".$prodotti['artp4']. " ".urlencode($prodotti['divarp4']). " ".$prodotti['artp5'];
        
    $output .='&prezzo'.$i.'='.$prodotti['przp'];
        
    $output .='&link'.$i.'='.$prodotti['idpr'];
        
    $output .='&titolo'.$i.'='.urlencode($prodotti['titp']);
        
    $output .='&sottotitolo'.$i.'='.$prodotti['sottp'];
        
    $output .='&receeng'.$i.'='.urlencode(substr($prodotti['recee'],0,10000));
        
    $output .='&img'.$i.'='.$prodotti['imgcop'];
        
    $i++;
    }
    echo 
    $output;

    ?>

  6. #6
    ma quindi hai 5 colonne che contengono un idart nella prima tabella?

    cioe' un prodotto puo' avere fino a 5 artisti?

    Se hai fatto cosi' (se ho capito bene) non e' una buona scelta. Le relazioni N a N si fanno con una tabella aggiuntiva, di norma.

    Altrimenti devi fare 5 inner join

    FROM prodotti AS A
    INNER JOIN artisti = B
    ON A.artp = B.idar
    INNER JOIN artisti = C
    ON A.artp1 = C.idar

    etc..

  7. #7
    Utente di HTML.it
    Registrato dal
    Apr 2007
    Messaggi
    234
    si ogni prodotto può avere fino a 5 artisti..ora con la query che ho postato poco sopra visualizzo questo:

    peppino di capri & 1268227 0 0 0
    nel caso di due artisti..


    con uno solo:
    peppino di capri & 0 0 0 0

    come posso fare?

  8. #8
    credo sia possibile fare 5 inner join come dicevo sopra

    FROM prodotti AS A
    INNER JOIN artisti = B
    ON A.artp = B.idar
    INNER JOIN artisti = C
    ON A.artp1 = C.idar

    etc... etc... etc...

    ma dovrai rinominare le colonne

    tipo

    SELECT B.nomear AS nomear1, C.nomar AS nomear2 etc.. etc.. etc..

    e poi li richiami con

    $prodotti['nomear1']

    ovvero

    $prodotti['nomear2']

    erc...

    ripeto che non mi pare una soluzione elegante (e se un giorno arriva il sesto artista?)

  9. #9
    Utente di HTML.it
    Registrato dal
    Apr 2007
    Messaggi
    234
    Ho provato così come dici te ma non mi carica nulla..c'è qualcosa di sbagliato?
    Codice PHP:
    <?php

    $tot 
    15;    # il numero di prodotti da visualizzare
    $i 0;        # variabile che servirà da indice (che incrementeremo)
    $query "SELECT A.artp,A.artp2,A.artp3,A.artp4,A.artp5,A.idpr,A.eticp,A.titp,A.recee,DATE_FORMAT(A.datap, '%d-%m-%Y')AS data_it,A.imgcop,A.supp,A.przp,A.idcat,A.sottp,A.divarp1,A.divarp2,A.divarp3,A.divarp4,B.idar,B.nomear AS nomear,C.nomar AS nomear2,D.nomar AS nomear3,E.nomar AS nomear4,F.nomar AS nomear5,A.shoppr,A.onl,C.idar,D.idar,E.idar,F.idar
                FROM prodotti AS A INNER JOIN artisti = B
                ON A.artp = B.idar
                INNER JOIN artisti = C
                ON A.artp2 = C.idar
                INNER JOIN artisti = D
                ON A.artp3 = D.idar
                INNER JOIN artisti = E
                ON A.artp4 = E.idar
                INNER JOIN artisti = F
                ON A.artp5 = F.idar 
                WHERE  A.onl <> 'n' && A.onl <> 'p' && A.shoppr = 'n'
                ORDER by A.datap desc
                LIMIT 0,
    $tot";
    $result mysql_query($query) or die(mysql_error());
    $output 'tot='.mysql_num_rows($result);
    while(
    $prodotti mysql_fetch_array($result))
    {
        
    $output .='&data'.$i.'='.$prodotti['data_it'];
        
    $output .='&supporto'.$i.'='.$prodotti['supp'];
        
    $output .='&idcat'.$i.'='.$prodotti['idcat'];
        
    $output .='&artista'.$i.'='.$prodotti['nomear']. " ".urlencode($prodotti['divarp1']). " ".$prodotti['nomear2']. " ".urlencode($prodotti['divarp2']). " ".$prodotti['nomear3']. " ".urlencode($prodotti['divarp3']). " ".$prodotti['nomear4']. " ".urlencode($prodotti['divarp4']). " ".$prodotti['nomear5'];
        
    $output .='&prezzo'.$i.'='.$prodotti['przp'];
        
    $output .='&link'.$i.'='.$prodotti['idpr'];
        
    $output .='&titolo'.$i.'='.urlencode($prodotti['titp']);
        
    $output .='&sottotitolo'.$i.'='.$prodotti['sottp'];
        
    $output .='&receeng'.$i.'='.urlencode(substr($prodotti['recee'],0,10000));
        
    $output .='&img'.$i.'='.$prodotti['imgcop'];
        
    $i++;
    }
    echo 
    $output;

    ?>

  10. #10
    Utente di HTML.it
    Registrato dal
    Apr 2007
    Messaggi
    234
    mi da questo:
    Unknown column 'C.nomar' in 'field list'

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.