2014-07-23 14 views
1

我已經按照其規範將html5和PHP組合在一起編碼此頁面。我的問題是,當我將頁面連接到特定的數據庫(我在這個頁面上做了兩次)時,第二個連接顯示了我完美佈局的表格中的值,但第一個連接給了我一個帶有空白空間的下拉菜單。該菜單假設按照字母順序顯示所有50個狀態,就像他們在我的表格下面顯示的那樣。菜單中的空白空間似乎高達50個州,我只是沒有在這些字段中顯示任何文本。我錯過了什麼?我在本網站上對其他問題嘗試過幾種不同的方式,但最終得到相同的結果。爲什麼我的數據庫中的值不會顯示在我的下拉菜單中?

下面是HTML和PHP的一部分:

<html> 
<body> 
<form> 

<!-- Drop Down set up for Database --> 
<select name = "state"> 
<option value ="default">Select a State</option> 

<!-- Retrieve Data from Database --> 
<?php 
$db=pg_connect("dbname=etc.."); 
$query = "select state_name"; 
$query .= " from state_t"; 
$query .= " order by state_name"; 
$dbResult = pg_query($query); 

if (!$dbResult) 
{ 
    die("Database error..."); 
} 

$num = pg_num_rows($dbResult); 
if ($num == 0) 
{ 
    echo '<tr><td colspan="2">'; 
    echo 'Database Query Retrieved Nothing!</td></tr>'; 
} 
    while ($num = pg_fetch_array($dbResult)) 
{ 
    $state_name = pg_Result($dbResult,'state_name'); 
    echo '<option value="$num[$state_name]"</option>'; 
} 
?> 
</select> 

</form> 
</body> 
</html> 

回答

1

因爲語法錯誤?

嘗試:

while ($num = pg_fetch_array($dbResult)) 
{ 
    $state_name = pg_Result($dbResult,'state_name'); 
    echo '<option value="$num[$state_name]">' . $num[$state_name] . '</option>'; 
} 
+0

這樣每個選項將具有相同的值,字符串'$ num [$ state_name]' – mishu

+0

這是因爲「$ state_名稱「永遠不會改變。您可以通過「$ state_name」從「$ num」中獲取值。你可以告訴我你的$ state_name的var_dump嗎? – Tyralcori

+0

不,這是因爲變量和轉義序列沒有在單引號之間的字符串中展開。你可以在這裏閱讀更多關於字符串的信息http://php.net/manual/en/language.types.string.php – mishu

0

的bascic語法選擇框本身就是錯誤的

語法

<select> 
    <option value="a"> A </option> 
<select> 

其中A =價值要從其是否與此選項獲得被選中, A =要顯示給用戶的值

所以,你的代碼應該是

while ($fet = pg_fetch_array($dbResult)) 
{ 
     echo "<option value='$fet[state_name]'>".$fet['state_name']."</option>"; 
} 

其中STATE_NAME是國家的字段名在表

+0

是的,我相信這是我使用的方式之一。它仍然返回一個有50個空白空間的下拉減去我應用「選擇一個狀態」的默認值。 – DoctorJ03

+0

我編輯過。試試吧..我希望你能得到那 –

+0

我希望我有信譽投票你的答案,因爲它正是我所期待的。謝謝。 – DoctorJ03

0

你可以試試:

echo '<option value="$num["$state_name"]" > $num["$state_name"] </option>'; 

代替:

echo '<option value="$num[$state_name]"</option>'; 
相關問題