Inserimento dati su più tabelle

wizard86

Utente Attivo
3 Ago 2009
31
0
0
Salve a tutti, usando il seguente codice per la registrazione degli utenti mi sono mi ritrovo davanti ad un grosso problema!

La prima query che inserisce email/password/id_categoria della tabella Login fa quel che deve.

La seconda query invece, dovrebbe inserire il resto dei dati insieme all'id generato dall'auto-increment dell'inserimento precedente nella tabella login... ecco questo non funziona, inoltre lo script va avanti e invia la mail di avvenuta registrazione all'utente, cosa che non dovrebbe accadere invece se tutto non va a buon fine.

PHP:
if ($nome == null || $cognome == null || $indirizzo == null || $cap == null || $citta == null || $provincia == null || $telefono == null || $email == null || $password == null) {
		echo "\n<div class='ui-messages ui-widget' id='msgs'>";
		echo "\n<div class='ui-messages-error ui-corner-all'>";
		echo "\n<span class='ui-messages-error-icon'></span>";
		echo "\n<ul>";
		echo "\n<li>";
		echo "\n<span class='ui-messages-error-summary'>Tutti i campi sono obbligatori</span>";
		echo "\n</li>";
		echo "\n</ul>";
		echo "\n</div>";
		echo "\n</div>";
	}
	
	else {

		$query = "INSERT INTO Login (id_categoria,email,password)
				          VALUES ('".$categoria."','".$email."','".$password."')";
		$id		= mysql_insert_id();
		$result = mysql_query($query);
		
		
		if (!$result) {
			echo ("<h2>Risultato Inserimento</h2>\r\n");
			echo ("Errore durante la registrazione di un nuovo utente<br/ >\r\n");
			echo mysql_errno() . ": " . mysql_error();
			echo ("<br />Riprova...<br />\n");
		}
		
		else {
		
			$querypvt = "INSERT INTO Privati (id_privato,nome,cognome,indirizzo,cap,citta,provincia,telefono)
					          VALUES ('".$id."','".$nome."','".$cognome."','".$indirizzo."','".$cap."','".$citta."','".$provincia."','".$telefono."')";
			
			$resultpvt = mysql_query($query);
		
			if (!$resultpvt) {
				echo ("<h2>Risultato Inserimento</h2>\r\n");
				echo ("Errore durante la registrazione di un nuovo utente<br/ >\r\n");
				echo mysql_errno() . ": " . mysql_error();
				echo ("<br />Riprova...<br />\n");
			}
		
			else {
	
				$emailda       = '[email protected]'; //Indirizzo usato per l'invio
				$destinatario  = $email. "\r\n";
				$header 	   = "From: Sito <".$emailda.">\r\n";
				$header  	  .= "MIME-Version: 1.0\r\n";
				$header 	  .= "Content-type: text/html; charset=iso-8859-1\r\n";
				$oggetto       = "Attivazione\r\n";
				$messaggio	   = "Registrazione su www.sito.it avvenuta con successo!<br />\r\n";
				$messaggio	  .= "Ti consigliamo di conservare con cura i dati di accesso.<br />\r\n";
				$messaggio	  .= "Email: ".$email."<br /> Password: ".$password."\r\n";
	
				//ini_set('sendmail_from', '[email protected]');
	
				if(mail($destinatario, $oggetto, $messaggio , $header)) {
					
					$rsl = ok;
					header("location: check.php?result=$rsl");
					exit();
				}
				else {
					echo "\n<div class='ui-messages ui-widget' id='msgs'>";
					echo "\n<div class='ui-messages-error ui-corner-all'>";
					echo "\n<span class='ui-messages-error-icon'></span>";
					echo "\n<ul>";
					echo "\n<li>";
					echo "\n<span class='ui-messages-error-summary'>".mysql_errno() . ": " . mysql_error()."</span>";
					echo "\n</li>";
					echo "\n</ul>";
					echo "\n</div>";
					echo "\n</div>";
				}
			}
		}
	}
 

wizard86

Utente Attivo
3 Ago 2009
31
0
0
Che errore stupido che avevo fatto!!! Grazie, ora funziona!!!
Una cosa ancora, guardando il codice che ho scritto io, pensi che possa migliorarlo in qualche modo?
 

alessandro1997

Utente Attivo
6 Ott 2009
5.302
1
0
26
Roma
alessandro1997.netsons.org
Potresti ottimizzarlo così:
PHP:
<?php
$params = array($nome, $cognome, $indirizzo, $cap, $citta, $provincia, $telefono, $email, $password);

if(in_array(null, $params))
{
	echo "\n<div class='ui-messages ui-widget' id='msgs'>";
	echo "\n<div class='ui-messages-error ui-corner-all'>";
	echo "\n<span class='ui-messages-error-icon'></span>";
	echo "\n<ul>";
	echo "\n<li>";
	echo "\n<span class='ui-messages-error-summary'>Tutti i campi sono obbligatori</span>";
	echo "\n</li>";
	echo "\n</ul>";
	echo "\n</div>";
	echo "\n</div>";
}
else
{
	$query = "INSERT INTO Login (id_categoria, email, password) VALUES ('{$categoria}', '{$email}', '{$password}')";
	$result = mysql_query($query);
	
	if(!$result)
	{
		echo ("<h2>Risultato Inserimento</h2>\r\n");
		echo ("Errore durante la registrazione di un nuovo utente<br/ >\r\n");
		echo mysql_errno() . ": " . mysql_error();
		echo ("<br />Riprova...<br />\n");
	}
	else
	{
		$id = mysql_insert_id();
		
		$querypvt = "INSERT INTO Privati (id_privato,nome,cognome,indirizzo,cap,citta,provincia,telefono) ";
		$querypvt .= "VALUES ('{$id}', '{$nome}', '{$cognome}', '{$indirizzo}', '{$cap}', '{$citta}', '{$provincia}', '{$telefono}')";

		$resultpvt = mysql_query($query);

		if(!$resultpvt)
		{
			echo ("<h2>Risultato Inserimento</h2>\r\n");
			echo ("Errore durante la registrazione di un nuovo utente<br/ >\r\n");
			echo mysql_errno() . ": " . mysql_error();
			echo ("<br />Riprova...<br />\n");
		}
		else
		{
			$emailda = '[email protected]'; //Indirizzo usato per l'invio
			$destinatario = $email. "\r\n";
			$header = "From: Sito <".$emailda.">\r\n";
			$header .= "MIME-Version: 1.0\r\n";
			$header .= "Content-type: text/html; charset=iso-8859-1\r\n";
			$oggetto = "Attivazione\r\n";
			$messaggio = "Registrazione su www.sito.it avvenuta con successo!<br />\r\n";
			$messaggio .= "Ti consigliamo di conservare con cura i dati di accesso.<br />\r\n";
			$messaggio .= "Email: ".$email."<br /> Password: ".$password."\r\n";

			if(mail($destinatario, $oggetto, $messaggio, $header))
			{
				$rsl = 'ok';
				header("Location: check.php?result={$rsl}");
			}
			else
			{
				echo "\n<div class='ui-messages ui-widget' id='msgs'>";
				echo "\n<div class='ui-messages-error ui-corner-all'>";
				echo "\n<span class='ui-messages-error-icon'></span>";
				echo "\n<ul>";
				echo "\n<li>";
				echo "\n<span class='ui-messages-error-summary'>".mysql_errno() . ": " . mysql_error()."</span>";
				echo "\n</li>";
				echo "\n</ul>";
				echo "\n</div>";
				echo "\n</div>";
			}
		}
	}
}
?>
Anche se ci sarebbero molte altre cose da sistemare. Ad esempio non effettui l'escape dei caratteri, e questo ti espone ad un alto rischio di SQL injection (vedi la funzione mysql_real_escape_string). E poi il telefono e il CAP dovrebbero essere esclusivamente numerici (puoi usare is_numeric).
 

wizard86

Utente Attivo
3 Ago 2009
31
0
0
I controlli sui tipi di campo li effettuo già con jquery, mentre con php faccio solo questo

PHP:
if (!empty($_POST['submit'])) {
	$nome 	    = trim($_POST["nome"]);
	$cognome 	= trim($_POST["cognome"]);
	$indirizzo 	= trim($_POST["indirizzo"]);
	$cap 	    = trim($_POST["cap"]);
	$citta  	= trim($_POST["citta"]);
	$provincia 	= trim($_POST["provincia"]);
	$telefono 	= trim($_POST["telefono"]);
	$email		= trim($_POST["email"]);
	$password 	= trim(md5($_POST["password"]));
	$categoria  = trim($_POST["id_categoria"]);

	if(get_magic_quotes_gpc())
	{
		$nome      = stripslashes($nome);
		$cognome   = stripslashes($cognome);
		$indirizzo = stripslashes($indirizzo);
		$cap       = stripslashes($cap);
		$citta 	   = stripslashes($citta);
		$provincia = stripslashes($provincia);
		$telefono  = stripslashes($telefono);
		$password  = stripslashes($password);
		$email	   = stripslashes($email);
	}

	$password = mysql_real_escape_string($password);
	$email	  = mysql_real_escape_string($email);
 

alessandro1997

Utente Attivo
6 Ott 2009
5.302
1
0
26
Roma
alessandro1997.netsons.org
I controlli con jQuery sono poco sicuri, perché basta disabilitare Javascript per eluderli. Ti consiglio quindi di effettuarli anche nello script. E poi, questo cosa significa?
PHP:
    if(get_magic_quotes_gpc())
    {
        $nome      = stripslashes($nome);
        $cognome   = stripslashes($cognome);
        $indirizzo = stripslashes($indirizzo);
        $cap       = stripslashes($cap);
        $citta        = stripslashes($citta);
        $provincia = stripslashes($provincia);
        $telefono  = stripslashes($telefono);
        $password  = stripslashes($password);
        $email       = stripslashes($email);
    }

    $password = mysql_real_escape_string($password);
    $email      = mysql_real_escape_string($email);
Modifica tutto così:
PHP:
if(!get_magic_quotes_gpc())
{
	foreach($_POST as $key => $value)
		$_POST[$key] = mysql_real_escape_string($value);
}
 

wizard86

Utente Attivo
3 Ago 2009
31
0
0
scusa questo lo devo inserire subito dopo questo o devo sostituirlo pure a questo?

PHP:
if (!empty($_POST['submit'])) {
    $nome         = trim($_POST["nome"]);
    $cognome     = trim($_POST["cognome"]);
    $indirizzo     = trim($_POST["indirizzo"]);
    $cap         = trim($_POST["cap"]);
    $citta      = trim($_POST["citta"]);
    $provincia     = trim($_POST["provincia"]);
    $telefono     = trim($_POST["telefono"]);
    $email        = trim($_POST["email"]);
    $password     = trim(md5($_POST["password"]));
    $categoria  = trim($_POST["id_categoria"]);
 

alessandro1997

Utente Attivo
6 Ott 2009
5.302
1
0
26
Roma
alessandro1997.netsons.org
Inseriscilo in questo punto:
PHP:
if (!empty($_POST['submit'])) { 
    // QUI INSERISCI IL CODICE

    $nome         = trim($_POST["nome"]); 
    $cognome     = trim($_POST["cognome"]); 
    $indirizzo     = trim($_POST["indirizzo"]); 
    $cap         = trim($_POST["cap"]); 
    $citta      = trim($_POST["citta"]); 
    $provincia     = trim($_POST["provincia"]); 
    $telefono     = trim($_POST["telefono"]); 
    $email        = trim($_POST["email"]); 
    $password     = trim(md5($_POST["password"])); 
    $categoria  = trim($_POST["id_categoria"]);
 
Discussioni simili
Autore Titolo Forum Risposte Data
J Inserimento dati in db da due o più form PHP 0
L inserimento form dati multipli ? PHP 0
J Form inserimento dati in database Ajax 1
A Inserimento dati nel database tramite form + altre operazioni PHP 18
Alex_70 Inserimento dati a cascata PHP 204
T Da xsd a xml ed inserimento dati in excel XML 0
S [PHP] email con inserimento dati nel database PHP 23
G [Javascript] Errore inserimento dati Backend Node.js e workbench Javascript 1
B [PHP] Creare PDF dopo inserimento dati form PHP 4
C [PHP] Form con Inserimento dati dalla maschera e un menù a discesa che prende i dati dal db PHP 1
E Inserimento dati da PHP in tabella MySQL PHP 5
E Form inserimento dati con JavaScript Javascript 0
K [PHP] Inserimento dati database con postgres PHP 2
K [PHP + MYSQL ] Inserimento dati in database da form dinamico PHP 13
M Inserimento dati checkbox multipli in db da ajax a php PHP 1
M [PHP] errore in semplie form inserimento dati PHP 7
S [PHP] Inserimento dati su tabelle collegate 1-m PHP 17
M [PHP] controllo inserimento dati un un form PHP 4
cris8380 [PHP] Generare file pdf con inserimento dati PHP 34
cris8380 Inserimento dei dati automatici mediante numero di tessera. PHP 21
G mysql - problemi inserimento dati nel database, consigli. MySQL 3
P problemi inserimento dati PHP 1
S Trigger con inserimento dati preesistenti MySQL 0
G Estrazioni dati dal database e inserimento nella pagina html Database 11
A Aiuto form inserimento dati PHP 3
T Problema inserimento dati in phpmyadmin PHP 2
P scritta di avviso inserimento dati corretti che non vuole scendere verso il basso PHP 4
D Verifica inserimento dati form PHP 12
M Problema inserimento dati in sqlite Sviluppo app per Android 1
L Cerco lavoro retribuito,mi offro come articolista,inserimento dati,promozione siti,blog,forum Offerte e Richieste di Lavoro e/o Collaborazione 1
M Problema con modulo registrazione e inserimento dati in database PHP 8
otto9due Piccolo problemino su inserimento dati db da form PHP 5
M chiusura colorbox dopo inserimento dati in un database tramite form PHP 0
S Inserimento dati in colonna mysql PHP 10
N Inserimento dati in db che avviene due volte PHP 1
K Controllo esistenza dati e inserimento in db ASP.NET 2
B Problema inserimento dati con apostrofo MySQL 1
M [RISOLTO] inserimento dati db PHP 22
L Inserimento dati nel database. PHP 3
M Inserimento dati in db mysql dopo aver confermato e-mail PHP 7
D tabelle e inserimento dati nel database PHP 2
P Inserimento in tabella da select + altri dati MySQL 2
G Arresto dello script per inserimento dati. PHP 4
P Problemi inserimento dati con checkbox multiplo PHP 17
P Problemi inserimento dati database tramite form PHP 12
P Controllo inserimento dati Javascript 6
Z Aiuto! problemi di inserimento dati da form PHP 9
lab php e html - inserimento di dati in database e aggiornamento della pagina html PHP 2
EffeElle Php problema su inserimento dati mysql PHP 47
V (cerco retribuito lavoro) - inserimento dati/data entry lavoro a cottimo Offerte e Richieste di Lavoro e/o Collaborazione 0

Discussioni simili