2014-07-23 13 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>'; 
相关问题