我想开始说我不想使用 Javascript....
我相信我有一个正确返回的数组,但是我只在下拉列表中显示数组中的第一个条目。
这是数组的问题吗?或有这个功能?
foreach($array as $key=>$value){
$html = "<option value='$key'>$value</key>";
}
echo "<select name="process">$html</select>";
您必须使用连接运算符 ( .
):
$html = '';
foreach($array as $key => $value)
{
$html.= "<option value='$key'>$value</option>";
}
echo "<select name=\"process\">$html</select>";
但是,查看您之前发布的函数,mysql_fetch_assoc
一次只返回一行。相反,您需要遍历它。以下应该足够了:
function tasks_list($p_id) {
$project_tasks = array();
$p_id = (int)
$p_id;
$func_num_args = func_num_args();
$func_get_args = func_get_args();
$result = mysql_query("SELECT task_name FROM tasks WHERE project_id = $p_id");
while($project_tasks = mysql_fetch_assoc($result))
{
$html.= "<option value='".$project_tasks['task_name']."'>".$project_tasks['task_name']."</option>";
}
echo "<select name=\"process\">$html</select>";
}
$html = "";
foreach ($array as $key => $value){
$html .= "<option value='$key'>$value</option>";
}
echo "<select name='process'>$html</select>";
=
重新分配;.=
追加
如果您使用=
它$html
在每次迭代中重新分配,那么$html
它将包含最后一次迭代的结果 - 一个选项。
您需要连接字符串。在开始 for 循环之前先初始化$html
为空字符串。
$html = '';
foreach($array as $key => $value)
{
$html .= "<option value='$key'>$value</key>";
// same as $html = $html . "<option value='$key'>$value</key>";
}
注意:您的代码中还有一个错字:
echo "<select name="process">$html</select>";
应该是:
echo "<select name=\"process\">$html</select>";
或者
echo "<select name='process'>$html</select>";
如果这就是你的意思。