2012-09-28 56 views
0

我用PHP之前,從來沒有遇到這個問題....IF ELSE在PHP中不執行,調試,仍然無法找到問題

我有過自己的價值單選按鈕。提交表單時,我已驗證傳遞的值是否與我的代碼中的if語句條件匹配。但是,它不會執行該路徑。

例如,選擇城市單選按鈕時,不會執行與城市相關的if條件。我通過在if語句之前放置一個echo語句進行調試,並且它匹配if語句中的值,因此我對它爲什麼不執行的混淆。

如果有人能幫助我會很感激......我很困惑。

繼承人的HTML:

<html> 
<head> 
<title>Lab 5</title> 
<link rel='stylesheet' href='SearchForm.css' type='text/css' media='all' /> 
</head> 
<body> 
<p>You may use % as a wildcard character in your search.</p> 
<form method='POST' action='index.php?type=search'> 
    <input type='text' name='search_param' value='' /> 
    <input type='radio' name='search-type' value='City' id='city' /> 
    <label for='city'>City</label> 
    <input type='radio' name='search-type' value='Country' id='country' /> 
    <label for='country'>Country</label> 
    <input type='radio' name='search-type' value='Language' id='language' /> 
    <label for='language'>Language</label> 
    <br /><br /> 
    <input type='submit' name='submit' value='Search' /> 
</form> 
<p>Or, <a href='index.php?type=insert'>perform an insertion.</a></p> 
</body> 
</html> 

和PHP:

<?php 

include 'connect.php'; 

$table = $_POST['search-type']; 
$search = $_POST['search_param']; 

if($table != NULL) 
{ 
     echo '<table>'; 

     if($table == 'City') 
     { 

       $query = "SELECT * FROM city WHERE name ILIKE $1 ORDER BY name;"; 
       $stmt = pg_prepare($connection, "city", $query); 
       $result = pg_execute($connection, "city", array($search)); 

       while($row = pg_fetch_assoc($result)) 
       { 
         cityTable($row); 
       } 
     echo '</table>'; 

     } 

} 
else 
{ 
     echo 'Please select a table to query!'; 
} 

正如你所看到的,我甚至從我如果狀態拆下變量$search,而不是直接去後。

當我回應$search它產生「城市」,所以.....請幫助!

+0

試圖改變名稱='搜索型'with name ='search-type []' – JackTurky

+0

''city'!='City''? –

回答

1

在PHP字符串比較是大小寫敏感的,所以不是:

if($_POST['search_param'] == 'City') 

你應該有:

if (0 === strcasecmp($_POST['search_param'], 'City')) 

或者:

if (0 === strcasecmp(trim($_POST['search_param']), 'City')) 
+0

瞭解了=== operator.thanx –

0

嘗試的條件:

$table = isset($_POST['search-type']) ? $_POST['search-type'] : false; 
$search = isset($_POST['search_param']) ? $_POST['search_param'] : false; 

if ($table) { 

} 
else if (!$table || $table === null) { 

} 

HTML表單可能會被髮布的參數搜索類型,但作爲一個空白(這是不爲空)。

0

確定。試試這個:

$table = isset($_POST['search-type']) ? $_POST['search-type'] : NULL; // string from radio 
$search = isset($_POST['search_param']) ? $_POST['search_param'] : NULL; // string from input 
+0

是的,這是正確的,我的調試過程的一部分,代碼更新。但它仍然不起作用。我甚至在條件之上回顯了$ table一行,併產生了'City',但它不起作用! – ZAX

+0

@ZAX我更新了我的答案 – Sergey

0

我想你想

 if($table == 'City') 

$ _ POST [ 'search_param']是在文本框中的值。

+0

你是對的,這是從我的一部分調試中遺留下來的,但它仍然行不通!其他建議!? – ZAX

0
if($table != NULL) 
{ 
     echo $table; 

     if($search != NULL) 
     { 

搜索參數是我們獲得在輸入​​文本字段我的朋友

0

誰也沒有注意到在查詢中未定義的$ 1的值:d

+0

這就是你使用pg_prepare設置綁定參數的方法:http://php.net/manual/en/function.pg-prepare.php – andrewsi