Forms API, Comment créer les checkboxes qui soit sélectionnés par défaut...?

Salut les amis,

Au chargement de mon formulaire, crée avec les Forms API, quelques checkboxes doivent être sélectionnées par défaut.

J’ai des checkboxes suivants

Français
Anglais
Allemand
Italien

Si j’utilise la propriété #default_value de façon suivante

'#default_value' => variable_get('langue', array('Français','Italien')),

ça fonctionne bien.

Mais si je met une variable, qui contient les valeurs «‘Français’, ‘Italien’», ça ne fonctionne pas.

Voila mon code.

$rqt_langue="Select langue_desc from pwl_langue";
$res_langue=mysql_query($rqt_langue);
$row_langue=mysql_fetch_assoc($res_langue);
$langues="'".$row_langue['langue_desc']."'";
while ($row_langue=mysql_fetch_assoc($res_langue)){
$langues=$langues .",'".$row_langue['langue_desc']."'";
}

$form['langue']=array(
'#type'=>'checkboxes',
'#default_value' => variable_get('langue', array($langues)),
'#options' => array(
'Français' => t('Français'),
'Anglais' => t('Anglais'),
'Allemand' => t('Allemand'),
'Italien' => t('Italien'),
),
);

Est-ce qqun à un idée, comment faire ça ??

Je vous remercie à l’avance.

#

Salut,

Il y a une erreur de logique dans ton code : ta variable $langues contient une chaîne de caractères composée de plusieurs langues séparées par des virgules, mais ça reste une et une seule chaîne (les virgules sont comprises dedans). Autrement dit, ton array un peu plus bas ne contient qu’une seule valeur (cette chaîne de caractères pleine de virgules !).

C’est au moment où tu récupères tes langues que tu dois construire le array, par exemple :

<?php
$langues
= array();
while (
$row_langue = mysql_fetch_assoc($res_langue)) {
 
$langues[] = $row_langue['langue_desc'];
}
?>

Ensuite, plus bas, tu te contentes de passer la variable $langues comme valeur par défaut (il n’est plus nécessaire d’écrire array(…) ) :

<?php
 
...
 
'#default_value' => variable_get('langue', $langues),
  ...
?>

Enfin, c’est pas une super idée d’utiliser directement mysql_fetch_assoc(), ça introduit une dépendance à mysql. Drupal a des fonctions d’abstraction pour la base de données comme db_fetch_array() ou db_fetch_object().

Vincent

Formations Drupal pour WEBMASTERS, DESIGNERS et DÉVELOPPEURS.

#

Merci bien Vincent,

ça marche bien maintenant.

Syndiquer le contenu