我无法弄清楚为什么我的下拉列表(从Mysql填充)给我一个数字而不是字符串值。下面是下拉列表的代码,它正确显示项目名称。问题是,当我稍后拉出所选项目时,我得到一个数字而不是用户选择的字符串项目名称。
<select name="product1" class="form-control" id="sel1">
<?php
require('./PHPConnect.php');
$dropdown = array();
$downquery = "SELECT * FROM masterDESC";
$response = @mysqli_query($dbc, $downquery);
if($response){
while(($row = @mysqli_fetch_array($response,MYSQL_ASSOC))){
$dropdown[] = $row['DESCRIPTION'];
}
}
foreach($dropdown as $key => $value){
echo '<option value=' . $key . '>' . $value . '</option>';
}
echo "</select>";
mysqli_close($dbc);
?>
以下是用于拉取所选项目的代码。
$product1 = $_POST['product1'];
有什么想法吗?
答案 0 :(得分:1)
正在吐痰放索引号,因为你正在检索一个只是描述值的数组(来自这个&#34; $ dropdown [] = $ row [&#39; DESCRIPTION&#39;];&#34 ;您已从数据库返回,并且当没有列出键时 - 数组索引是$键 - 因此数字
您需要更改以下内容
foreach($dropdown as $key => $value){
echo '<option value=' . $key . '>' . $value . '</option>';
}
将此选项的值设置为与显示的内容相同(或将其保留为数字,稍后将其作为$ dropdown [index]引用。
foreach($dropdown as $value){
echo '<option value="' . $value. '">' . $value . '</option>';
}
答案 1 :(得分:0)
没关系,我明白了。这是foreach的关键价值对。我过去创造的类似下降是必要的,但在这里没有工作。我摆脱了foreach并且它起作用了。
<select name="product1" class="form-control" id="sel1">
<?php
require('./PHPConnect.php');
//$dropdown = array();
$downquery = "SELECT *
FROM masterDESC";
$response = @mysqli_query($dbc, $downquery);
if($response){
while(($row = @mysqli_fetch_array($response,MYSQL_ASSOC))){
$dropdown = "<option value=\"{$row['DESCRIPTION']}\">
{$row['DESCRIPTION']}</option>\n";
echo $dropdown;
}
}
echo "</select>";
mysqli_close($dbc);
?>