[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
322
21
28
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
322
21
28
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
322
21
28
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
322
21
28
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
322
21
28
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
322
21
28
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
M Collegamento tra form html e script php PHP 4
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
F Cerco Hosting con VECCHIE versioni di php Hosting 0
Cosina Captcha php PHP 1
S passare un valore da un form a un file .php con metodo post PHP 4
N php msyql PHP 6
N php problemi a visualizzare video PHP 3
A menu a tendina php PHP 1
D protezione cartelle: blocco visualizzazione/scaricamento contenuto, ma abilitazione utilizzo dati da parte di file .php presenti sul sito Web Server 1
F Php date_diff PHP 1
K [PHP] Aggiungere caratteri ad una stringa in base alla lunghezza della stessa PHP 2
C Wp-admin a file php WordPress 5
Lino80 [Retribuito] Cerco programmatore php per modifica/inserimento funzione/valori da un plugin importer wordpress Offerte e Richieste di Lavoro e/o Collaborazione 0
csi Inviare file jpg in locale alla stampante con php PHP 0
M Passaggio variabili array php su un tasto jq PHP 3
E Php aggiornamento tabella PHP 9
G phpmailer e php 8.1 con estensione mysqli PHP 6
M Invio dati database via email php PHP 0
K [php] Problema con inner join PHP 4
K [php]form invio dati PHP 0
P Codifica caratteri speciali mysql php PHP 0
K [PHP] Problema con variabili concatenate. PHP 1
E Stampante termica escpos-php PHP 6
JeiMax Modifica codice php personalizzato PHP 2
G Come modificare un pdf in php PHP 1
U Link a doppio file PHP PHP 0
E PHP & jQuery PHP 8
N Passare array da php a javascript PHP 5
F Applicazione PHP/MySQL per prenotazioni: limitare il numero massimo di posti prenotabili PHP 20
L tipo boolean non funzionante su mariadb (mysql). E codice php 7.4. PHP 0
U PHP creare un file excel dopo ricerca nel DB PHP 0
M PHP/MySQL - Estrarre valori min e max di ogni gruppo PHP 5
F Php e fatturazione elettronica PHP 0
P lanciare script asp (o php) da jquery Javascript 1
Couting95 inserire dati da un file di testo in una tabella in php PHP 1
P Data scraping in PHP non funziona PHP 4
C Calcoli matematici in php PHP 5
F Scrivere dei dati in word con php PHP 0
D PHP leggere cartella di Windows PHP 1
I dominio aruba versione php server linux Domini 3
G Colorare menu select attraverso ricerca php PHP 0

Discussioni simili