ciao a tutti, ho un problema che mi affigge da diversi giorni e non riesco a venirne a capo, alla fine ho deciso di affidarmi a voi..
Devo fare un controllo con ajax per verificare che l'email inserita non sia ancora presente nel database.
Se c'è già mi mette l'input text in rosso e non mi invia il form.
Il controllo lo faccio sia quando esco dall'input, sia quando invio il form.
Quando esco dall'input mi fa il controllo ed è tutto ok, quando invio il form mi fa il controllo, ma rimane sempre sulla stessa pagina.
Non so se mi sono spiegato bene, cmq vi allego i miei file:
codice:
<?session_start();
include 'database.php';
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="it" lang="it">
<head>
<script type="text/javascript">
$(document).ready(function(){
//global vars
var form = $("#customForm");
var email = $("#email");
var emailError = $("#emailError");
//On blur
email.blur(validaAjaxEmail);
email.blur(validaEmail);
//On Submitting
form.submit(function(){
if(validaEmail() & validaAjaxEmail())
return true;
else
return false;
});
//validation functions
function validaAjaxEmail(){
$.ajax({
url: 'AJAXvalidate.php',
type: "POST",
data: "email="+email.val(),
success: function(data) {
//if it's NOT valid
if(data=="error"){
email.addClass("error");
emailError.html("E-mail già presente");
emailError.addClass("error");
return false;
}
//if it's valid
else{
return true;
}
}
});
}
function validaEmail(){
//testing regular expression
var a = $("#email").val();
var filter = /^[a-zA-Z0-9]+[a-zA-Z0-9_.-]+[a-zA-Z0-9_-]+@[a-zA-Z0-9]+[a-zA-Z0-9.-]+[a-zA-Z0-9]+.[a-z]{2,4}$/;
//if it's valid email
if(filter.test(a)){
email.removeClass("error");
emailError.text("");
emailError.removeClass("error");
return true;
}
//if it's NOT valid
else{
email.addClass("error");
emailError.text("Inserisci un'email valida");
emailError.addClass("error");
return false;
}
}
});
</script>
</head>
<body>
<div id="container">
<div id="destra">
<form method="get" id="customForm" class="customForm" action="pagina.php">
<label for="email">E-mail<span class="red">*</span><span id="emailError"></span></label>
<input id="email" name="email" type="text" class="registra" value="" />
<input class="submit" type="submit" value="Salva le modifiche" />
</form>
</div>
</div>
</body>
</html>
e il file per il controllo richiamato da ajax
codice:
<?session_start();
include 'database.php';
/**
* funzione per verificare se l'email esiste gia'
*/
function isset_email($email) //non conto l'email attuale dell'utente
{
$email = trim($email);
$query = "SELECT COUNT(*) AS conta FROM utenti WHERE email='".addslashes(utf8_decode($email))."'";
$result = mysql_query($query) or die(mysql_error());
$row = mysql_fetch_array($result);
if($row['conta']>=1)
{
return TRUE; // true se utente esiste
}
else
{
return FALSE;
}
}
/**
* PROCESSIAMO LA RICHIESTA AJAX
*/
if(isset($_POST['email'])) //viene da pagina modifica dati personali
{
if(!isset_email($_POST['email']))
{
echo 'ok';
}
else
{
echo 'error';
}
}
?>
Se sapete aiutarmi ve ne sarei molto grato