2016-03-15 73 views
0

有了这个代码,所选择的选项被保存到数据库:为什么不将选项保存到数据库?

<select name="menu-item-visibility[<?php echo $item_id; ?>][]" id="edit-menu-item-visibility-<?php echo $item_id; ?>" class="chzn-select" multiple="true" 
    <option value="US" <?php $val = get_post_meta($item_id, 'locations', true); if (is_array($val)) { if (in_array("US", $val)) { echo "selected='selected'"; } else { echo ""; } } ?> >United States</option> 
    <option value="TH" <?php $val = get_post_meta($item_id, 'locations', true); if (is_array($val)) { if (in_array("TH", $val)) { echo "selected='selected'"; } else { echo ""; } } ?> >Thailand</option> 
    ... 
</select> 

有了这个代码,他们是不是:

<select name="menu-item-visibility[<?php echo $item_id; ?>][]" id="edit-menu-item-visibility-<?php echo $item_id; ?>" class="chzn-select" multiple="true" data-placeholder="Select Countries"> 
<?php 
$countries = array('US' => 'United States', "TH" => "Thailand"); 
$vals = get_post_meta($item_id, 'locations', true); 
foreach($countries as $key => $value) { 
?> 
    <option value="<?php echo $key;?>" 
    <?php echo (is_array($vals) && in_array($key, $vals)) ? "selected='selected'" : ''; ?> > 
    <?php echo $value;?> 
    </option> 
<?php 
} 
?> 
</select> 

为什么不呢?

这是选择如何发送到数据库:

/* Put locations in the database. */ 
function csmi_update_locations($menu_id, $menu_item_db_id, $args) { 
    $meta_value = get_post_meta($menu_item_db_id, 'locations', true); 
    if (isset($_POST[ 'menu-item-visibility' ][ $menu_item_db_id ])) { 
     $new_meta_value = $_POST[ 'menu-item-visibility' ][ $menu_item_db_id ]; 
     if (!isset($new_meta_value)) { 
      delete_post_meta($menu_item_db_id, 'locations', $meta_value); 
     } 
     elseif ($meta_value !== $new_meta_value) { 
      update_post_meta($menu_item_db_id, 'locations', $new_meta_value); 
     } 
    } 
} 

这里的要求,在查看源代码的HTML。

<p class="field-visibility description description-wide"> 
... 
    <select name="menu-item-visibility[4][]" id="edit-menu-item-visibility-4" class="chzn-select" multiple="true" data-placeholder="Select Countries"> 
     <option value="US" > United States </option> 
     <option value="TH" > Thailand </option> 
    </select> 
</p> 
+0

你能分享你的代码的一部分,它保存数据到数据库? – pes502

+0

当然,会添加它。 – j8d

+1

试试这个

回答

0

请使用这样的:

<select name="menu-item-visibility[<?php echo $item_id; ?>][]" id="edit-menu-item-visibility-<?php echo $item_id; ?>" class="chzn-select" multiple="true" data-placeholder="Select Countries"> 
<?php 
$countries = array('US' => 'United States', "TH" => "Thailand"); 
$vals = get_post_meta($item_id, 'locations', true); 
foreach($countries as $key => $value) { 
?> 
    <option value="<?php echo $key;?>" 
    <?php echo (is_array($vals) && in_array($key, $vals)) ? "selected='selected'" : ''; ?> > 
    <?php echo $value;?> 
    </option> 
<?php 
} 
?> 
</select> 
+0

你错过了双值引号value value =”<?php echo $ key;?>“ –

+0

Hi Atif,这是相同或不带引号:/ – j8d

+0

你检查你的复选框的HTML什么是HTML? –

0

嗯,这是令人尴尬的。问题出在我的WordPress版本上。请忽略。

相关问题