Php 验证后重新填充选择多个For循环

Php 验证后重新填充选择多个For循环,php,codeigniter,validation,Php,Codeigniter,Validation,因此,基本上,在表单验证检查期间,我在重新填充选择框时遇到了很多麻烦。下面我给出了一个输出、控制器和视图的示例。有人能帮我弄清楚吗。先谢谢你 我有多个标签,看起来像这样: <select name="names[]" multiple> <option value="1">John Doe</option> <option value="2">Michael Scott</option&

因此,基本上,在表单验证检查期间,我在重新填充选择框时遇到了很多麻烦。下面我给出了一个输出、控制器和视图的示例。有人能帮我弄清楚吗。先谢谢你

我有多个标签,看起来像这样:

    <select name="names[]" multiple>
            <option value="1">John Doe</option>
            <option value="2">Michael Scott</option>
            <option value="3">Luke Skywalker</option>
            <option value="4">Princess Arial</option>
    </select>
我的看法是:

    <select name="names[]" multiple>
            <?php 
                foreach ($users as $user) {
                    $id = intval($user->id, 10);
                    $value = set_value('names[]', $id);
                    $name = $user->full_name;
                    echo '<option value="'.$value.'">'. $name .'</option>';
                }
            ?>
    </select>

当它返回false时,我想用以前选择的选项重新填充所选的选项。我还使用数据库中的用户填充选择框


我做错了什么,请你帮我一下,你会帮我很多的。提前谢谢你!!!!!:)

您只需添加一张支票:

echo '<option value="'.$value.'" '.(in_array($user->id,$this->input->post("names")) ? 'selected':'').'>'. $name .'</option>';
echo“”$名字;
我还没有检查
in_array()
是否适用于多个选择,但这与想法有关。

您可以尝试一下:

foreach ($users as $user) {
    $id     = intval($user->id, 10);
    $value  = set_value('names[]', $id);
    $name   = $user->full_name;
    echo '<option value="'.$id.'" '. set_select("names", $id ) .'>'. $name .'</option>';
}
foreach($users作为$user){
$id=intval($user->id,10);
$value=set_值('names[]',$id);
$name=$user->full_name;
回显“.$name.”;
}

这是通过使用
CI
form helper
提供的
set\u select
功能,您必须在使用表单helper之前加载它

应为:
echo“”$名字你的方法应该有效。谢谢你的评论!不过,您的方法更好:)
foreach ($users as $user) {
    $id     = intval($user->id, 10);
    $value  = set_value('names[]', $id);
    $name   = $user->full_name;
    echo '<option value="'.$id.'" '. set_select("names", $id ) .'>'. $name .'</option>';
}