存储和显示多个选择项目

时间:2012-08-23 23:58:55

标签: php multiple-select

我正在使用多选框,如下所示:

<select multiple="pages" id="pages" name="pages[]">
    <option value="Home Page">Home Page</option>
    <option value="Contact Us">Contact Us</option>
    <option value="Support">Support</option>
</select>

页面列表是从数据库中的另一个表生成的。

目前我正在破坏$ _POST ['pages']并将字符串存储在数据库中。什么是更有效的存储选定值的方法?

最后,我如何仍然显示所有页面(从数据库中的另一个表中检索),并在多个选择框中选择用户选择的页面。

E.g。用户选择了“联系我们” - 当在编辑页面上显示所有页面时,“联系我们”条目将突出显示(选中)。

2 个答案:

答案 0 :(得分:0)

法线在数组中全部崩溃,我认为它非常好。

这是一个例子:http://www.onlinetools.org/tricks/using_multiple_select.php

答案 1 :(得分:0)

除了将属性$_POST['pages']转换为数组位置之外,没有更有效的方法将value存储到数据库中。

$type = array("Home Page","Contact Us","Support");

使用数组维护所选项目(对于POST)是完美的。例如:

if(isset($_POST['submit'])){
    echo "<select name=\"pages\" id=\"pages\" names=\"pages[]\">";
    foreach($t as $loc=>$type)
        echo "<option value=\"$loc\">$type</option>";
    echo "</select>";
}else{
    echo "<select name=\"pages\" id=\"pages\" names=\"pages[]\">";
     foreach($t as $loc=>$type)
        if($_POST['pages'] == $loc) //select that item
            echo "<option value=\"$loc\" selected=\"selected\">$type</option>";
        else
            echo "<option value=\"$loc\">$type</option>";
    echo "</select>":
}

根据数据库中的数据选择项目只需将第9行if上的$loc语句替换为您存储在数据库中的数组位置。