2009-12-07 5 views
2

utilisant Wordpress J'ai créé une boîte de sélection multiples afin que les utilisateurs peuvent sélectionner des catégories à exclure. Lorsque la page se charge initialement, mes valeurs par défaut sont présélectionnées. Cependant, quand je sélectionne de nouvelles valeurs et que je sauvegarde ... je vois seulement le mot "Array" en écho et rien n'est sélectionné?Sélection multiple avec Exploser: renvoie uniquement le mot « 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

Répondre

2

Vous devez utiliser implode()

Comme si

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

Ceci renvoie une liste séparée par des virgules

Cette ligne devrait être

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

Changé à

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

Depuis le $ex_cat est une chaîne et ne peut pas être utilisé dans in_array()

Le $ex_cat est maintenant redondant je devine.

+0

bien, le mot « tableau » n'imprime pas ... maintenant des nombres aléatoires sont :) – Greg

+0

Cela fonctionne maintenant ... mais après une actualisation de la page - – Greg

+0

allé Je suis heureux de l'entendre! –

1

On dirait tt_cat_exclude manque son ouverture $

+0

ok. ajouté cela. – Greg

0

Lorsque vous postback, le champ tt_cat_exclude est un tableau des valeurs que vous avez défini - parce que vous avez nommez tt_cat_exclude[] avec un [] derrière.

Exemple:

<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

name = "tt_cat_exclude []" signifie que vous définissez un tableau, il est donc normal que la sortie soit "tableau"

pour les tests essayer print_r (sort le toute l'architecture de la variable) ou var_dump (sorties type var trop)