• User Newbie

    Relazione Tabelle: Invio Form e Select

    Salve a tutti,
    Sto realizzando un gestionale per una associazione;
    E mi sono imbattuto , per forza di cose, nelle "Join".
    Ora, il mio problema non è capire come funzionano queste join, ma quanto realizzarle praticamente, mi spiego:

    lo script deve funzionare così:

    Se maggiorenne--> carica un modulo, se minorenne --> carica un altro modulo.--> inserisci nel db--> stampa modulo gia compilato

    Il problema è che nel caricare il secondo modulo che ha ben 24 campi (che andranno ripartiti nelle rispettive tabelle) al momento dell'insert (che sono ben 5) mi inserisce due query (quelle centrali delle 5, per capire) e le altre no.

    e il problema principale sta nel farle relazionale. Io fin ora sto usando questo script qui:

    [PHP]$query_estrazione="
    SELECT Socio_Generale ., Socio_Indirizzo., Socio_Network.,Socio_Recapiti.,Socio_Scuola.,genitori.
    FROM Socio_Generale,Socio_Indirizzo,Socio_Network,Socio_Recapiti,Socio_Scuola,genitori
    WHERE Socio_Generale.Id_Socio=Socio_Indirizzo.Id_Indirizzo
    AND Socio_Generale.Id_Socio=Socio_Network.Id_Socio_Network
    AND Socio_Generale.Id_Socio=Socio_Recapiti.Id_Recapito
    AND Socio_Generale.Id_Socio=Socio_Scuola.Id_Scuola_Socio
    AND Socio_Generale.Id_Socio=genitori.Id_Genitore
    AND Id_Socio='$utente'";[/PHP]

    Ma il problema è che non è detto che gli id corrispondono...nel senso che per esempio nella prima tabella avrò nell' id 1 tutti i campi...che non corrispondono però all'id 1 dell'altre tabelle ma all'id 4,5,6 ecc ecc.

    Tuttavia, mi è stato detto di creare una tabella di "raccordo". Ma non so come fare a far scrivere gli id nella stessa, dagli insert.

    Se vi può aiutare posso allegare le pagine, o il codice php...o le tabelle.

    Grazie,Alex,


  • User Attivo

    Non è molto chiaro quello che ti serve e il problema che hai.

    Potresti fare un esempo pratico?


  • User Newbie

    Si perdonami, non mi sono spiegato bene.

    Allora io sto creando uno script che servirà per l'iscrizione degli utenti all'associazione, ed è così composto:

    passo1:
    scelta età(se maggiorenne o minorenne)
    passo2:
    in base alla scelta data, verranno caricati due form diversi, uno per i maggiorenni e uno per i minorenni.

    dovrebbè funzionare così: l'utente compila i campi, invia..e nella pagina che processera' i dati, verranno sia salvati su db sia stampati a video in un modulo che andrà stampato dall'utente.

    Ora:
    Praticamente diciamo che ho capito come i join funzionano, quello che non mi è chiaro è come far scrivere nelle tabelle i corrispettivi ID.

    Mi spiego:

    Una volta inviato il form "IN TEORIA" (non in pratica perchè ancora non funziona bene) lo script dovrà smistare i vari input nelle rispettive tabelle, dunque genitori nella tabella genitori,generalità del socio nella tabella generalità e così via. (sono 24 campi in tutto)[anche se non so come fare perchè io ho fatto 4 query staccate, per me ne inserisce solo 2 su 4..quelle centrali!).

    Ora, io fin ora (durante il select) ho richiamato gli Id di ogni tabella. Tuttavia si è presentato un problema: Nel cancellare e riscrivere Record nel Db, praticamente (per il problema degli inserimenti che ho scritto qualche riga sopra) mi trovo righe sfalsate.

    Quindi lavorando con gli Id mi ritrovo che l'id 1 della tabella generalità, corrisponde alla riga 4 della tabella genitori (e dovrebbe essere riga 1, per capire).

    Non so come ovviare a questo problema; C'è chi dice che devo creare una tabella di "raccordo" che raccolga gli id corrispondenti per richiamarli, chi dice che devo inserire nella tabella "figlia" un record corrispondente della tabella "padre"..

    In entrambi i casi, non so come far scrivere sul db queste informazioni:

    Cioe':

    tabella_soci_raccordo

    Id_Figlio|Id_Genitore|Id_Generalita_|
    1 | 2 | 4
    3 | 1 | 5

    Praticamente, che devo fare per far scrivere gli Id corrispondenti nella tabella? o meglio, nel record di ogni tabella figlia...corrispondente agli Id della tabella padre?


  • User Newbie

    Up Per favore...non so davvero come risolvere..


  • Super User

    la tabella di raccordo, come da te nominata, non è detto che serva.

    Ogni socio indica uno o piu genitori? (uno a uno o uno a molti?)
    Ha una o piu generalita? (uno a uno o uno a molti?)

    Ti faccio un esempio con più genitori ed una generalita per ogni figlio

    Tabella figlio
    id | ....

    Tabella generalità
    id | id_figlio | ...

    Tabella Genitore
    id | ...

    Tabella figlio_genitore
    id | id_figlio | id_genitore


  • User Newbie

    Ogni socio indica uno o piu genitori? (uno a uno o uno a molti?)
    Ha una o piu generalita? (uno a uno o uno a molti?)

    Allora, Ad ogni socio corrisponde un genitore. Anche se (nel caso di fratelli) può corrispondere un genitore a piu figli.

    Per quello che riguarda le generalità, Le tabelle sono:

    Generalità,recapiti,indirizzo,network e feedback

    Tabella figlio
    id | ....

    Tabella generalità
    id | id_figlio | ...

    Tabella Genitore
    id | ...

    Tabella figlio_genitore
    id | id_figlio | id_genitore

    Se non ho capito male qui hai fatto prima l'esempio con una tabella id_figlio nelle tabelle figlie(nella relazione padre-figlio) e una con la tabella di raccordo in cui vengono registrati tutti gli ID corrispondenti?

    Ad ogni modo, praticamente proprio, partendo dal momento in cui l'utente invia i campi al db come faccio a fa registrare nella tabella "Genitore" il campo id_Figlio e nella tabella Figlio_Genitore i campi id_figlio e id_genitore?..è questo che concettualmente non capisco.

    Grazie per l'attenzione


  • User Attivo

    @alex0211 said:

    Up Per favore...non so davvero come risolvere..

    Se avessi già risolto comunque potrebbe esserti di aiuto.

    Il tuo problema credo sia nell'estrarre l'ID univoco del GENITORE, ed anche del FIGLIO, per la selezione, poi, dei dati richiesti o di quelli da aggiornare.

    Comunque mysql_insert_id() recupera l'ultimo record.
    Potrebbe esserti utile nel momento in cui inserisci i dati per indicizzare uno o più figli ad un genitore.

    Spero abbia capito il tuo problema non dicendo una cavolata.