2

Wordpress を使用して複数選択ボックスを作成し、ユーザーが除外するカテゴリを選択できるようにしました。ページが最初に読み込まれると、デフォルト値が事前に選択されていることがわかります。ただし、新しい値を選択して保存すると...「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

4

4 に答える 4

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は冗長だと思います。

于 2009-12-07T08:51:33.773 に答える
1

tt_cat_excludeオープニングが欠けているようです$

于 2009-12-07T08:48:41.923 に答える
1

name="tt_cat_exclude[]" は、配列を定義していることを意味するため、出力が「配列」になるのは正常です。

テストのために、print_r (変数のアーキテクチャ全体を出力) または var_dump (var タイプも出力) を試してください。

于 2009-12-07T08:49:33.330 に答える
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
}

?>
于 2009-12-07T08:48:48.693 に答える