unserialize() 使用 PHP 的多选标签中的多个选择值


unserialize() multiple select values in multi select tag with PHP

我有一个具有多个属性的选择标签,我使用 PHP serialize函数作为序列化数组在数据库中保存多个值:

我正在插入的数据库数组:

a:9:{i:0;s:8:"Arkansas";i:1;s:10:"California";i:2;s:8:"Delaware";i:3;s:7:"Montana";i:4;s:14:"North Carolina";i:5;s:12:"North Dakota";i:6;s:8:"Nebraska";i:7;s:13:"New Hampshire";i:8;s:10:"New Jersey";}

现在我想在我的SELECT下拉列表中显示这些选定的值SELECTED数据库 rest 中的值的属性将显示为未选中。

示例:我有状态表,我选择了纽约、迈阿密并将它们作为序列化数组保存到数据库中。现在,在编辑页面上,我想将纽约,迈阿密显示为选中状态,而其余状态将显示为未选中状态。

这是我正在处理的代码:

$result = $mysqli->query("SELECT * FROM `web_states`") or die (mysqli_error());
        $menu   = "<select name='jurisdiction_state[]' class='multiselectState' id='focusedInput' multiple='multiple' size='15' required>";
        $author = unserialize($data);
        foreach( $author as $index=>$key ) {
        $authorRecs = $this->getStateData($key);
        $Recs   = $authorRecs->fetch_object();
        $menu   .= "<option value='".$Recs->state_name."' selected=selected'>".$Recs->state_name."</option>";
        }  
        $menu   .=  "</select>";
        echo $menu;

我自己解决了,现在问题解决了。从我以前的代码来看,这是不可能的。

下面是数据库中的丝网化数组:

a:9:{i:0;s:8:"Arkansas";i:1;s:10:"California";i:2;s:8:"Delaware";i:3;s:7:"Montana";i:4;s:14:"North Carolina";i:5;s:12:"North Dakota";i:6;s:8:"Nebraska";i:7;s:13:"New Hampshire";i:8;s:10:"New Jersey";}

我只是使用以下方法反序列化它:

$data = unserialize(a:9:{i:0;s:8:"Arkansas";i:1;s:10:"California";i:2;s:8:"Delaware";i:3;s:7:"Montana";i:4;s:14:"North Carolina";i:5;s:12:"North Dakota";i:6;s:8:"Nebraska";i:7;s:13:"New Hampshire";i:8;s:10:"New Jersey";})

并获取该数组的第一个索引,该数组以数组的形式返回State Names

所以最后我用in_array()来检查选择和未选择,并得到了最终结果。

这是工作代码。

$result = $mysqli->query("SELECT state_name FROM `web_states`") or die (mysqli_error());
$menu   = "<select name='jurisdiction_state[]' class='multiselectState' id='focusedInput' multiple='multiple' size='15' required>";
$author[1] = unserialize($data);
while($rcData = $result->fetch_array()){
if(in_array($rcData['state_name'], $author[1])){
$menu .=  "<option value='".$rcData['state_name']."' selected='selected'>".$rcData['state_name']."</option>";
}else{
$menu .=  "<option value='".$rcData['state_name']."'>".$rcData['state_name']."</option>";
    }
}
$menu .=  "</select>";
echo $menu;

希望它对某人有所帮助。