Spero di non abusare della tua pazienza e della tua cortesia.
Sto cercando di capire il codice che hai postato, per imparare qualcosa in più.
Ho provato a modificare il codice che genera le 2 tabelle Professori e Lezioni, in modo da inserire nella tabella Professori non solo il cognome ma anche il nome, richiamato anch'esso dalla tabella madre.
La parte del tuo codice è questa:
Codice PHP:
// caricamento della tabella iniziale dal db
$tab = caricaQuery("SELECT * FROM tab", array('cognome',
'lun_1', 'lun_2', 'lun_3', 'lun_4', 'lun_5', 'lun_6',
'mar_1', 'mar_2', 'mar_3', 'mar_4', 'mar_5', 'mar_6',
'mer_1', 'mer_2', 'mer_3', 'mer_4', 'mer_5', 'mer_6',
'gio_1', 'gio_2', 'gio_3', 'gio_4', 'gio_5', 'gio_6',
'ven_1', 'ven_2', 'ven_3', 'ven_4', 'ven_5', 'ven_6',
'sab_1', 'sab_2', 'sab_3', 'sab_4', 'sab_5', 'sab_6'));
// array associativo per i giorni di settimana $settimana = array('','lun','mar','mer','gio','ven','sab');
// scorrimento di ogni riga (e quindi di ogni professore)
for ($i=0; $i<count($tab); $i++) {
$cognome = $tab[$i]['cognome'];
// creazione nuovo professore
$idProfessore = eseguiQueryInsert("INSERT INTO Professori (cognome) VALUES ('$cognome')");
// scorrimento dei giorni della settimana
for ($giornoSettimana=1; $giornoSettimana<=6; $giornoSettimana++)
// scorrimento degli orari
for ($orario=1; $orario<=6; $orario++) {
// recupero dell'aula (se null vuol dire che il professore non farà lezione)
$aula = $tab[$i][$settimana[$giornoSettimana] . "_" . $orario];
if ($aula != NULL)
eseguiQuery("INSERT INTO Lezioni (idProfessore, giornoSettimana, orario, aula) "
." VALUES ($idProfessore, $giornoSettimana, $orario, '$aula')");
// inserimento della lezione
Ho provato a modificarlo così:
Codice PHP:
// caricamento della tabella iniziale dal db
$tab = caricaQuery("SELECT * FROM docenti_orario", array('cognome', 'nome',
'lun_1', 'lun_2', 'lun_3', 'lun_4', 'lun_5', 'lun_6',
'mar_1', 'mar_2', 'mar_3', 'mar_4', 'mar_5', 'mar_6',
'mer_1', 'mer_2', 'mer_3', 'mer_4', 'mer_5', 'mer_6',
'gio_1', 'gio_2', 'gio_3', 'gio_4', 'gio_5', 'gio_6',
'ven_1', 'ven_2', 'ven_3', 'ven_4', 'ven_5', 'ven_6',
'sab_1', 'sab_2', 'sab_3', 'sab_4', 'sab_5'));
// array associativo per i giorni di settimana
$settimana = array('','lun','mar','mer','gio','ven','sab');
// scorrimento di ogni riga (e quindi di ogni professore)
for ($i=0; $i<count($tab); $i++) {
$cognome = $tab[$i]['cognome'];
$nome2 = $tab[$i]['nome'];
// creazione nuovo professore
$idProfessore = eseguiQueryInsert("INSERT INTO Professori (cognome, nome) VALUES ('$cognome', '$nome2')");
// scorrimento dei giorni della settimana
for ($giornoSettimana=1; $giornoSettimana<=6; $giornoSettimana++)
// scorrimento degli orari
for ($orario=1; $orario<=6; $orario++) {
// recupero dell'aula (se null vuol dire che il professore non farà lezione)
$aula = $tab[$i][$settimana[$giornoSettimana] . "_" . $orario];
if ($aula != NULL)
eseguiQuery("INSERT INTO Lezioni (idProfessore, giornoSettimana, orario, aula) "
." VALUES ($idProfessore, $giornoSettimana, $orario, '$aula')");
// inserimento della lezione
}
}
L'effetto è che i nomi li inserisce, ma ogni record viene inserito nella tabella Professori due volte. Credo che l'errore sia nella seconda variabile del ciclo "for", ma non riesco a venirne a capo.
Se hai tempo...
Grazie