我有一个具有多个属性的选择标签,我使用 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;
希望它对某人有所帮助。