// Check if user with that email already exists
$result = $connect->query("SELECT * FROM users WHERE email='$email'") or die($connect->error());
// We know user email exists if the rows returned are more than 0 als het email adres niet bestaat gaat de procedure verder.
if ( $result->num_rows > 0 ) {
echo ('true'); //good to register
}
else
{
echo ('false'); //already registered
}
Ik heb het ook nog met een apart bestandje geprobeerd ipv register.php:
if (!empty($_POST['email']))
{
$email = $connect->real_escape_string($_POST['email']);
$query = "SELECT ID FROM users WHERE user_email = '{$email}' LIMIT 1;";
$results = $connect->query($query);
if($results->num_rows == 0)
{
echo 'true'; //good to register
}
else
{
echo 'false'; //already registered
}
}
Ik weet dat de register.php goed moet zijn die geeft aan of er wel of geen email bestaat zonder jQuery.
Als ik van email naar een volgend veld ga dan kan je mooi zien dat de ajax_validatemail.php wordt aangeroepen. Ik weet niet of het zo hoort of misschien wel helemaal niks zegt, maar bij antwoord blijft de uitkomst het zelfde altijd true ook al gebruik ik het zelfde email adres dat in de database staat?
<br />
<b>Notice</b>: Trying to get property of non-object in <b>C:\xampp\htdocs\validateEmail.php</b> on line <b>15</b><br />
true
De submit van het formulier hoort los te staan van de controle op het mailadres via AJAX.
Ik zou eens zeggen: Kijk eens naar de request in je network-tab. Misschien worden er nog meer parameters gevraagd, dan dat je afhandelt?
Is er eventueel een testcase die ik we kunnen bekijken?
Ik zie wel dat de events in je code van je validatie in jQuery een event (firstname:) gebruiken binnen de rules event. Misschien dat daar iets niet klopt?
Word je ook niet wijzer uit de JavaScript Debug Console van je browser?
<?php
// Maak verbinding met de database
require 'db_connect.php';
// Toon alle foutmeldingen
ini_set( 'display_errors', true );
error_reporting( E_ALL | E_STRICT );
if (!empty($_POST['email']))
{
$email = $connect->real_escape_string($_POST['email']);
$query = "SELECT ID FROM users WHERE user_email = '{$email}' LIMIT 1";
$results = $connect->query($query);
if($results->num_rows > 0)
{
echo 'true'; //good to register
}
else
{
echo 'fals'; //already registered
}
}
?>
En dan in de database een email adres dat ik exact zo overneem bij het invullen. Bij de Debug Console geeft ie niks aan van een fout ofzo. Het moet toch niet uitmaken dat het lokaal is?
Ik heb het veld wachtwoord even toegevoegd voor de tab naar een ander veld. Al doet tab naar submit het zelfde waarschijnlijk.
Krijg je nou nog steeds die Notice-melding bij het uitvoeren te zien bij het bekijken van de request van ajax_validatemail.php? En welke antwoord- en verzoekheaders worden er uitgevoerd?