Jump to content
Sign in to follow this  
salvo89

Inserire un controllo mysql per verificare se un e-mail esiste già in database

Recommended Posts

Salve,

scusate l'ignoranza ma è da un pomeriggio che sto fondendo dietro a sta cosa.

Ho questo codice:

 

<?php
# Effettuo la connessione a mysql mediante un file di configurazione:
include_once("inc/dbconfig.php");
$get_company = mysql_query("SELECT * FROM company");
$show_company = mysql_fetch_array($get_company);
$get_campaigns = mysql_query("SELECT * FROM campaigns WHERE active = 1");
$get_groups = mysql_query("SELECT * FROM groups");
# Variabili POST del form:
if(isset($_POST['create'])) {
$first_name = $_POST['first_name'];
$last_name = $_POST['last_name'];
$company_name = $_POST['company_name'];
$home_number = $_POST['home_number'];
$work_number = $_POST['work_number'];
$mobile_number = $_POST['mobile_number'];
$fax_number = $_POST['fax_number'];
$primary_number = $_POST['primary_number'];
$email_address = strtolower($_POST['email_address']);
$payment_terms = $_POST['payment_terms'];
$discount = $_POST['discount'];
$billing_email_address = strtolower($_POST['billing_email_address']);
# Genero una password in modo casuale:
$account_password = substr(md5(rand().rand()), 0, 5);
$campaign_id = $_POST['campaign_id'];
$group_id = $_POST['group_id'];
$billing_address = $_POST['billing_address'];
$billing_city = $_POST['billing_city'];
$billing_province = $_POST['billing_province'];
$billing_postal = $_POST['billing_postal'];
$billing_country = $_POST['billing_country'];
$shipping_address = $_POST['shipping_address'];
$shipping_city = $_POST['shipping_city'];
$shipping_province = $_POST['shipping_province'];
$shipping_postal = $_POST['shipping_postal'];
$shipping_country = $_POST['shipping_country'];
#Mi definisco le variabili utili all'invio di una mail di riepilogo
$oggetto = "Registrazione nuovo account";
$formato = "Gentile $first_name $last_name,\n\n In data odierna è stata effettuata la registrazione per diventare nuovo utente. Di seguito troverà tutte le credenziali per accedere al suo account.\nUsername: $billing_email_address\nPassword: $account_password\n\n In caso di problemi, non esiti a contattarci.\nGrazie per la collaborazione";

# Assegno un id di un dipendente utile per le fatture:
$employee_id = $_SESSION['employee_id'];
#Provvedo all'inserimento in db
$doSQL = "INSERT INTO clients (first_name, last_name, company_name, home_number, work_number, mobile_number, fax_number, primary_number, email_address, payment_terms, discount, billing_email_address, account_password, campaign_id, group_id, billing_address, billing_city, billing_province, billing_postal, billing_country, shipping_address, shipping_city, shipping_province, shipping_postal, shipping_country, employee_id) VALUES ('$first_name', '$last_name', '$company_name', '$home_number', '$work_number', '$mobile_number', '$fax_number', '$primary_number', '$email_address', '$payment_terms', '$discount', '$billing_email_address', '$account_password', '$campaign_id', '$group_id', '$billing_address', '$billing_city', '$billing_province', '$billing_postal', '$billing_country', '$shipping_address', '$shipping_city', '$shipping_province', '$shipping_postal', '$shipping_country', '$employee_id')";
mysql_query($doSQL) or die(mysql_error());
$client_id = mysql_insert_id();
# E poi invio la mail
mail($billing_email_address, $oggetto, $formato, "From: Prova Email <noreply@provaemail.it>");
# Alla fine reindirizzo l'utente su questa pagina:
header("Location: conferma_registrazione.php?client_id=$client_id");
}
?>

 

In pratica vorrei fare in modo che prima di inserirmi i dati nel database, venisse fatto un controllo alla cella "email_address" presente nella tabella "clients" in modo che se l'indirizzo e-mail non è ancora presente nel DB, procedesse all'inserimento dei dati nel DB, mentre se l'email è già registrata apparisse un alert javascript che blocchi tutto e non inserisca nulla nel db.

 

Aiuto vi prego :)

Share this post


Link to post
Share on other sites
Ciao salvo89,

 

devi fare una query del tipo:

SELECT campo FROM tabella WHERE email = 'indirizzo@email.ext' LIMIT 1

 

Lo avevo fatto dicendogli anche che se il mysql_num_rows($doSQL) >= 1 allora doveva stampartmi l'alert, altrimenti procedeva con l'inserimento, ma inserisce ugualmente e non effettua il controllo.

Share this post


Link to post
Share on other sites

Io ho fatto così per il mio ex CMS (buttato)

 

$email_control = mysql_query("SELECT mail FROM users WHERE mail = '$mail'");
if(mysql_num_rows($email_control)) {
print "Email già utilizzata";
} else {
//REGISTRAZIONE
}
?>

 

Spero sia giusto, in sostanza se il row contato è vero (true) vuol dire che la query è andata buon fine e quindi esiste l'email nella tabella 'users'

Altrimenti registra

 

Vedi tu..

E' impossibile che con questo codice, anche se fosse sbagliato non effettua il controllo :)

Share this post


Link to post
Share on other sites
Io ho fatto così per il mio ex CMS (buttato)

 

$email_control = mysql_query("SELECT mail FROM users WHERE mail = '$mail'");
if(mysql_num_rows($email_control)) {
print "Email già utilizzata";
} else {
//REGISTRAZIONE
}
?>

 

Spero sia giusto, in sostanza se il row contato è vero (true) vuol dire che la query è andata buon fine e quindi esiste l'email nella tabella 'users'

Altrimenti registra

 

Vedi tu..

E' impossibile che con questo codice, anche se fosse sbagliato non effettua il controllo :)

 

Funziona. Il mio era simile solo che gli facevo fare un controllo che se campo era uguale o maggiore di 1 mi stampava errore altrimenti no. Così non fungeva.

 

Grazie

Share this post


Link to post
Share on other sites
Funziona. Il mio era simile solo che gli facevo fare un controllo che se campo era uguale o maggiore di 1 mi stampava errore altrimenti no. Così non fungeva.

 

Grazie

 

True = 1

False = 0

Mi pare sia così

Se tu fai un controllo del genere drovrebbe funzionare:

$email_control = mysql_query("SELECT mail FROM users WHERE mail = '$mail'");
if($email_control == 1) {
#EMAIL GIA' UTILIZZATA
} else {
#PROCEDI CON LA REG.
}

 

Non ne sono comunque sicuro...

Buona fortuna con il tuo sito/progetto

 

Francesco.

Share this post


Link to post
Share on other sites
Io invece per questo problema nel mio DB usavo un altro sistema, facevo fare il controllo direttamente al DB impostando il campo come unique.

Poi se ti da un errore in inserimento significa che è un doppione

 

Se arrivato giusto con un anno di ritardo :D

Share this post


Link to post
Share on other sites
Io invece per questo problema nel mio DB usavo un altro sistema, facevo fare il controllo direttamente al DB impostando il campo come unique.

Poi se ti da un errore in inserimento significa che è un doppione

 

Il che può anche andare, ma poi devi gestire anche tutte le casistiche di errore, perchè un errore in inserimento non è detto che si presenti solo e soltanto nel caso di conflitto.

Share this post


Link to post
Share on other sites
Il che può anche andare, ma poi devi gestire anche tutte le casistiche di errore, perchè un errore in inserimento non è detto che si presenti solo e soltanto nel caso di conflitto.

 

Sisi certo, ma in ogni caso è buona cosa gestire il maggior numero di errori per evitare blocchi. Per degli errori in inserimento si possono sempre verificare

Share this post


Link to post
Share on other sites

Please sign in to comment

You will be able to leave a comment after signing in



Sign In Now
Sign in to follow this  

×