2013-10-27 51 views
-1

我從堆棧溢出的人那裏得到了這個代碼我複製了它,我試了一下,但我沒有按照我想要的方式工作,如果我從我的數據庫中提供一個已經存在的電子郵件地址,說郵件地址已被佔用的錯誤,請選擇另一封電子郵件。但是當我提交的電子郵件地址,是不是在數據庫中仍顯示同樣的錯誤這可怎麼固定錯誤郵件已存在

<html> 
<head> 
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 
<title>Untitled Document</title> 
<script src="http://code.jquery.com/jquery-latest.js"></script> 
<script type="text/javascript"> 
$(document).ready(function(){ //newly added 
$('#submit').click(function() {alert("Email already exists. Please choose a different email"); 
var emailVal = $('#email').val(); // assuming this is a input text field 

$.post('checkemail.php', {'email' : emailVal}, function(data) { 
    if (data == 1) 
    { 
    $("#registration").submit(); 
    } 
else 
    { 

     return false; 
    } 

}); 
});}); 
</script> 

    </head> 
<body> 

<form id="registration" name="registration" method="post" action="profile1.php"> 
<p>email 
<input type="text" name="email" id="email" /> 
</p> 
<p> 
<input type="button" name="submit" id="submit" value="submit" /> 
</p> 
</form> 
</body> 
</html> 

這裏是PHP代碼

<?php 
include("con.php"); 

$sql = "SELECT email FROM registered_d WHERE email = " .$_POST['email']; 
$select = mysqli_query($con, $sql); 
$row = mysqli_fetch_assoc($select); 

    if (mysqli_num_rows > 0) { 
    echo "0"; // email exists 
}else{ 
    echo "1"; // email doesn't exists 
return;} 
?> 

有人可以幫我解決這個

回答

1

mysqli_num_rows是一個功能,因此應該這樣使用 - myseli_num_rows($select)

另外請記住,使用$_POST['email']SQL查詢未轉義是一個壞的和危險的做法。

爲什麼mysqli_fetch_assoc()如果你不知道你有沒有?

1

問題是當您按下提交按鈕時您正在調用alert("Email already exists. Please choose a different email");。無論發生什麼,每次都會產生警報。

0
$('#submit').click(function() {alert("Email already exists. Please choose a different email"); 

這將顯示一條提示消息,即每次單擊提交按鈕時電子郵件已存在。您需要移動它,如下所示。

$(document).ready(function(){ //newly added 
    $('#submit').click(function() { 
     var emailVal = $('#email').val(); // assuming this is a input text field 

     $.post('checkemail.php', {'email' : emailVal}, function(data) { 
      if(data=='exist') { 
       alert("Email already exists. Please choose a different email"); 
       return false; 
      } else { 
       $('#registration').submit(); 
      } 
     }); 
    }); 
}); 
+0

雖然我提交了相同的電子郵件地址在數據庫中的錯誤沒有顯示連 – tazmania

+0

你的條件是否「if(data =='exists')'correct?我剛剛複製了您已有的代碼,並將警報移至已存在的電子郵件中。嘗試'post'回調中的'console.log(data)'來查看返回的內容。它看起來像你正在返回'0'或'1',而不是''或'存在'。 –

0

使用此

<html> 
    <head> 
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 
    <title>Untitled Document</title> 
    <script src="http://code.jquery.com/jquery-latest.js"></script> 
    <script type="text/javascript"> 
    $(document).ready(function(){ //newly added 
     $('#submit').click(function() { 

      var emailVal = $('#email').val(); // assuming this is a input text field 
      $.post('checkemail.php', {'email' : emailVal}, function(data) { 
       if(data.message == "exist") 
        alert("This email address already exists"); 
       else 
        $('#registration').submit(); 
      }); 

      return false; 
     }); 
    </script> 



     </head> 
     <body> 

     <form id="registration" name="registration" method="post" action="profile1.php"> 
     <p>email 
     <input type="text" name="email" id="email" /> 
     </p> 
     <p> 
     <input type="submit" name="submit" id="submit" value="submit" /> 
     </p> 
     </form> 
     </body> 
     </html> 

在PHP代碼

<?php 
include("con.php"); 

$sql = "SELECT email FROM registered_d WHERE email = " .$_POST['email']; 
$select = mysqli_query($con, $sql); 
$row = mysqli_fetch_assoc($select); 

if (mysqli_num_rows($select) > 0) { 
    echo json_encode(array("message"=>"exist")); 
} 
else echo echo json_encode(array("message"=>"notexist")); 
?> 
+0

顯示了同樣的錯誤,它允許頁面提交,即使電子郵件是相同的 – tazmania

0

它看起來像 「mysqli_num_rows」 是一個變量,也有可能的獲取結果。 $行的結果是,所以也許你應該檢查一下條件。

據此,行應該是一個數組:

http://php.net/manual/en/function.mysql-fetch-assoc.php

事情是這樣的:

if (mysqli_num_rows($rows) > 0) { 
    echo "exist"; 
}else echo 'notexist';