- Home
- Categorie
- Coding e Sistemistica
- PHP
- inserimento e cancellazione dati in due tabelle diverse
-
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
-
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
-
-- 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 tabellasoci
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 tabellaabbigliamento
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 tabellapagamenti
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 tabellapulmino
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 tabellaregistrazioni_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.
-
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.
-
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.
-
Ti hanno consigliato male, secondo me.
Cmq, visto che non vuoi risolvere il problema alla radice puoi fare quello che ti ho detto prima:
- blocchi le tabelle LOCK TABLE [prima tabella] WRITE, [seconda tabella] WRITE
- 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]; - sblocchi UNLOCK TABLES;
vedi te poi come interfacciarti al db.
Ciao