Visualizzazione dei risultati da 1 a 9 su 9
  1. #1
    Utente di HTML.it L'avatar di bANART
    Registrato dal
    Jul 2005
    Messaggi
    662

    Dati form registrati su 2 tabelle Sql

    Ciao, sempre io!

    Ho un form su due colonne... la prima colonna sono i dati di autenticazione (nome, cognome, username, password e e-mail), la seconda colonna sono dati aggiuntivi del profilo.

    Vorrei registrare questi dati su due tabelle separate (user e prifile), però mi sorge il dubbio...

    Per recuperare i dati dovrò fare affidamento sull'ID? ...e se un giorno decido di eliminare un utente devo ricordarmi di cancellare il record da tutte le tabelle? e se ne ho 15 di tabelle?
    C'è qualche metodo in particolare o devo solo fare attenzione?

    Graziegrazie!!
    Matteo Coletta - fotografia
    Fotografo Lanciano - Fotografia a Lanciano e Pescara

  2. #2
    Perchè 2 tabelle mysql? non ha senso!
    Ciao!

  3. #3
    fai 2 tabelle
    users:
    • id_user (INT 11 auto_increment)
    • username (varchair 20)
    • password (varchair 20)
    • email (varchair 255)


    profili:
    • id_profile
    • id_user (campo per relazionare le due tabelle)
    • nome
    • cognome
    • altro1
    • altro2
    • altro3


    quando registri:
    - inserisci i dati nella prima tabella (username, password ed email)
    - inserisci i dati aggiuntivi nella seconda tabella e id_user lo ottieni con mysql_insert_id()

    per eliminare occorrerà fare due query distinte

  4. #4
    Utente di HTML.it L'avatar di bANART
    Registrato dal
    Jul 2005
    Messaggi
    662
    ..perchè? Dovrei utilizzare una sola tabella?
    Ma mi diventa un macello!!

    Pensa che a parte i dati di autenticazioni, i dati aggiuntivi sono 19 campi!!!!
    Che ne dici?

    ----


    Ciao Oly... scusa ho letto ora... quindi li metto in relazione non con l'ID, ma con un campo a parte?
    Matteo Coletta - fotografia
    Fotografo Lanciano - Fotografia a Lanciano e Pescara

  5. #5
    io farei due tabelle per questioni anche di un mio ordine mentale e di distribuzione dei dati:
    da un lato avrei i dati strettamente necessari per gestire il login
    dall'altro avrei i dati legati al profilo

    vi è la possibilità di fare un'unica tabella e non è poi così tanto un macello... 19 campi? bhè mysql li riesce a gestire...

  6. #6
    Puoi gestire la cosa a mano, nel senso che quando cancelli un utente devi eliminare i suoi riferimenti in tutte le altre tabelle oppure dichiarare esplicitamente una constraint di tipo FOREIGN KEY in fase di creazione delle tabelle. In questo modo sarà MySql stesso a gestire le constraint e a fare gli opportuni controlli sulla consistenza dei dati inseriti. Inoltre con le clausole "on delete" ed "on update" puoi fare in modo che eliminando un utente con il relativo id vengano cancellate o aggiornate automaticamente tutte le foreign key.

    P.S.
    Io utilizzerei sicuramente due tabelle, una per gli utenti ed i relativi dati di login e l'altra per le informazioni aggiuntive.
    "Mai discutere con un idiota. Ti trascina al suo livello e ti batte con l'esperienza." (Oscar Wilde)

  7. #7
    Utente di HTML.it L'avatar di bANART
    Registrato dal
    Jul 2005
    Messaggi
    662
    Ciao Satifal!

    In base al link che mi hai segnalato con questo tipo di codice...
    Codice PHP:
    CREATE TABLE parent (id INT NOT NULL,
                         
    PRIMARY KEY (id)
    ENGINE=INNODB;

    CREATE TABLE child (id INTparent_id INT,
                        
    INDEX par_ind (parent_id),
                        
    FOREIGN KEY (parent_idREFERENCES parent(id)
                          
    ON DELETE CASCADE
    ENGINE=INNODB
    ...se cancello un record nella tabella "parent" con numero di id 54 (per es.) in automatico nella tabella "child" mi va a cancellare il record con parent_id 54?

    ...e poi, a che serve INNODB?
    Matteo Coletta - fotografia
    Fotografo Lanciano - Fotografia a Lanciano e Pescara

  8. #8
    Si il codice da te postato dovrebbe andare bene. Se fai delle prove noterai innanzitutto che non sarà possibile inserire nel campo parent_id della tabella child valori differenti da quelli presenti nel campo id della tabella parent, inotre se elimini un record dalla tabella parent automaticamente verranno eliminati tutti i record dalla tabella child che fanno riferimento all'id del parent eliminato.
    Per quanto riguarda l'InnoDB esso non è altro che il motore per il salvataggio dei dati per MySQL. Puoi trovare una descrizione dei vari motori QUI
    "Mai discutere con un idiota. Ti trascina al suo livello e ti batte con l'esperienza." (Oscar Wilde)

  9. #9
    Utente di HTML.it L'avatar di bANART
    Registrato dal
    Jul 2005
    Messaggi
    662
    Siete stati gentilissimi,
    ora faccio delle prove!
    Grazie
    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 © 2024 vBulletin Solutions, Inc. All rights reserved.