使用PHP在multi select标记中使用unserialize()多个选择值

时间:2014-12-24 12:00:02

标签: php mysql serialization

我选择了具有多个属性的标签,我使用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属性显示这些选定值,因为我的数据库中的值将显示为未选中。

示例:我有表,我选择纽约,迈阿密并将其作为序列化数组<保存到数据库/ strong>即可。现在,在编辑页面上,我想要显示纽约,迈阿密,而休息状态将显示为未选中。

以下是我正在处理的代码:

$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;

1 个答案:

答案 0 :(得分:0)

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

以下是数据库中的serized数组:

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;

希望它有所帮助。