使用数组填充选择输入

时间:2013-04-16 14:47:26

标签: php mysql

我想开始说我不想使用Javascript ....

我有一个正确返回的数组我相信,但是我只在下拉列表中的数组显示中有第一个条目。

这是阵列的问题吗?还是有这个功能?

foreach($array as $key=>$value){
    $html = "<option value='$key'>$value</key>";
}

echo "<select name="process">$html</select>";

3 个答案:

答案 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>";

如果这就是你的意思。