我想开始说我不想使用Javascript ....
我有一个正确返回的数组我相信,但是我只在下拉列表中的数组显示中有第一个条目。
这是阵列的问题吗?还是有这个功能?
foreach($array as $key=>$value){
$html = "<option value='$key'>$value</key>";
}
echo "<select name="process">$html</select>";
答案 0 :(得分:2)
您必须使用连接运算符(.
):
$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>";
}
答案 1 :(得分:1)
$html = "";
foreach ($array as $key => $value){
$html .= "<option value='$key'>$value</option>";
}
echo "<select name='process'>$html</select>";
=
重新分配; .=
附加
如果您使用=
,则会在每次迭代中重新分配$html
,以便$html
将包含上次迭代的结果 - 一个选项。
答案 2 :(得分:1)
你需要连接字符串。首先在开始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>";
OR
echo "<select name='process'>$html</select>";
如果这就是你的意思。