2013-01-05 62 views
0

我有兩個輸入字段,每當我打開我的頁面時,它顯示錯誤,因爲在開始用戶沒有輸入任何字段的任何輸入(&錯誤顯示,因爲在sql查詢中使用用戶輸入來檢索數據)。 我只是想在頁面開始時顯示這兩個表單而不是錯誤。 兩個輸入都需要執行Compare按鈕。如果用戶沒有輸入任何一個輸入,它不應該發送請求到php腳本。 我的意思是Compare按鈕只有在兩個輸入都滿了的情況下才會發送請求,否則應該給用戶發一條消息給Type the required fields。 如何做到這一點?如果表單POST爲空,如何停止執行腳本的php?

$trimUser= trim ($_POST['name']); 
if(empty($name) || empty($name2)) 
{ 
echo "Enter a name "; 
} 
else if (isset($_POST['name'])) 
{ 
$name=$_POST['name']; 
} 
else if (isset($_POST['name2'])) 
{ 
$name2=$_POST['name2']; 
} 

&這裏是我的形式:

<form action="index.php" method="POST"> 
<input class="span3 search-query" placeholder="Type User A" type="text" name="name" id="field"/ 
<input class="span3 search-query" placeholder="Type User B" name="name2" type="text" 
id="field2"/> 
<button class="btn btn-primary" data-loading-text="Loading..." >Compare</button> 
+0

什麼是你所得到的確切的錯誤? – 2013-01-05 09:22:34

+0

'注意:未定義的變量:第119行中的.../index.php中的名稱警告:mysql_fetch_assoc()期望參數1是資源,布爾在第41行中的.../class.php中給出# 用戶輸入存儲在'$ name'和'$ name2'中。如果他們是空mysql取回失敗。這就是爲什麼。 – Faizan

+0

所有你需要的信息都在錯誤信息中。 '參數1爲資源'意味着你需要創建一個mysql數據庫連接並將這些資源傳遞給'mysql_fetch_assoc()'。請將您的代碼更新爲'mysqli_ *'或'PDO' PHP函數。 'mysql_ *'將被折舊。 – Tigger

回答

1

我簡直是通過我的代碼開始加入這個error_reporting(E_ERROR | E_PARSE);擺脫所有一切的錯誤。 但是,如果任何人想要檢查顯示驗證錯誤消息,可以很容易地由別人提到的。即通過使用if($ _ Post)。不管怎樣,謝謝大家的幫助。

0

添加if條款像

if($_POST) { 
...your validation code 
} 
1

您可以添加一個檢查,以驗證請求是POST請求:

if ($_SERVER['REQUEST_METHOD'] === 'POST') { 
    // Place your error checking code here 
} 
1

Ehs4n是正確的,但我會更具體,這樣做:

if(!empty($_POST['compare'])) { 
    #validation 
} 

按鈕代碼都必須改爲:

<button name="compare" value="1" class="btn btn-primary" data-loading-text="Loading..." >Compare</button> 

有兩個原因,我這樣做:

  1. 使用!空()可確保當$ _ POST [「比較」]是空的,你沒有得到一個錯誤
  2. 檢查$ _ POST [「比較」],而不是僅僅_POST $確保錯誤只有當有人點擊該按鈕時纔會顯示。

最後一點是關鍵,因爲如果你在頁面上有多個表單或者你在其他地方設置了$ _POST變量,你仍然會顯示錯誤。

1

使用if條件與isset($ _ POST)加載post.i.e.之前,

if (isset($_POST)) { 
if(empty($name) || empty($name2)) 
{ 
echo "Enter a name "; 
} 
else if (isset($_POST['name'])) 
{ 
$name=$_POST['name']; 
} 
else if (isset($_POST['name2'])) 
{ 
$name2=$_POST['name2']; 


} 
1

你必須使用Java腳本或jQuery的用於驗證這兩個字段不爲空。例..

<form action="index.php" method="POST" onsubmit="return validate()"> 
    <input class="span3 search-query" placeholder="Type User A" type="text" name="name"  id="field"/> 

    <input class="span3 search-query" placeholder="Type User B" name="name2" type="text" 
id="field2"/> 

    <button class="btn btn-primary" data-loading-text="Loading..." >Compare</button> 
</form> 

<script type="text/javascript"> 
    function validate(){ 
     var field1 = document.getElementById('field').value; 
     var field2 = document.getElementById('field2').value; 

     if(field1 != '' && field2 != ''){ 
      return true; 
     } else{ 
      alert('Type the required fields'); 
      return false; 
     } 
    } 
</script> 

這裏,如果這兩個字段不爲空,然後將被允許提交表單。並在PHP腳本中添加

if(isset($_POST) && !empty($_POST)){ 
    //code comes here 
} 

我希望這會對您有所幫助。

感謝

+0

感謝您的信息,我只是通過添加這個'error_reporting(E_ERROR | E_PARSE);' – Faizan

0

重定向人的錯誤後,在同一頁的認爲他們是:

echo '<script>location.href=\'example.php\'</script>';