2009-12-07 4 views
2

Использование Wordpress Я создал несколько полей для выбора, чтобы пользователи могли выбирать категории для исключения. Когда страница изначально загружается, я вижу предварительно выбранные значения по умолчанию. Однако, когда я выбираю новые значения и сохраняю ... Я только вижу, что слово «Массив» эхом и ничего не выбрано?Multiple Select with Explode: возвращает слово «Array»

<select class="amultiple" id="<?php echo $value['id']; ?>" name="<?php echo $value['id']; ?>[]" multiple="multiple" size="8"> 
      <?php 
       global $options; 
        foreach ($options as $value) { 
         if (get_settings($value['id']) === FALSE) { $$value['id'] = $value['std']; } else { $$value['id'] = get_settings($value['id']); 
         } 
        } 
        $categories = &get_categories('type=post&orderby=name&hide_empty=1'); 
        if ($categories) { 
         $ex_cat = implode(',', $tt_cat_exclude); 

         foreach ($categories as $category) { 
          $selected = (in_array($ex_cat, $category->cat_ID)) ? ' selected="selected"' : ''; 
          echo '<option value="' . $category->cat_ID . '"' . $selected . '>' . $category->cat_name . '</option>' . "\n"; 
         } 
        } 
?> 
</select> 
<br />For testing purposes, print variables: <?php echo $ex_cat; ?> 

http://i48.tinypic.com/k9e3qq.gif

ответ

2

Вы должны использовать implode()

Как и

$ex_cat = implode(',', $tt_cat_exclude); 

Это возвращает разделенный запятыми список

Эта линия должна быть

$selected = (in_array($category->cat_ID, $ex_cat)) ? ' selected="selected"' : ''; 

Изменен

$selected = (in_array($category->cat_ID, $tt_cat_exclude)) ? ' selected="selected"' : ''; 

Поскольку $ex_cat является строкой и не может быть использована в in_array()

$ex_cat теперь избыточно, я думаю.

+0

ну, слово «массив» не печатает ... теперь случайные числа: :) – Greg

+0

Это сейчас работает ... однако после обновления страницы - ушел – Greg

+0

Рад это слышать! –

1

tt_cat_exclude Похоже, отсутствует это открытие $

+0

ОК. добавил. – Greg

0

При обратной передачи, поле tt_cat_exclude представляет собой массив значений, которые вы установили - потому что вы назовите его tt_cat_exclude[] с [] сзади.

Пример:

<form action="<?php echo $_SERVER['PHP_SELF']; ?>" method="post"> 
<select class="amultiple" id="tt_cat_exclude" name="tt_cat_exclude[]" multiple="multiple" size="8"> 
    <option value="1">TestingA</option> 
    <option value="2">TestingB</option> 
    <option value="3">TestingC</option> 
    <option value="4">TestingD</option> 
    <option value="5">TestingE</option> 
</select> 
<input type="submit" value="Submit" /> 
</form> 
<br/><br/>For testing purposes: <?php 

if(isset($_POST['tt_cat_exclude'])){ 
    var_dump($_POST['tt_cat_exclude']); // outputs an array of the selected values 
} 

?> 
1

имя = «tt_cat_exclude []» означает, что вы определяете массив, так что это нормально для выхода, чтобы быть «массив»

для тестирования Ьгу print_r (выводит вся архитектура переменной) или var_dump (выводит тип уаг тоже)