due query per due tabelle

  • Creatore Discussione Creatore Discussione efisio
  • Data di inizio Data di inizio

efisio

Utente Attivo
5 Ago 2008
95
0
0
qualcuno potrebbe aiutarmi a comprendere come posso inserire i dati in due tabelle dello stesso DB utilizzando un form html?
Premetto che con una singola tabella non ho problemi, ma con due non riesco nell'intento.
Non avendo un gran che di conoscenze, ho pensato che ci volessero due query rivolte a due tabelle distinte, ma non funziona????
vi posto le query di seguito:

$query="INSERT INTO iscritti ( nome, cognome, provincia, via, mail, localita, telefono) VALUES ('$nome', '$cognome', '$provincia', '$via', '$mail, '$localita', '$telefono')";
$query="INSERT INTO discipline ( discipline) VALUES ('$discipline')";

Che fare?
 
ciao, prova così al massimo non funzia

PHP:
$query1="INSERT INTO iscritti ( nome, cognome, provincia, via, mail, localita, telefono) VALUES ('$nome', '$cognome', '$provincia', '$via', '$mail, '$localita', '$telefono')";
$query2="INSERT INTO discipline ( discipline) VALUES ('$discipline')";

$inser1=mysql_query($query1);
$inser2=mysql_query($query2);
 
Ciao Borgo italia,
ho provato quanto mi hai detto e quello che sono riuscito a fare e inserire i dati nella tabella, riguardanti la seconda query, mentre quelli della prima non sono stati memorizzati.
E' possibile un'altra soluzione?
grazie

Efisio
 
ciao
verifica che i valori della qery si giusto
inserisci

$query1="INSERT INTO iscritti ( nome, cognome, provincia, via, mail, localita, telefono) VALUES ('$nome', '$cognome', '$provincia', '$via', '$mail, '$localita', '$telefono')";
var_dump($query1);

e verifca se i valori sono giusti anche come corrispondenza con i nomi dei campi
 
Buongiorno Borgo italia,
sono in alto mare, ma ancora non affogo...
potresti darmi una mano con questo problema appena hai del tempo?
Grazie
Efisio
ti posto quanto ho scritto.


$query1="INSERT INTO iscritti ( nome, cognome, provincia, via, mail, localita, telefono) VALUES ('$nome', '$cognome', '$provincia', '$via', '$mail, '$localita', '$telefono')";
$query2="INSERT INTO discipline (*discipline) VALUES ('$discipline')";

$inser1= mysql_query($query1);
$inser2= mysql_query($query2);*
 
Ciao, Borgo ti aveva suggerito di inserire la seguente riga nel codice, ma non sembra tu lo abbia ascoltato:

PHP:
var_dump($query1);

Inoltre, aggiungi anche:

PHP:
$inser1= mysql_query($query1) or die (mysql_error());

Esegui lo script e vedi cosa viene fuori. Se posti solamente il codice è difficile che qualcuno possa aiutarti.
 
ciao
Se posti solamente il codice è difficile che qualcuno possa aiutarti
satifal ha perfettamente ragione, in quanto le righe inserite sono correte, perchè l'errore/i nasce a monte
puo essere es.
1. non corrispondenza tra i nomi che hai scritto e nomi tabella, o il nome della tabella
2. uno ho più varabili sono vuote e cerchi di inserirle in un campo not null
verificato il punto uno e non funzia comunque, devi capire perchè hai una o piu variabili vuote.
a. se è voluto devi verificare che il campo accetti il valore null
b. se non voluto il perche, qualche post che non funzia?
 
sono propio una frana.
adesso il db mi dà questo rimando:
string(201) "INSERT INTO iscritti ( nome, cognome, provincia, via, mail, localita, telefono, discipline) VALUES ('giuseppe', 'garibaldi', 'LU', 'mazzini,12', '[email protected], 'viareggio', '113', 'Counsellor')" bool(false) You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'viareggio', '113', 'Counsellor')' at line 1
cosa devo fare?
ho visto quanto mi hai detto e mi sembra tutto corretto...ma...
grazie
efisio
 
Nel campo mail manca l'apice di chiusura come si evince dal messaggio di errore per cui devi aggiungerlo nella query:

PHP:
$query1="INSERT INTO iscritti ( nome, cognome, provincia, via, mail, localita, telefono) VALUES ('$nome', '$cognome', '$provincia', '$via', '$mail', '$localita', '$telefono')";
 
Grazie Satifal per avermi fatto notare dove avevo sbagliato.
ora riesco ad inserire i dati nella tabella, ma ancora navigo in alto mare riguardo all'inserimento in due tabelle distinte...
mi metto a lavoro prima di andare a lavoro.

buona giornata
Efisio
 
scusate se vi rispondo solo stamani,
allora provo ad esporre il problema.
Al momento ho una tabella (utenti) all'interno di un Db, la quale contiene una serie di campi. L'utente, tramite la compilazione di un form, invia i dati ad una pagina (salva.php), la quale processa i dati e li invia al DB e tramite una query, li inserisce nell'apposita tabella (utenti). Fino a qui nessun problema.
Il problema mi si è presentato quando ho deciso di inserire una seconda tabella, in modo da inviare, una voce del form ( mail) ad un'apposita tabella. A questo punto ho provato a mettere due query come mi era stato suggerito ma non funzionava, probabilmente perchè ho fatto qualche errore a monte ma non riesco a capire quale.
Al momento attuale ho la situazione con una sola tabella e una query.
ti posto quanto ho scritto:
file salva.php:

<?php
$host = 'localhost';
$user = 'root';
$password = 'root';
$database = 'utenti';

$nome=$_REQUEST['nome'];
$cognome=$_REQUEST['cognome'];
$luogo=$_REQUEST['provincia'];
$via=$_REQUEST['via'];
$mail=$_REQUEST['mail'];
$localita=$_REQUEST['localita'];
$telefono=$_REQUEST['telefono'];
$discipline=$_REQUEST['discipline'];


$db = mysql_connect($host, $user, $password)
or die ( "impossibile connetersi al server");
mysql_select_db($database, $db)
or die ("impossibile connettersi al daabasee");

$query="INSERT INTO iscritti ( nome, cognome, provincia, via, mail, localita, telefono, discipline) VALUES ('$nome', '$cognome', '$provincia', '$via', '$mail', '$localita', '$telefono', '$discipline')";

var_dump($query);//vedi se viene scritta giusta
$risult=mysql_query($query);
var_dump($risult);//TRUE se ok, FALSE se ko
echo mysql_error();
mysql_close($db);
?>

La tabella db è di tipo Myisam e i campi sono tutti warchar not null, con ID primary kei auto incremente e un timestamp automatico.

Come potrei procedere?

Grazie

Efisio
 
Ti consiglio di utilizzare i tag appositici per il codice e di utilizzare l'indentazione, rendono il codice più leggibile.

Prova questo, ho fatto in modo di gestire tutti gli errori in modo da sapere dove si interrompe lo script.
PHP:
<?php

$host = 'localhost';
$user = 'root';
$password = 'root';
$database = 'utenti';

$nome 		= trim(htmlspecialchars($_POST['nome']));
$cognome	= trim(htmlspecialchars($_POST['cognome']));
$luogo		= trim(htmlspecialchars($_POST['provincia']));
$via		= trim(htmlspecialchars($_POST['via']));
$mail		= trim(htmlspecialchars($_POST['mail']));
$localita	= trim(htmlspecialchars($_POST['localita']));
$telefono	= trim(htmlspecialchars($_POST['telefono']));
$discipline	= trim(htmlspecialchars($_POST['discipline']));


if(!($db = mysql_connect($host, $user, $password)))
{
	die("impossibile connetersi al database:<br />" . mysql_error());
}
if(!(mysql_select_db($database, $db)))
{
	die("impossibile connettersi al database:<br />" . mysql_error>());
}

$query = "INSERT INTO iscritti (nome, cognome, provincia, via, mail, localita, telefono, discipline)
	VALUES ('" . mysql_real_escape_string($nome) . "',
			'" . mysql_real_escape_string($cognome) . "',
			'" . mysql_real_escape_string($provincia) . "',
			'" . mysql_real_escape_string($via) . "',
			'" . mysql_real_escape_string($mail) . "',
			'" . mysql_real_escape_string($localita) . "',
			'" . mysql_real_escape_string($telefono) . "',
			'" . mysql_real_escape_string($discipline) . "')";

#var_dump($query); //vedi se viene scritta giusta
if(!($result = mysql_query($query)))
{
	die('Errore nella query<br />' . mysql_error() . '<br /><br /><pre>' . $query . '</pre>');
}
#var_dump($risult);//TRUE se ok, FALSE se ko
mysql_close($db);

?>
 
Ciao Federico,
ho mandato in esecuzione il codice che mi hai scritto e i dati sono stati inseriti correttamente nella tabella.
A questo punto, se volessi inserire il dato (mail) in una tabella separata, sempre dello stesso DB, come potrei procedere?

Grazie per il tempo che mi hai dedicato,
Efisio
 
Ciao Federico,
sono riuscito ad inserire il dato (mail) in una seconda tabella mediante il seguente codice:

$query="INSERT INTO iscritti ( nome, cognome, provincia, via, mail, localita, telefono, discipline) VALUES ('$nome', '$cognome', '$provincia', '$via', '$localita', '$telefono', '$discipline')";
$query_mail="INSERT INTO mail (email) VALUES ('$email')";


ora mi si aggiunge un nuovo problema.
come posso recuperare i dati dalle due tabelle?
grazie

Efisio
 
Con una SELECT. Ma son osicuro che la seconda tabella (quella della mail) conetiene un riferimento alla prima, quindi devi utilizzare le JOIN.

Ripeto, se non posti la struttura delle tabelle è difficile aiutarti.
 
Ciao Federico,
hai perfettamente ragione, ti posto i dati delle due tabelle.
prima tabella 'Utenti':

id int (10) null(no) extra (auto_increment);
nome varchar (20) null (no);
cognome varchar (20) null (no);
localita varchar (20) null (no);
via varchar (20) null (no);
telefono int (20) null (no);
discipline varchar (20) null (no);
descrizione text null (yes) (default) null;
data timestamp no (default) current_timestamp;
tipo Myisam.

Tabella Mail:

id int (10) null(no) extra (auto_increment);
email varchar (20) null (no).

ho trascritto i dati prendendoli dalle tabelle in phpmyadmin.
 
Se id della mail è uguale a quella degli user puoi fare così:
Codice:
SELECT u.*, m.email 
FROM Utenti AS u
	LEFT JOIN Mail AS m
		ON (u.id = m.id)
WHERE u.id =
in u.id dopo l'uguasle devi inserire l'id. Ovviamente l'id della mail deve essere uguale a quello di u quindi quando esegui l'INSER INTO devi fare due query inserendo lo stesso valore, non ti consiglio di inserire l'auto_increment, rischi di avere dei problemi poi nel caso uno non inserisca l'email.
 

Discussioni simili