2015-09-22 1 views
-1

У меня есть форма, в которой появляется сообщение с благодарственным сообщением после того, как вы отправили его, однако я хочу, чтобы он предупреждал «недействительный адрес электронной почты», если отправленное вами письмо уже существует в база данных.Используя Ajax, чтобы узнать, существует ли электронная почта в базе данных

Теперь он просто переходит к сообщению благодарности (и не отображает предупреждение), даже если письмо уже существует в базе данных. Я использую ajax для отправки данных формы в базу данных. Что я делаю неправильно в коде?

мой Аякса код:

$(document).ready(function(){ 
$("#submit").click(function(){ 

var name = $("#fullname2").val(); 
var email = $("#fullemail2").val(); 
var state = $("#selectstate").val(); 
// Returns successful data submission message when the entered information is stored in database. 
var dataString = 'FullName='+ name + '&email='+ email + '&SovereignState='+ state; 
if(name==''||email==''||state=='') 
{ 
alert("Please Fill All Fields"); 
} 
else 
{ 
// AJAX Code To Submit Form. 
$.ajax({ 
type: "POST", 
url: "demo.php", 
data: dataString, 
cache: false, 
success: function(phpSays){ 
    if (phpSays == "OK"){ 
     alert("invalid email"); 
    } 
    else { 
     $('#sinatra2').hide(); 
     $('#thanks').show(); 
    } 
} 
}); 
} 
return false; 
}); 
}); 

и это PHP:

<?php 

define('DB_NAME', ''); 
define('DB_USER', ''); 
define('DB_PASSWORD',''); 
define('DB_HOST', ''); 

$link = mysql_connect(DB_HOST, DB_USER, DB_PASSWORD) ; 

if (!$link) { 
    die('Could not connect: ' . mysql_error()) ; 
} 

$db_selected = mysql_select_db (DB_NAME, $link) ; 

if (!$db_selected) { 
    die('Cant use ' . DB_NAME . ': ' . mysql_error()) ; 
    } 

$new_email = $_POST ['email']; 

$sql2 = mysql_query ("SELECT email from Data_2 WHERE email = '$new_email"); 
$row = mysql_fetch_row($sql2); 

if(mysql_num_rows($row) > 0) { 

echo 'OK' ; 

} 
else { 

$value = $_POST ['FullName']; 
$value2 = $_POST ['email']; 
$value3 = $_POST ['SovereignState']; 

$sql = "INSERT INTO Data_2 (FullName, email, SovereignState) VALUES  ('$value', '$value2', '$value3')"; 

if (!mysql_query ($sql)) { 
    die('Error: ' . mysql_error()); 
} 
} 

mysql_close(); 
?> 
+0

'if (phpSays.trim() ==« ОК ») {' Я полагаю, вы заработали много пробелов, в вашем ответе – joyBlanks

+0

Я не думаю, что вам нужно $ row = mysql_fetch_row ($ sql2); просто используйте if (mysql_num_rows ($ sql2)> 0) { –

+1

Не используйте MySQL_ * Это расширение было устарело в PHP 5.5.0, и оно было удалено в PHP 7.0.0. Вместо этого [MySQLi] (http://php.net/manual/en/book.mysqli.php) или [PDO_MySQL] (http://php.net/manual/en/ref.pdo-mysql.php) следует использовать расширение. –

ответ

0

Вы не пропустите конец цитаты в вашем SQL. Вам нужно избегать электронной почты, чтобы защитить от SQL-инъекций. Вы неправильно используете mysql_num_rows(), он принимает этот ресурс. Ниже приведен пример, чтобы исправить все вопросы:

$result = mysql_query ("SELECT email from Data_2 WHERE email = '".mysql_real_escape_string($new_email)."'"); 
if (mysql_num_rows($result) > 0) { 
    echo 'OK' ; 
} 
0

Попробуйте это:

$sql2 = mysql_query("SELECT COUNT(`email`) AS count from Data_2 WHERE email = $new_email"); 

if ($sql2) 
    { 
    $count = mysql_fetch_assoc($sql2) ['count']; 
    if ($count > 0) 
     { 
     echo 'email exists'; 
     } 
     else 
     { 
     echo 'email does not exist'; 
     } 
    } 
0
$sql2 = mysql_query ("SELECT email from Data_2 WHERE email = '$new_email"); 

заменить:

$sql2 = mysql_query ("SELECT email from Data_2 WHERE email = '$new_email' "); 

Также

if(mysql_num_rows($row) > 0) { 
    echo 'OK' ; 

}

заменить:

if(mysql_num_rows($sql2) > 0) { 
    echo 'OK' ; 
} 
0

Заменить эту строку var dataString = 'FullName='+ name + '&email='+ email + '&SovereignState='+ state; с номером var dataString = {FullName: name, email: email, SovereignState: state};. Дом, который будет исправлять вашу проблему.

Смежные вопросы