Pagina 1 di 3 1 2 3 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 24
  1. #1
    Utente di HTML.it
    Registrato dal
    Dec 2002
    Messaggi
    1,786

    associare prodotto a più categorie

    Ciao,

    ho una tabella mysql così strutturata:

    categorie
    id
    categoria

    prodotto
    id
    id.cat (indice)
    prodotto

    ______________________

    ad ogni prodotto associavo una categoria es.

    chiave inglese > categoria:
    ferramenta

    ora ho l'esigenza di associarla a più categorie:

    chiave inglese > categoria:
    ferramenta
    officina
    fai da te
    ecc...

    non vorrei inserire più volte lo stesso prodotto,
    ho un catalogo con oltre 10000 record, quindi per essere veloce nella ricerca come posso fare ?

    grazie !
    [Scambio Links a Tema] Contattatemi in Privato x + Info.

  2. #2
    nella tabella prodotti inserisci un campo "id_categoria", crei un altra tabella che puoi chiamare "categorie" e inserisci ad esempio "1 ferramenta" "2 officina" ecc.. e poi ti fai delle join

  3. #3
    Nella tabella categorie crei un campo foreign key "id_prodotto" tramite il quale sarai in grado di associare più categorie ad uno stesso prodotto.
    "Mai discutere con un idiota. Ti trascina al suo livello e ti batte con l'esperienza." (Oscar Wilde)

  4. #4
    Utente di HTML.it
    Registrato dal
    Dec 2002
    Messaggi
    1,786
    Originariamente inviato da satifal
    Nella tabella categorie crei un campo foreign key "id_prodotto" tramite il quale sarai in grado di associare più categorie ad uno stesso prodotto.
    mi dai più info a riguardo

    io pensavo a fare una campo di testo ed inserire gli ID del formato:

    1-6-8-15-18

    e poi cercare di fare un explode del carattere "-" all'interno di una query mysql
    [Scambio Links a Tema] Contattatemi in Privato x + Info.

  5. #5
    Utente di HTML.it
    Registrato dal
    Dec 2002
    Messaggi
    1,786
    codice:
    CREATE TABLE categorie (
       id int(11) NOT NULL auto_increment,
       categoria varchar(128) default NULL,
       PRIMARY KEY  (id) 
    ) ENGINE=InnoDB;
    
    CREATE TABLE prodotto (
       id int(11) NOT NULL default '0',
       id_cat int(11) default NULL,
       prodotto varchar(200) default NULL,
       PRIMARY KEY  (id),
       FOREIGN KEY (id_cat) REFERENCES categorie (id)
    ) ENGINE=InnoDB;
    così creo la tabella, ma quando inserisco il record come faccio la query ?

    grazie !
    [Scambio Links a Tema] Contattatemi in Privato x + Info.

  6. #6
    Originariamente inviato da unreg
    mi dai più info a riguardo

    io pensavo a fare una campo di testo ed inserire gli ID del formato:

    1-6-8-15-18

    e poi cercare di fare un explode del carattere "-" all'interno di una query mysql
    ti prego dai!

    Originariamente inviato da unreg
    codice:
    CREATE TABLE categorie (
       id int(11) NOT NULL auto_increment,
       categoria varchar(128) default NULL,
       PRIMARY KEY  (id) 
    ) ENGINE=InnoDB;
    
    CREATE TABLE prodotto (
       id int(11) NOT NULL default '0',
       id_cat int(11) default NULL,
       prodotto varchar(200) default NULL,
       PRIMARY KEY  (id),
       FOREIGN KEY (id_cat) REFERENCES categorie (id)
    ) ENGINE=InnoDB;
    così creo la tabella, ma quando inserisco il record come faccio la query ?

    grazie !
    Dovresti fare il contrario:

    codice:
    prodotto (id, prodotto)
    
    categorie: (id, categoria, id_prodotto)
    così avrai una cosa del genere:

    prodotti:
    1 | chiave inglese
    2 | ...
    ...

    categorie:
    1 | ferramenta | 1
    2 | officina | 1
    3 | fai da te | 1
    4 | ...
    ...

    Così associ il prodotto "chiave inglese" con id = 1 alle categorie (1 = ferramenta, 2 = officina e 3 = fai da te)
    "Mai discutere con un idiota. Ti trascina al suo livello e ti batte con l'esperienza." (Oscar Wilde)

  7. #7
    Utente di HTML.it
    Registrato dal
    Apr 2004
    Messaggi
    3,709
    mmmh... veramente se non ristrutturiamo le tabelle l'ideale è non considerare il campo "id.cat (indice)" nella tabella prodotti (eliminarlo o ignorarlo) e creare una terza tabella "tipologie" (o come si vuol chiamare) che contiene:

    id (autoinc)
    id_prodotto
    id_categoria

    se il prodotto "1" è associato alle categorie "3" e "4" dentro la tabella avrai:

    id | id_prodotto | id_categoria
    ... | 1 | 3
    ... | 1 | 4

  8. #8
    Utente di HTML.it
    Registrato dal
    Dec 2002
    Messaggi
    1,786
    Originariamente inviato da satifal
    ti prego dai!



    Dovresti fare il contrario:

    codice:
    prodotto (id, prodotto)
    
    categorie: (id, categoria, id_prodotto)
    così avrai una cosa del genere:

    prodotti:
    1 | chiave inglese
    2 | ...
    ...

    categorie:
    1 | ferramenta | 1
    2 | officina | 1
    3 | fai da te | 1
    4 | ...
    ...

    Così associ il prodotto "chiave inglese" con id = 1 alle categorie (1 = ferramenta, 2 = officina e 3 = fai da te)
    il problema è che a ferramenta appartengono alche altri prodotti:

    prodotti:
    1 | chiave inglese
    2 | chiave a bussola
    3 | ponte elevatore
    ...

    categorie:
    1 | ferramenta | 1-2
    2 | officina | 1-2-3
    3 | fai da te | 1-2
    4 | ...
    ...
    [Scambio Links a Tema] Contattatemi in Privato x + Info.

  9. #9
    Utente di HTML.it
    Registrato dal
    Apr 2004
    Messaggi
    3,709
    leggi anche il mio post precedente...

  10. #10
    Originariamente inviato da unreg
    il problema è che a ferramenta appartengono alche altri prodotti:

    prodotti:
    1 | chiave inglese
    2 | chiave a bussola
    3 | ponte elevatore
    ...

    categorie:
    1 | ferramenta | 1-2
    2 | officina | 1-2-3
    3 | fai da te | 1-2
    4 | ...
    ...
    Allora devi utilizzare una tabella di relazione come suggeritoti da eiyen.
    "Mai discutere con un idiota. Ti trascina al suo livello e ti batte con l'esperienza." (Oscar Wilde)

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.