Sélection multiple avec Exploser: ne renvoie le mot « Array »
Question
En 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 d'abord je vois mes valeurs par défaut pré-sélectionnés. Cependant, lorsque je sélectionne de nouvelles valeurs et enregistrer ... Je ne vois le mot « Array » écho et rien sélectionné?
<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; ?>
La solution
Vous devez utiliser implode()
Comme si
$ex_cat = implode(',', $tt_cat_exclude);
Ceci renvoie une liste séparée par des virgules
Cette ligne doit être
$selected = (in_array($category->cat_ID, $ex_cat)) ? ' selected="selected"' : '';
Changement à
$selected = (in_array($category->cat_ID, $tt_cat_exclude)) ? ' selected="selected"' : '';
Depuis la $ex_cat
est une chaîne et ne peut pas être utilisé dans in_array ()
Le $ex_cat
est maintenant je suppose redondant.
Autres conseils
On dirait que tt_cat_exclude
manque son ouverture $
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 (sorties toute l'architecture de la variable) ou var_dump (délivre en sortie le type var aussi)
Lorsque vous postback, le tt_cat_exclude
de champ 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
}
?>