2009-12-07 51 views
2

使用Wordpress我創建了一個多選框,以便用戶可以選擇要排除的類別。最初加載頁面時,我會看到預先選擇的默認值。但是,當我選擇新的值並保存...我只看到單詞「數組」回顯,沒有選擇?多選與爆炸:只返回單詞「數組」

<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 2009-12-07 08:53:52

+0

這是現在工作...但頁面刷新後 - 不見 – Greg 2009-12-07 08:57:05

+0

很高興聽到它! – 2009-12-07 09:04:42

1

貌似tt_cat_exclude它缺少的開幕$

+0

好的。補充說。 – Greg 2009-12-07 08:53:07

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(輸出VAR型太)