[PHP] Collegamento tra più tabelle

keyz23

Nuovo Utente
18 Lug 2018
30
0
6
Buongiorno sto realizzando una webapplication in cui ho 3 tabelle :

prenotazione (id,nome_rich,cogn_rich,email_rich,oggetto_rich)
interni (id,nome_int,cogn_int,email_int)
esterni (id,nome_est,cogn_est,email_est)

E ho creato un form che permette l'inserimento dei dati nel database ( Postgres ) in maniera che ci sia un richiedente di una prenotazione e un numero di persone interne ed esterne scelto dall'utente.
Quindi se l'utente vuole inserire 4 persone interne, avrà in automatico 4 campi "nome_int, cogn_int,email_int".
Adesso qual è il problema? In sostanza quello che non riesco ad implementare è un modo per far si che ID di prenotazione sia uguale ad ID di interni ed esterni in maniera tale da collegarli, nel senso che cosi quando vado a stampare i dati del richiedente io abbia anche tutte le persone interne ed esterne collegate ad esso. Questo procedimento mi manca e non capisco come implementarlo.

index.php
PHP:
<form method="post" action="input.php">
  <!-- FORM RICHIEDENTE -->
  <div class="form_1">
    <b> Richiedente :</b>
    <br>
    <br>
    Nome:<input type="text" name="name" size="20"><br>
    Cognome:<input type="text" name="surname" size="20"><br>
    Email: <input type="email" name="email" size="20"><br>
    Oggetto :<br><textarea name="testo" rows="5" cols="40" placeholder="Specificare oggetto "></textarea><br>
  </div>
  <!-- FINE FORM RICHIEDENTE -->
<br>
 
  <!-- FORM INTERNO -->
  <div class="form_2">
  <b>Partecipanti Interni</b>
  <br>
  <br>
  <div id="start">
    <div id="first">
      Nome:<input type="text" name="iname[]" size="20"><br>
      Cognome: <input type="text" name="isurname[]" size="20"><br>
      Email: <input type="email" name="iemail[]" size="20"><br>
      <br>
    </div>
  </div>
  <br>
  <b> Numero partecipanti interni:</b>
  <input type="text" id="n1" value="1"><br>
  <button><a href="#" id="add1">Aggiungi partecipante</a></button>
  </div>
  <!-- FINE FORM INTERNO -->

<br>
<!-- FORM ESTERNO -->
  <b>Partecipanti Esterni</b>
  <br>
  <br>
  Numero partecipanti Esterni:
 <input type="text" id="n2" value="1"><br>
 <button><a href="#" id="add2">Aggiungi partecipante</a></button>
  <div id="start2">
    <div id="first2">
      Nome:<input type="text" name="ename[]" size="20"><br>
      Cognome: <input type="text" name="esurname[]" size="20"><br>
      Email: <input type="email" name="eemail[]" size="20"><br>
      <br>
    </div>
  </div>

Grazie a tutti per l'aiuto
 

zorro

Utente Attivo
20 Ott 2014
257
11
18
ROMA
Ciao Keyz23,
se non ho capito male, il tuo è un problema di ID. Questo viene inserito in modo automatico dal computer, quindi, l'unica cosa che potresti fare è: una volta inserito un nuovo utente recuperarne l'ID, quindi creare nelle altre due tabelle un campo (ad es. ID_UT) dove memorizzare l'ID dell'utente appena immesso
 

keyz23

Nuovo Utente
18 Lug 2018
30
0
6
Intanto grazie per la risposta :)
Quindi dici tipo di fare:
Credo id Richiedente --> questo stesso id viene inserito nelle due tabelle Interno ed Esterno, cosi poi quando vado a fare la stampa vado a richiedere tutto ciò che ha lo stesso id del richiedente?
In sostanza il mio problema è che ho un ID padre, e diversi ID figli e devono essere concatenati tra loro in modo che quando stampo l'ID del padre vengano stampati pure tutti gli ID dei figli.
 

zorro

Utente Attivo
20 Ott 2014
257
11
18
ROMA
Esattamente.
Se un utente (come il tuo esempio) viene inserito nella prima tabella con un ID pari a 5 e porta ad es. 4 clienti, questi verranno inseriti nell'altra/e tabella/e con ID progressivi (ad es. 6, 7 ,8 e 9) e ID_UT uguale a 5. In sostanza, come sdici tu, hai un ID padre nella prima tabella (5) a cui corrispondono 4 ID_UT figli nelle altre tabelle.
 
Ultima modifica:

keyz23

Nuovo Utente
18 Lug 2018
30
0
6
Mmmh, solo che a livello di php non capisco come implementarla.
Io ho l'inserimento in richiedente:
PHP:
$query1 = "INSERT INTO prenotazione (nome_rich, cogn_rich, email_rich,oggetto_rich,data_richiesta,orario_richiesta) VALUES ('$name','$surname', '$email','$testo','$str_data', '$str_hour')";

E invece l'inserimento in Interno:
PHP:
$query = "";
if( !empty( $_POST['iname'] ) ) {

    foreach( $_POST['iname'] as $key => $iname ) {

        $isurname = empty( $_POST[$key]['isurname'] ) ? NULL : $_POST[$key]['isurname'];
        $iemail = empty( $_POST[$key]['iemail'] ) ? NULL : $_POST[$key]['iemail'];
        if ($query != "" ) {
            $query .= ",";
        }
        $query .= " ( '$iname', '$isurname', '$iemail' ) ";
    }
}
if( !empty( $query ) ) {

    $query2 = "INSERT INTO interni (nome_int, cogn_int, email_int,id_rich_int) VALUES ".$query;
    $result = pg_query($conn, $query2 ); //if you are using pg_query and $conn is the connection resource
}

Quindi supponendo di aggiungere in interni un valore id_rich_int, per fare in modo che abbia lo stesso valore dell'ID di richiedente, devo aggiungere questo comando?
$query .= " ( '$iname', '$isurname', '$iemail','$id' ) ";

EDIT:
Ho provato e ho ricevuto ovviamente un messaggio di errore.
 
Ultima modifica:

zorro

Utente Attivo
20 Ott 2014
257
11
18
ROMA
Io ho fatto in questo modo (forse non sarà il più ortodosso ma funziona):
una volta inserito l'utente nella prima tabella, ne recuperi l'ID, tramite una query di ricerca, cercando un utente con nome, cognome e mail uguale all'utente appena immesso, leggi l'ID e lo salvi in una variabile, poi vai sull'altra tabella e salvi tutti gli utenti inserendo nel campo ID_UT il valore salvato nella variabile (in pratica l'ID del padre). Probabilmente potrai ottenere lo stesso risultato usando le JOIN, ma in questo non sono molto ferrato.
Se mi dai un po' di tempo ti posto uno script di esempio
 

zorro

Utente Attivo
20 Ott 2014
257
11
18
ROMA
Non amo troppo leggere il codice, preferisco fared uina cosa ex-novo.
Una cosa sola: rileggendo il tuo post non è molto chiaro ciò che intendi fare: che vuoi dire con

e un numero di persone interne ed esterne scelto dall'utente.

in che senso interne o esterne? non è molto chiaro. Anche come è strutturato il form. Non lo trovo nel file che mi hai postato.
 

keyz23

Nuovo Utente
18 Lug 2018
30
0
6
Non amo troppo leggere il codice, preferisco fared uina cosa ex-novo.
Una cosa sola: rileggendo il tuo post non è molto chiaro ciò che intendi fare: che vuoi dire con



in che senso interne o esterne? non è molto chiaro. Anche come è strutturato il form. Non lo trovo nel file che mi hai postato.
Ciao, nel senso che l'utente può scegliere quante persone aggiungere, ovvero tramite come un form dinamico. Quindi se vuole aggiungere 3 persone risulterà per 3 volte Nome, Cognome, Email delle persone che si vogliono aggiungere
 

zorro

Utente Attivo
20 Ott 2014
257
11
18
ROMA
Si, questo è chiaro. Io intendevo sapere che vuoi dire con 'persone interne ed esterne scelte dall'utente': interne o esterne a che cosa? non è chiaro. Io comunque domani vado fuori una settimana, se hai pazienza di aspettare.........
A presto


Zorro
 

zorro

Utente Attivo
20 Ott 2014
257
11
18
ROMA
Ciao keyz23,
ho fatto qualche prova e prima di inviarti lo script (anzi gli script: sono ben 8, ho preferito separare i vari script per maggior chiarezza) ti invio il link. Mi sono creato due tabelle di prova: una PRENOTAZIONI con ID (autoincrementante) NOME, COGNOME e MAIL del cliente 'padre', e una OSPITI che, oltre ai precedenti campi, ha anche ID_UT che memorizza l'ID del padre, legandolo così ai figli (ospiti)


Zorro
 
Ultima modifica:
Discussioni simili
Autore Titolo Forum Risposte Data
S [PHP] collegamento database PHP 4
S [PHP] Creare collegamento filtri di ricerca al database PHP 6
M [PHP] Filtro da TXT con collegamento ipertestuale PHP 13
Drago73 [PHP] collegamento DB con OOP PHP 1
ICTSM [PHP] Collegamento a database non localhost PHP 3
trattorino [PHP] Select tre tabelle collegamento PHP 9
V Collegamento metodo$.ajax con file php jQuery 10
V creare un collegamento di pagina html in php PHP 10
M Collegamento ipertestuale PHP PHP 16
M collegamento php mysql PHP 4
A form PHP prenotazione tramite query PHP 1
A Form php prenotazione di un azienda sanitaria locale presso studio medico PHP 1
F menù select dinamico da db in php PHP 3
L Problemi form Pagina php HTML e CSS 2
L php mysql non salva solo id PHP 21
L php mysql cerca e visualizza pagina PHP 0
F Il codice php è giusto? PHP 2
R Aggiornare record mysql con Ajax, jQuery e php Ajax 2
A invio massivo dati a file php Javascript 4
Z MySql injection PHP PHP 1
V PHP form intersecate PHP 0
I [Offro][Retribuito] Programmatore Php Offerte e Richieste di Lavoro e/o Collaborazione 0
P Funzione jQuery Ajax invio file a php jQuery 1
C Dopo chiusura del tag php la stringa html va a capo PHP 1
E Transaction php PHP 11
B ciclare file xml con PHP PHP 1
L Estrazione dati php Database 6
A Aiuto per pagina php PHP 0
E Php select option e ajax PHP 23
I Aiuto php Dependent Lookup PHP 0
T arretramento versione PHP... PHP 3
D problema php mysql PHP 1
D problema php mysql PHP 1
E Barra di avanzamento codice PHP PHP 4
G creazione menu a tendina e invio a pagina php PHP 1
A inserire variabile php colore in div html PHP 2
Z Video protetto con PHP PHP 0
Z Problema di sincronizzazione PAYPAL con PHP PHP 1
I Eecuzione di javascript in ciclo foreach php. PHP 7
S Libreria PHP per creare file dwg o dxf PHP 0
A [cerco - retribuito] Sviluppatore Php freelance per progetti vari Offerte e Richieste di Lavoro e/o Collaborazione 2
L Google chart php mysql PHP 2
R Download file multipli da directory php PHP 0
F pagina dinamica PHP PHP 3
P Rimozione automatica url da sitemap.xml con PHP PHP 1
L php tinymce mi duplica la classe label PHP 3
S Errore PHP - Notice: Undefined index ... PHP 14
N file manager da php 5 a 7 PHP 15
M Utilizzare la funzione mysql_num_rows() in PHP 5 PHP 3
elpirata Update dinamico informazioni scritte in una pagina php jQuery 11

Discussioni simili