Php 使用选定的选择获取多个选择框选项以保持选中状态
我试图在下面的选择框中使所选选项保持选中状态。(选择框位于WordPress admin的菜单页面中)。我已经验证了数据是否保存到数据库中,但我很难确定如何从数据库中获取数据,以便在保存页面后标记为给定选择框选择的选项。页面上有多个选择框Php 使用选定的选择获取多个选择框选项以保持选中状态,php,jquery,wordpress,html-select,Php,Jquery,Wordpress,Html Select,我试图在下面的选择框中使所选选项保持选中状态。(选择框位于WordPress admin的菜单页面中)。我已经验证了数据是否保存到数据库中,但我很难确定如何从数据库中获取数据,以便在保存页面后标记为给定选择框选择的选项。页面上有多个选择框 <script type="text/javascript"> jQuery(document).ready(function($){ $(".chzn-select").chosen(); }); </sc
<script type="text/javascript">
jQuery(document).ready(function($){
$(".chzn-select").chosen();
});
</script>
<select name="locations[<?php echo $item_id; ?>]" id="edit-menu-item-visibility-<?php echo $item_id; ?>" class="chzn-select" multiple="true">
<option value="DZ">Algeria</option>
<option value="AS">American Samoa</option>
<option value="AD">Andorra</option>
...
选择框使用所选的selectjquery插件。下面是一个问答,提供了一些关于使用JS标记所选选项的指导:。页面上有多个选择框时,我无法使其正常工作
<script type="text/javascript">
jQuery(document).ready(function($){
$(".chzn-select").chosen();
});
</script>
<select name="locations[<?php echo $item_id; ?>]" id="edit-menu-item-visibility-<?php echo $item_id; ?>" class="chzn-select" multiple="true">
<option value="DZ">Algeria</option>
<option value="AS">American Samoa</option>
<option value="AD">Andorra</option>
...
下面是我的非工作尝试。如果我理解正确,可以使用JS将值设置为selected。但我也不能让它发挥作用。非常感谢您的帮助
<option value="AF" <?php $val = implode(",",get_post_meta( $menu_item_db_id, 'locations', true )); if(in_array("AF", $val)){echo "selected='selected'";}else{echo "";} ?> >Afghanistan</option>
假设
$locations
是选定国家/地区代码的数组
<option value="DZ"<?php echo (in_array('DZ', $locations)) ? ' selected' : '' ?>>Algeria</option>
假设$locations
是选定国家/地区代码的数组
<option value="DZ"<?php echo (in_array('DZ', $locations)) ? ' selected' : '' ?>>Algeria</option>
如您所写
<option value="AF" <?php $val = implode(",",get_post_meta( $menu_item_db_id, 'locations', true )); if(in_array("AF", $val)){echo "selected='selected'";}else{echo "";} ?> >Afghanistan</option>
备选案文2
如果该值保存为一个序列化的
字符串,则需要先取消序列化
输出,然后通过\u array()中的检查它。
因此,使用或者\u unserialize()
:仅当值被序列化时才取消序列化
因此,代码变成:
<option value="AF" <?php $val = maybe_unserialize(get_post_meta( $menu_item_db_id, 'locations', true )); if(in_array("AF", $val)){echo "selected='selected'";}else{echo "";} ?> >Afghanistan</option>
一件重要的事
首先尝试打印like的输出
$val = get_post_meta( $menu_item_db_id, 'locations', true );
echo '<pre>';
print_r($val);
echo '</pre>';
';
如您所写
<option value="AF" <?php $val = implode(",",get_post_meta( $menu_item_db_id, 'locations', true )); if(in_array("AF", $val)){echo "selected='selected'";}else{echo "";} ?> >Afghanistan</option>
备选案文2
如果该值保存为一个序列化的
字符串,则需要先取消序列化
输出,然后通过\u array()中的检查它。
因此,使用或者\u unserialize()
:仅当值被序列化时才取消序列化
因此,代码变成:
<option value="AF" <?php $val = maybe_unserialize(get_post_meta( $menu_item_db_id, 'locations', true )); if(in_array("AF", $val)){echo "selected='selected'";}else{echo "";} ?> >Afghanistan</option>
一件重要的事
首先尝试打印like的输出
$val = get_post_meta( $menu_item_db_id, 'locations', true );
echo '<pre>';
print_r($val);
echo '</pre>';
';
Ok,$val未返回所需的输出。请看我在原始帖子中的更新。欢迎:)。。小错误会导致巨大的差异。好的,$val没有返回所需的输出。请看我在原始帖子中的更新。欢迎:)。。小错误导致巨大的差异。
$val = get_post_meta( $menu_item_db_id, 'locations', true );
echo '<pre>';
print_r($val);
echo '</pre>';
<select name="locations[<?php echo $item_id; ?>]" id="edit-menu-item-visibility-<?php echo $item_id; ?>" class="chzn-select" multiple="true">
<option value="DZ">Algeria</option>
<option value="AS">American Samoa</option>
<option value="AD">Andorra</option>
...
<select name="locations[<?php echo $item_id; ?>][]" id="edit-menu-item-visibility-<?php echo $item_id; ?>" class="chzn-select" multiple="true">
<option value="DZ">Algeria</option>
<option value="AS">American Samoa</option>
<option value="AD">Andorra</option>
...
$val = get_post_meta( $menu_item_db_id, 'locations', true );
echo '<pre>';
print_r($val);
echo '</pre>';