- Home
- Categorie
- Coding e Sistemistica
- Coding
- Assegnare più righe di una tabella ad una singola di un'altra
-
Assegnare più righe di una tabella ad una singola di un'altra
Salve ragazzi! Mi sto approcciando a MySQL e PHP e fin'ora, con un po' d'ingegno e un po' di google, mi sta riuscendo tutto.
Ultimamente sono però stato ostacolato da un dubbio che non so come sciogliere. Vado dritto al punto:
Ho creato due tabelle: utenti, con l'elenco degli utenti iscritti al sito, e series, con un elenco di serie a fumetti.
Quello che vorrei fare è far scegliere agli utenti per ogni serie un valore che si associa allo "stato di lettura". Mi spiego per bene
Per ogni serie, vorrei che l'utente possa scegliere se (ad esempio) non l'ha letta, l'ha letta, l'ha conclusa o l'ha interrotta.
E quindi, mi preoccupava come farlo in MySQL. Pensavo di fare una terza tabella con righe pari al numero di utenti e colonne pari a quello delle serie, associare tutto tramite ID e inserire nel campo un valore. (Es: 1: l'ha letta, 2: letta, 3: conclusa, 4: interrotta) però avevo qualche dubbio in merito.Domanda extra (spero mi sia concessa
)
Ovviamente, ogni utente e ogni serie è associato ad un id. Ma se rimuovessi un utente/una serie e ne aggiungessi uno nuovo, lasciando vuoto il campo id, andrebbe ad inserirsi nell'id successivo all'ultimo. C'è un modo per forzarlo a inserirsi nel primo id disponibile?
Anche per questo avevo qualche dubbio sul creare una tabella extra.Grazie in anticipo
-
Ciao Fork e benvenuto nel ForumGT!
Secondo me sei sulla strada giusta poiché una terza tabella ti serve per forza. Il problema è che se tu rimuoverai un'utente perderai tutte le info relative all'utente stesso (quindi quali serie ha letto e le sue preferenze) se per te non è un problema rimuovilo pure.
Se hai inserito il campo id come autoincrement questo andrà al successivo all'ultimo come hai detto tu. Per evitare una cosa del genere devi togliere l'autoincrement ed implementare una serie di controlli che ti permettano di incrementare in modo intelligente l'id ed eventualmente "tappare" i buchi.
-
Grazie!
@PietroR said:Secondo me sei sulla strada giusta poiché una terza tabella ti serve per forza.
Immaginavo. C'è per caso un modo per fare che sia automatizzata o comunque devo aggiungere manualmente ogni volta che aggiungo un utente/una serie?
@PietroR said:Il problema è che se tu rimuoverai un'utente perderai tutte le info relative all'utente stesso (quindi quali serie ha letto e le sue preferenze) se per te non è un problema rimuovilo pure.
Beh, se un utente cancella il suo account, non dovrebbe aver cura dei suoi dati.
@PietroR said:Se hai inserito il campo id come autoincrement questo andrà al successivo all'ultimo come hai detto tu. Per evitare una cosa del genere devi togliere l'autoincrement ed implementare una serie di controlli che ti permettano di incrementare in modo intelligente l'id ed eventualmente "tappare" i buchi.
Capisco. Va beh, ho già in mente una soluzione per questo
-
Potresti fare un controllo al salvataggio, effettuando una select sull'id dell'utente.
Se la query torna la riga vuol dire che è già presente, se torna un set vuoto l'id non c'è nella tabella e lo aggiungi con una insert.
-
Pensavo di fare così allora:
Una tabella (reading) dove le righe corrispondono alle serie e le colonne agli utenti.
Se si cancella una serie o un utente, si rimuove da entrambe le tabelle.
Quando invece viene inserita una serie (o un utente), si aggiunge una riga (o una colonna) con tutti i valori impostati a zero.
Dici che può funzionare?
-
Beh a logica direi di si!