簡體   English   中英

如何在if語句中訪問變量

[英]How can I access a variable inside an if statement

我有一個注冊表單,其中我的數據庫中已經存在用戶名或電子郵件,我使用AJAX響應onkeyup進行檢查。

您可以在這里查看我的檢查方式:

$query = $_GET ['query'];
$field = $_GET ['field'];

if ($field == "username")
    {
        $check = $db->prepare("SELECT * FROM users WHERE username = :query");
        $check->bindParam(':query', $query);
        $check->execute();
        $count = $check->rowCount();

        if ($count > 0)
        {
            echo '<font color=red>Username already exists</font>';
        }
        else 
        {
            echo '<font color=green>Username avalable</font>';
        }
    }

if ($field == "email") 
    {
        $check = $db->prepare("SELECT * FROM users WHERE email = :query");
        $check->bindParam(':query', $query);
        $check->execute();
        $count2 = $check->rowCount();

        if ($count2 > 0)
        {
            echo '<font color=red>Email already exists</font>';
        }
        else 
        {
            echo '<font color=green>Email avalable</font>';
        }   

        if (!filter_var($query, FILTER_VALIDATE_EMAIL)) {
            echo '<font color=red><br />Please enter a valid Email</font>';
        }
        else {
            echo '<font color=green><br />Valid email</font>';
        }
    }

我想創建另一個if語句,如果有任何錯誤,則應該禁用提交按鈕。 我不想將禁用添加到我已經擁有的每個語句中,因為那樣我可能會遇到這樣的情況:

我輸入了一封存在的電子郵件,它禁用了提交按鈕。 然后,我輸入正確的用戶名,即使電子郵件仍然錯誤,它也會再次啟用“提交”按鈕。

所以我不想創建這樣的東西:

if ($count > 0 || $count2 > 0)
{
echo '<script id="cb" type="text/javascript">document.getElementById("regr_btn").disabled=true</script>'
}
else
{
echo '<script id="cb" type="text/javascript">document.getElementById("regr_btn").disabled=false</script>'
}

但是我無法獲得我的計數,因為它們不是全球性的。 你們中的任何一個都可以給我一個關於如何實現此目標的想法嗎?

不用擔心 提交表單時,我還在檢查錯誤。 我知道用戶可以輕松地激活提交按鈕。

另外,如果需要提供更多代碼,請告訴我。

編輯:

驗證功能:

<script type='text/javascript'>
            function validate(field, query)
            {
                xmlhttp = new XMLHttpRequest(); // Creating Object
                xmlhttp.onreadystatechange = function() // Checking if readyState changes
                {
                    if (xmlhttp.readyState!=4 && xmlhttp.status==200) // Validation Under Process 
                    {
                        document.getElementById(field).innerHTML = "Validating..";
                    }
                    else if (xmlhttp.readyState==4 && xmlhttp.status==200)  // Validation Completed
                    {
                        document.getElementById(field).innerHTML = xmlhttp.responseText;
                    }
                    else // If an error is encountered
                    {
                        document.getElementById(field).innerHTML = "Unknown Error Occurred. <a href='index.php'>Reload</a> the page.";
                    }
                }
                xmlhttp.open("GET","check.php?field="+field+"&query="+query, false);
                xmlhttp.send();
            }
        </script>

並且第一個代碼塊中的代碼在check.php文件中

我的表單中的電子郵件和用戶名字段:

<div id='username'></div>
<input type="email" name="email" placeholder="Email" required="required" onkeyup="validate('email', this.value)"><br>
<div id='email'></div>
<input type="password" name="password" placeholder="Password" required="required" onkeyup="validate('password', this.value)"><br>

只需在兩個if條件之外聲明您的count變量。 像這樣:

$count = 0;

並在每個if條件的右括號之前將$ count的值重置為0。

做這個:

$query = $_GET ['query'];
$field = $_GET ['field'];
// Set counter to 0
$count = 0;
// Store all messages here
$msg = "";

if ($field == "username")
    {
        $check = $db->prepare("SELECT * FROM users WHERE username = :query");
        $check->bindParam(':query', $query);
        $check->execute();

        if ($check->rowCount() > 0)
        {
            $count += 1;
            $msg = '<font color=red>Username already exists</font>';
        }
        else 
        {
            $msg = '<font color=green>Username avalable</font>';
        }
    }

if ($field == "email") 
    {
        $check = $db->prepare("SELECT * FROM users WHERE email = :query");
        $check->bindParam(':query', $query);
        $check->execute();

        if ($check->rowCount() > 0)
        {
            $count += 1;
            $msg .= '<br /><font color=red>Email already exists</font>';
        }
        else 
        {
            $msg .= '<br /><font color=green>Email avalable</font>';
        }   

        if (!filter_var($query, FILTER_VALIDATE_EMAIL)) {
            $msg .= '<font color=red><br />Please enter a valid Email</font>';
        }
        else {
            $msg .= '<font color=green><br />Valid email</font>';
        }
    }

if ($count > 0)
{
  // Disable submit button here
  // Alternatively you can add the javascript that disables the submit button to
  // The $msg like so: $msg .= "<script></script>"; and echo it all together.
}
echo $msg;

如果它們具有相同的功能,則$count$count2不必是全局的。

您沒有告訴您如何調用第二個代碼塊,但是最常見的是

  • $count2 $count$count2作為參數
  • 創建一個驗證結果對象並將其傳遞,其中包括該信息。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM