Due tabelle con un unico form

Bizio2009

Utente Attivo
12 Giu 2009
310
0
0
Ciao! Volevo sapere per favore se era possibile mandare con un unico form due tabelle, ho necessità che gli stessi identici dati vengano trascritti due volte. Ho provato così ma funziona male nel senso che mi dà doppio cliente inserito nei due documenti...e non credo io debba agire nell'action del form.

Vi posto il codice un pò tagliato ma tanto per capire:

PHP:
$query="INSERT INTO inserimento_dati (
accettato_da,
cognome,  
nome,  
luogo_di_nascita,  
data_di_nascita,  
eta, 
 
$query = "SELECT * FROM inserimento_dati ORDER BY data_registrazione";  
$risultato = mysql_query( $query ) or die ( "Query '$query' fallita:::::" . mysql_error() );
 
while ( $inserimento_dati = mysql_fetch_array( $risultato ) )
 
<td><b>P  </b>  " . stripslashes($inserimento_dati ['id_cl']) . "</td></tr>  
                <td><b>ACCETTATO DA:  </b>  " . stripslashes($inserimento_dati['accettato_da']) . "</td></tr>
                <td><a href=\"accettazione2.php\">COGNOME " . stripslashes($inserimento_dati['cognome']) . "</a></td></tr>
                <td><b>NOME:</b>  " . stripslashes($inserimento_dati['nome']) . "</td></tr> 
 
$query="INSERT INTO archivio_dati (
accettato_da,
cognome,  
nome,  
luogo_di_nascita,  
data_di_nascita,  
eta, 
residenza,  
via,
 
 
$query = "SELECT * FROM archivio_dati ORDER BY data_registrazione";  
$risultato = mysql_query( $query ) or die ( "Query '$query' fallita:::::" . mysql_error() );  

while ( $archivio_dati = mysql_fetch_array( $risultato ) )

Grazie!
 
Ciao! Volevo sapere per favore se era possibile mandare con un unico form due tabelle, ho necessità che gli stessi identici dati vengano trascritti due volte. Ho provato così ma funziona male nel senso che mi dà doppio cliente inserito nei due documenti...e non credo io debba agire nell'action del form.

Non ho ben capito cosa vuol dire "mandare con un unico form due tabelle" e a cosa ti riferisci parlando di "documenti". Ad ogni modo ipotizzo che tu voglia inserire gli stessi dati in 2 tabelle, inserimento_dati e archivio_dati.

In questo caso dovresti fare così:
PHP:
$query="INSERT INTO inserimento_dati (
accettato_da,
cognome,  
nome,  
luogo_di_nascita,  
data_di_nascita,  
eta, ...);
 
$risultato = mysql_query( $query ) or die ( "Query '$query' fallita:::::" . mysql_error() );

// qui è finito il primo inserimento

$query="INSERT INTO archivio_dati (
accettato_da,
cognome,  
nome,  
luogo_di_nascita,  
data_di_nascita,  
eta, 
residenza,  
via, ...);

$risultato = mysql_query( $query ) or die ( "Query '$query' fallita:::::" . mysql_error() );  

// qui è finito il secondo inserimento


// lettura da prima tabella
$query = "SELECT * FROM inserimento_dati ORDER BY data_registrazione";   
while ( $inserimento_dati = mysql_fetch_array( $risultato ) )
{
      // visualizzazione record
} 

// lettura seconda tabella
$query = "SELECT * FROM archivio_dati ORDER BY data_registrazione"; 
while ( $archivio_dati = mysql_fetch_array( $risultato ) )  
{
      // visualizzazione record
}

Se non è la soluzione che cercavi prova a spiegare meglio cosa vuoi ottenere. Grazie :)
 
Ciao, ho provato ma mi dà 2 warning

Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in c:\programmi\easyphp1-8\www\inserimento_dati.php

Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in c:\programmi\easyphp1-8\www\inserimento_dati.php

Il codice è questo, non vorrei aver sbagliato qualcosa...

PHP:
$query="INSERT INTO inserimento_dati (
accettato_da,
cognome,  
nome)  
VALUES('" . 
addslashes ( $_POST['accettato_da'] ) . "', '" .   
addslashes ( $_POST['cognome'] ) . "', '" .   
addslashes ( $_POST['nome'] ) . "', '" .      


$risultato =  mysql_query( $query ) or die ( "query '$query' fallita::::" . mysql_error() );  


$query="INSERT INTO archivio_dati (
accettato_da,
cognome,  
nome)  
VALUES('" . 
addslashes ( $_POST['accettato_da'] ) . "', '" .   
addslashes ( $_POST['cognome'] ) . "', '" .   
addslashes ( $_POST['nome'] ) . "', '" .      


$risultato =  mysql_query( $query ) or die ( "query '$query' fallita::::" . mysql_error() );  


// lettura da prima tabella 
$query = "SELECT * FROM inserimento_dati ORDER BY data_registrazione";    
while ( $inserimento_dati = mysql_fetch_array( $risultato ) ) 

      // visualizzazione record 

echo "<table> 

<head>
<style>
table { 
border: solid 2px #000000; 
text-align: center; 
} 
td { 
solid 1px #000000; 
color: Black; 
background: #F1EBAD; 
}
</style> 
</head>



           <tr>

                 <td><b>ACCETTATO DA:  </b>  " . stripslashes($inserimento_dati_paziente['accettato_da']) . "</td></tr>
                <td><a href=\"ac2.php\">COGNOME " . stripslashes($inserimento_dati_paziente['cognome']) . "</a></td></tr>
                <td><b>NOME:</b>  " . stripslashes($inserimento_dati_paziente['nome']) . "</td></tr> 
                
 

// lettura seconda tabella 
$query = "SELECT * FROM archivio_dati ORDER BY data_registrazione";  
while ( $archivio_dati = mysql_fetch_array( $risultato ) )   

     echo "<table> 

<head>
<style>
table { 
border: solid 2px #000000; 
text-align: center; 
} 
td { 
solid 1px #000000; 
color: Black; 
background: #F1EBAD; 
}
</style> 
</head>



           <tr>

                 <td><b>ACCETTATO DA:  </b>  " . stripslashes($archivio_dati_paziente['accettato_da']) . "</td></tr>
                <td><a href=\"accettazione2.php\">COGNOME " . stripslashes($archivio_dati_paziente['cognome']) . "</a></td></tr>
                <td><b>NOME:</b>  " . stripslashes($archivio_dati_paziente['nome']) . "</td></tr>

Cosa ho sbagliato?

Grazie moltissime! :)
 
Scusa, colpa mia! Mancano le due istruzioni per eseguire la query :p
Codice:
// lettura da prima tabella 
$query = "SELECT * FROM inserimento_dati ORDER BY data_registrazione";    
[COLOR="Red"]$risultato =  mysql_query( $query ) or die ( "query '$query' fallita::::" . mysql_error() );  [/COLOR]
while ( $inserimento_dati = mysql_fetch_array( $risultato ) ) 

...

// lettura seconda tabella 
$query = "SELECT * FROM archivio_dati ORDER BY data_registrazione";  
[COLOR="red"]$risultato =  mysql_query( $query ) or die ( "query '$query' fallita::::" . mysql_error() );  [/COLOR]
while ( $archivio_dati = mysql_fetch_array( $risultato ) )   

...
 
Ti ringrazio, ora non mi da errori ma...mi scrive in inserimento_dati doppio cliente e in archivio_dati anche (doppio cliente) solo che il secondo cliente non mette il nominativo....
 
Questo dipende dal resto dello script o da come viene richiamato questo script. Le query inseriscono un solo record in entrambe le tabelle.

Lo stile della tabella ti conviene metterlo prima del while anziché all'interno e all'interno del while userei solo i tag tr e td creando una sola tabella (<table> prima del while e </table> dopo il while).
 
Il form è puntato sulla pagina "inserimento_dati.php" infatti quando vado a vedere la pagina "archivio_dati.php" mi vengono fuori i dati del cliente (doppi...uno nominato e l'altro no) ma anche tutte le variabili da definire...e anche lì è un problema...come faccio a definirle se non posso fare il form?

Due problemi in uno :hammer:
 
Ti riposto praticamente tutto il codice magari trovi qualcosa che io non trovo...

PHP:
//inserimento dei nuovi dati  
$query="INSERT INTO inserimento_dati (
accettato_da,
cognome,  
nome)  
VALUES('" . 
addslashes ( $_POST['accettato_da'] ) . "', '" .   
addslashes ( $_POST['cognome'] ) . "', '" .   
addslashes ( $_POST['nome'] ) . "', '" .      

$risultato =  mysql_query( $query ) or die ( "query '$query' fallita::::" . mysql_error() );   


//inserimento dei nuovi dati  
$query="INSERT INTO archivio_dati (
accettato_da,
cognome,  
nome)  
VALUES('" . 
addslashes ( $_POST['accettato_da'] ) . "', '" .   
addslashes ( $_POST['cognome'] ) . "', '" .   
addslashes ( $_POST['nome'] ) . "', '" .      

$risultato =  mysql_query( $query ) or die ( "query '$query' fallita::::" . mysql_error() );   


// qui è finito il secondo inserimento 


// lettura da prima tabella 
$query = "SELECT * FROM inserimento_dati ORDER BY data_registrazione"; 
$risultato =  mysql_query( $query ) or die ( "query '$query' fallita::::" . mysql_error() );   
while ( $inserimento_dati = mysql_fetch_array( $risultato ) ) 

      // visualizzazione record 

echo "<table> 

<head>
<style>
table { 
border: solid 2px #000000; 
text-align: center; 
} 
td { 
solid 1px #000000; 
color: Black; 
background: #F1EBAD; 
}
</style> 
</head>



           <tr>

                
                 <td><b>ACCETTATO DA:  </b>  " . stripslashes($inserimento_dati['accettato_da']) . "</td></tr>
                <td><a href=\"accettazione2.php\">COGNOME " . stripslashes($inserimento_dati['cognome']) . "</a></td></tr>
                <td><b>NOME:</b>  " . stripslashes($inserimento_dati['nome']) . "</td></tr> 
 

// lettura seconda tabella 
$query = "SELECT * FROM archivio_dati ORDER BY data_registrazione";  
$risultato =  mysql_query( $query ) or die ( "query '$query' fallita::::" . mysql_error() );



while ( $archivio_dati = mysql_fetch_array( $risultato ) )   

     echo "<table> 

<head>
<style>
table { 
border: solid 2px #000000; 
text-align: center; 
} 
td { 
solid 1px #000000; 
color: Black; 
background: #F1EBAD; 
}
</style> 
</head>



           <tr>

                 <td><b>ACCETTATO DA:  </b>  " . stripslashes($archivio_dati['accettato_da']) . "</td></tr>
                <td><a href=\"accettazione2.php\">COGNOME " . stripslashes($archivio_dati['cognome']) . "</a></td></tr>
                <td><b>NOME:</b>  " . stripslashes($archivio_dati['nome']) . "</td></tr>

Grazie Programmatore! :)
 
Secondo me dovresti fare un attimino un passo indietro.
Cosa intendi quanto parli di form, tabelle e documenti e quali sono secondo te le eventuali differenze tra di essi.
Hai chiare le eventuali differenze, il funzionamento e le relazioni esistenti tra html, php e mysql?
Come dovrebbe funzionare, in maniera concettuale, un semplice giro di una pagina che prende dei dati in input esegue una query sul DB
utilizzando tali dati e restituisce a video i record individuati?
 
Ultima modifica:
Sì sì, ho preso in considerazione questo: per il mio progettino mi serve un form.html (già fatto), che lo stampi due volte in maniera identica nel documento X.php.
 
Secondo me il problema è nel form. Prima dicevi che ti dà che alcune variabili non sono definite (oltre ad altri problemi di dati assenti). Se le variabili non definite sono un sottoinsieme di {accettato_da, cognome,nome} allora è un problema di form. Questi nomi infatti devono essere presenti nel form che li passa allo script php nel vettore $_POST (l'ho spiegato molto "con le mani" :D). A quel punto il form non conta più niente e analizzeremo altri errori (se non erano effetti collaterali).
Quindi... è meglio se posti il codice del form :)
 
Ciao! Grazie per le risposte innanzitutto!

Il problema è che io ho un unico form...mi spiego meglio...io compilo un unico form e i dati mi vanno in elenco_clienti.php ma vorrei che gli stessi dati andassero anche in un'altra pagina...archivio_clienti.php, ma a questo punto non credo si possa fare senza fare un secondo form...purtroppo.

Grazie!

Ciao!!!
 
Hai ragione, volevo sapere se era possibile fare una cosa del genere, ma mi sono reso conto di no.

Grazie per la risposta programmatore.
Ciao!!!
 

Discussioni simili