Pagina 1 di 3 1 2 3 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 25
  1. #1
    Utente di HTML.it L'avatar di bANART
    Registrato dal
    Jul 2005
    Messaggi
    662

    Problema con FOREIGN KEY

    Ragazzi scusate, ho controllato la guida di HTML.it, ho consultato la guida ufficiale, ho cercato ovunque ma non arrivo a capo al problema.

    C'è un'anima buona che mi aiuta a risolvere questo problema?

    Devo relazionare due tabelle in modo tale che eliminando un record sulla prima mi elimini il corrispondente sulla seconda (utilizzando la funzione FOREIGN KEY), ma se popolo tutti i campi delle due tabelle tramite un unico form non mi si relazionanto.

    Sapete dirmi cosa c'è di sbagliato in queste tabelle?

    Codice PHP:
    CREATE TABLE users (
       
    id int(11NOT NULL AUTO_INCREMENT,
       
    nome varchar(20NOT NULL,
       
    cognome varchar(20NOT NULL,
       
    username varchar(20NOT NULL,
       
    email varchar(60NOT NULL,
       
    password varchar(50NOT NULL,
       
    key_control varchar(50NOT NULL,
       
    ver int(1NOT NULL DEFAULT '0',
       
    PRIMARY KEY  (id)
    ENGINE=InnoDB;

    CREATE TABLE profile (
       
    id_profile int(11NOT NULL AUTO_INCREMENT,
       
    id_users int(11) default NULL,
       
    INDEX par_ind (id_users),
       
    nomedarte varchar(100NOT NULL,
       
    opz1 varchar(100NOT NULL,
       
    opz2 int(1NOT NULL DEFAULT '0',
       
    opz3 int(1NOT NULL DEFAULT '0',
       
    opz4 int(1NOT NULL DEFAULT '0',
       
    opz5 int(1NOT NULL DEFAULT '0',
       
    opz6 int(1NOT NULL DEFAULT '0',
       
    opz7 int(1NOT NULL DEFAULT '0',
       
    opz8 int(1NOT NULL DEFAULT '0',
       
    opz9 int(1NOT NULL DEFAULT '0',
       
    opz10 int(1NOT NULL DEFAULT '0',
       
    opz11 int(1NOT NULL DEFAULT '0',
       
    opz12 int(1NOT NULL DEFAULT '0',
       
    opz13 int(1NOT NULL DEFAULT '0',
       
    opz14 int(1NOT NULL DEFAULT '0',
       
    opz15 int(1NOT NULL DEFAULT '0',
       
    opz16 int(1NOT NULL DEFAULT '0',
       
    opz17 int(1NOT NULL DEFAULT '0',
       
    opz18 int(1NOT NULL DEFAULT '0',
       
    opz19 int(1NOT NULL DEFAULT '0',
       
    PRIMARY KEY  (id_profile),
       
    FOREIGN KEY (id_usersREFERENCES users (id)
    ENGINE=InnoDB
    Grazie
    Matteo Coletta - fotografia
    Fotografo Lanciano - Fotografia a Lanciano e Pescara

  2. #2

  3. #3
    La struttura delle tabelle è ok a meno che, come giustamente dice fmortara, tu non voglia aggiungere una clausola "on delete".
    Non capisco cosa intendi quando dici che se popoli tutti i campi delle due tabelle tramite un unico form non ti si relazionano.
    Prova a postare il codice.
    "Mai discutere con un idiota. Ti trascina al suo livello e ti batte con l'esperienza." (Oscar Wilde)

  4. #4
    Utente di HTML.it L'avatar di bANART
    Registrato dal
    Jul 2005
    Messaggi
    662
    Grazie fmortara!! Effettivamente è quella l'operazione che deve fare... ma il problema è a monte... non vengono relazionate le due tabelle.

    Il campo id_users nella tabella profile non viene popolato... rimane null
    Matteo Coletta - fotografia
    Fotografo Lanciano - Fotografia a Lanciano e Pescara

  5. #5
    Utente di HTML.it L'avatar di bANART
    Registrato dal
    Jul 2005
    Messaggi
    662
    Ciao satifal, scusami ma ho letto ora (avevi postato un attimo prima di me)

    Intendo dire che il campo users nella tabella profile non prende il riferimento della tabella users.
    (provo ad allegare uno screenshot)

    Quando in users l'id è 1 in id_users nella tabella profile rimane 0 (vedi allegato)

    p.s.: satifal, hai mp
    Immagini allegate Immagini allegate
    Matteo Coletta - fotografia
    Fotografo Lanciano - Fotografia a Lanciano e Pescara

  6. #6
    Utente di HTML.it L'avatar di bstefano79
    Registrato dal
    Feb 2004
    Messaggi
    2,520
    FOREIGN KEY è un vincolo non è una funzione automatica

  7. #7
    Originariamente inviato da bstefano79
    FOREIGN KEY è un vincolo non è una funzione automatica
    Quoto, infatti il mio dubbio era propri questo, se prelevi i dati dell'utente da un form ed effettui le insert sulle tabelle users e profile devi essere tu ad associare un particolare profilo all'utente inserendo nel campo id_users l'id dell'utente. Tale funzione non è automatica, invece il controllo di coerenza viene effettuato automaticamente da MySQL che ti impedirà di inserire nel campo id_users un id non presente nella tabella users.
    "Mai discutere con un idiota. Ti trascina al suo livello e ti batte con l'esperienza." (Oscar Wilde)

  8. #8
    Utente di HTML.it L'avatar di bANART
    Registrato dal
    Jul 2005
    Messaggi
    662
    Quindi significa che devo inserire (ad esempio) l'username in tutte e due le tabelle e associarli con foreign key?
    In questo modo avrò un dato di controllo che sia uguale per tutte e due le tabelle?
    Matteo Coletta - fotografia
    Fotografo Lanciano - Fotografia a Lanciano e Pescara

  9. #9
    Tu hai già una foreign key nella tabella profile. Essa è id_users che fa riferimento al campo id della tabella users. Quando effettui l'insert nella tabella profile nel campo id_users dovrai inserire l'id dell'utente al quale il profilo si riferisce in modo da associare il profile appena creato all'utente.
    "Mai discutere con un idiota. Ti trascina al suo livello e ti batte con l'esperienza." (Oscar Wilde)

  10. #10
    Utente di HTML.it L'avatar di bANART
    Registrato dal
    Jul 2005
    Messaggi
    662
    Si ma non ha senso!
    Il campo id della tabella users è un campo automatico che si autoincrementa, non vado ad inserirlo io. Quindi non posso sapere cosa inserire nel campo id_users della tabella profile!

    Ecco perchè pensavo di associare al campo id_users (che magari rinominerò per comodità) il campo username della tabella users, e nel momento dell'inserimento metto anche nel campo id_users l'username.

    Che ne dici?

    (caspita ancora non va il pannello di controllo di MySql di A., non riesco a fare una prova)
    Matteo Coletta - fotografia
    Fotografo Lanciano - Fotografia a Lanciano e Pescara

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.