• User

    inserimento e cancellazione dati in due tabelle diverse

    Ciao a tutti, mi sono appena iscritto al forum, ho dato un occhiata ai 3d per la risoluzione del mio problema, ma non ho trovato quello che cerco.
    Premesso che sono alle primissime armi avrei bisogno di sapere come inserire e/o cancellare dati da più tabelle:
    nome db=scuolacalcio
    tabelle=soci,anagrafica,abbigliamento e pagamenti
    quando utilizzo la tabella soci con id_socio chiave primaria come posso inserire i dati anche nelle altre tabelle sempre relativamente all'id_socio presente nelle altre tabelle? E quando devo cancellare un socio dalla tabella soci come devo cancellare i suoi dati contenuti nelle altre tabelle?

    grazie e buon divertimento


  • Moderatore

    Se hai bisogno di inserire dati in due tabelle ogni volta riferiti allo stesso id, e cancellarli probabilmente hai sbagliato a costruire il db. 🙂

    Se sbaglio: apri il db, blocca la tabella (lock table) se tale opzione è ammessa dal tuo db, seleziona il primo campo ed eliminalo, seleziona il secondo ed elimilalo e poi sblocca il tutto.

    Cmq ti ripeto: secondo me basta normalizzarlo e risolvi tutto 🙂


  • User

    -- phpMyAdmin SQL Dump
    -- version 2.6.1
    -- http://www.phpmyadmin.net
    -- Versione MySQL: 4.1.9
    -- Versione PHP: 4.3.10

    -- Database: scuolacalcio


    --
    -- Struttura della tabella soci

    CREATE TABLE soci (
    id_socio varchar(5) NOT NULL default '',
    data_Iscrizione date default NULL,
    cognome varchar(30) default NULL,
    nome varchar(30) default NULL,
    luogo_Nascita varchar(30) default NULL,
    data_Nascita date default NULL,
    nazionalita varchar(30) default NULL,
    indirizzo varchar(30) default NULL,
    cap int(5) default NULL,
    citta varchar(30) default NULL,
    provincia char(2) default NULL,
    telefono varchar(15) default NULL,
    cellulare varchar(15) default NULL,
    tessera_figc int(8) default NULL,
    note varchar(40) default NULL,
    fotografia char(1) NOT NULL default '',
    PRIMARY KEY (id_socio)
    ) ENGINE=MyISAM DEFAULT CHARSET=latin1;

    -- Struttura della tabella anagrafica

    CREATE TABLE anagrafica (
    id_socio int(5) NOT NULL default '0',
    cod_Fiscale varchar(16) default NULL,
    nucleo_Familiare int(2) default NULL,
    nome_Padre varchar(20) default NULL,
    prof_Padre varchar(40) default NULL,
    nome_Madre varchar(20) default NULL,
    cognome_Madre varchar(20) default NULL,
    prof_Madre varchar(40) default NULL,
    foto char(1) default 'n',
    certif_Medico char(1) default 'n'
    ) ENGINE=MyISAM DEFAULT CHARSET=latin1;

    --
    -- Struttura della tabella abbigliamento

    CREATE TABLE abbigliamento (
    id_socio int(5) NOT NULL default '0',
    categoria varchar(30) default NULL,
    kit_lungo int(1) default NULL,
    taglia_kit_lungo text,
    calze_kit_lungo int(1) default NULL,
    taglia_calze_kit_lungo varchar(5) default NULL,
    kit_corto int(1) default NULL,
    taglia_kit_corto varchar(5) default NULL,
    calze_kit_corto int(1) default NULL,
    taglia_calze_kit_corto varchar(5) default NULL,
    kit_portiere int(1) default NULL,
    taglia_kit_portiere varchar(5) default NULL,
    calze_kit_portiere int(1) default NULL,
    taglia_calze_kit_portiere varchar(5) default NULL,
    tuta_lavoro int(1) default NULL,
    taglia_tuta_lavoro varchar(5) default NULL,
    tuta_passeggio int(1) default NULL,
    taglia_tuta_passeggio varchar(5) default NULL,
    borsa int(1) default NULL,
    taglia_borsa varchar(5) default NULL,
    pallone int(1) default NULL,
    misura_pallone varchar(5) default NULL,
    kee_way int(1) default NULL,
    taglia_kee_way varchar(5) default NULL,
    giaccone int(1) default NULL,
    taglia_giaccone varchar(5) default NULL,
    zaino int(1) default NULL,
    parastinchi int(1) default NULL,
    taglia_parastinchi varchar(5) default NULL,
    zuccotto int(1) default NULL,
    taglia_zuccotto varchar(5) default NULL,
    berretto int(1) default NULL,
    taglia_berretto varchar(5) default NULL
    ) ENGINE=MyISAM DEFAULT CHARSET=latin1;

    --
    -- Struttura della tabella pagamenti

    CREATE TABLE pagamenti (
    id_socio int(5) NOT NULL default '0',
    servizio_Pulmino char(1) default NULL,
    Convenzione varchar(30) default NULL,
    Qt_Associativa decimal(5,2) default NULL,
    Qt_Iscrizione decimal(5,2) default NULL,
    iscrizione_Versata decimal(5,2) default '0.00',
    Qt_Mensile decimal(5,2) default NULL,
    set decimal(5,2) default '0.00',
    ott decimal(5,2) default '0.00',
    nov decimal(5,2) default '0.00',
    dic decimal(5,2) default '0.00',
    gen decimal(5,2) default '0.00',
    feb decimal(5,2) default '0.00',
    mar decimal(5,2) default '0.00',
    apr decimal(5,2) default '0.00',
    mag decimal(5,2) default '0.00',
    giu decimal(5,2) default '0.00'
    ) ENGINE=MyISAM DEFAULT CHARSET=latin1;

    --
    -- Struttura della tabella pulmino

    CREATE TABLE pulmino (
    id_socio int(5) NOT NULL default '0',
    data_Pulmino date default NULL,
    Qt_Pulmino decimal(5,2) default '0.00',
    Mese_Pulmino decimal(5,2) default '0.00',
    set decimal(5,2) default '0.00',
    ott decimal(5,2) default '0.00',
    nov decimal(5,2) default '0.00',
    dic decimal(5,2) default '0.00',
    gen decimal(5,2) default '0.00',
    feb decimal(5,2) default '0.00',
    mar decimal(5,2) default '0.00',
    apr decimal(5,2) default '0.00',
    mag decimal(5,2) default '0.00',
    giu decimal(5,2) default '0.00'
    ) ENGINE=MyISAM DEFAULT CHARSET=latin1;

    --
    -- Struttura della tabella registrazioni_online

    CREATE TABLE registrazioni_online (
    id_registrazione int(5) NOT NULL auto_increment,
    email varchar(40) NOT NULL default '',
    cognome varchar(20) NOT NULL default '',
    nome varchar(20) NOT NULL default '',
    username varchar(40) default NULL,
    password varchar(10) default NULL,
    PRIMARY KEY (id_registrazione)
    ) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=29 ;

    --
    Queste sono le tabelle che compongono il database.
    Utilizzo lo stesso database con access senza problemi, dal momento che sono molto interessato a metterlo online a disposizione dei genitori dei soci iscritti, i quali con inserimento di username e password possano accedere alla pagina relatva al record di proprio interesse così che possano visualizzare i dati relativi al vestiario, pagamenti effettuati ecc...

    Mi rendo conto della complessità della mia richiesta, ma non ho fretta, anche se a piccoli passi, sono intenzionato a raggiungere il mio obiettivo.

    Ovviamente sarò grato a tutti quelli che vorranno aiutarmi fin da ora.

    Sono veramente agli inizi è vorrei procedere iniziando da un livello molto basso.

    Per riepilogare come prima necessità vorrei poter inserire e cancellare i dati relativi ad un socio contemporaneamente in tutte le tabelle.

    Chiedo scusa per la lunghezza, ma l'ho fatto solo per rendere chiaro a che punto sono.


  • Moderatore

    Confermo l'idea di prima.
    Non capisco perché hai fatto 3 tabelle per indicare dati sulla stessa persona, dati univoci intendo. 🙂

    Secondo me il problema è alla radice.


  • User

    Perchè moltissimi mi hanno detto che costruire un unica tabella con tutti quei dati non era una buona cosa, veniva un tabellone esagerato, quindi mi hanno consigliato di dividere la tabella in tante tabelle piu piccole e collegarle tra loro.

    Però, indipendentemente dalla scelta di unica o più tabelle, rimane sempre che credo sia possibile inserire i dati relativi a un id_socio in tutte le tabelle, o no?

    In access si fa semplicemente, il problema è che vorrei farlo con mysql.

    grazie per le risposte.


  • Moderatore

    Ti hanno consigliato male, secondo me.

    Cmq, visto che non vuoi risolvere il problema alla radice puoi fare quello che ti ho detto prima:

    1. blocchi le tabelle LOCK TABLE [prima tabella] WRITE, [seconda tabella] WRITE
    2. fai le singole query: UPDATE [prima tabella] SET [campo]=[valore]
      WHERE id_socio=[id_del_socio];
      UPDATE [seconda tabella] SET [campo]=[valore]
      WHERE id_socio=[id_del_socio];
    3. sblocchi UNLOCK TABLES;

    vedi te poi come interfacciarti al db.

    Ciao :ciauz: