Tester les valeurs selectionnées dans un champs CCK

Information importante

En raison d'un grand nombre d'inscriptions de spammers sur notre site, polluant sans relache notre forum, nous suspendons la création de compte via le formulaire de "sign up".

Il est néanmoins toujours possible de devenir adhérent•e en faisant la demande sur cette page, rubrique "Inscription" : https://www.drupal.fr/contact


De plus, le forum est désormais "interdit en écriture". Il n'est plus autorisé d'y écrire un sujet/billet/commentaire.

Pour contacter la communauté, merci de rejoindre le slack "drupalfrance".

Si vous voulez contacter le bureau de l'association, utilisez le formulaire disponible ici, ou envoyez-nous un DM sur twitter.

Bonjour,

Je dispose d'un champ cck, sous forme d'une liste de texte avec choix multiple.

Choix 1
Choix 2
Choix 3

Je souhaite effectuer un test pour connaitre quelles sont les valeurs qui sont sélectionnées.
J'ai beau chercher, impossible de trouver comment le tableau est constitué et comment sont stockés les choix sélectionnés.

$node->field_commission semble etre un tableau
$node->field_commission[0] je ne comprend pas à quoi correspond le 0
$node->field_commission[0]['value'] la valeur

Je souhaite faire un truc du genre:

if (in_array('Choix1', $node->field_commission)) {
//opération
}

En espérant que quelqu'un pourra m'aider.

Forum : 
Version de Drupal : 

Installe le module devel http://drupal.org/project/devel qui va te permettre d'accéder à des données supplémentaires pour ton développement (genre des arrays).

Ensuite sur ton node tu fait un

<?php
 dsm
(node)
?>

dsm = drupal_set_message, ce qui va te donner des arrays correspondant a ton node (genre http://drupal.org/files/issues/badoutput-node-edit-form-before-save.jpg)

le 0 correspond à l'entree 0 de ton array, ca donne un truc genre
-field_commission
---[0]
------[title]
------[body]
------[value]

Dans ton cas, un

<?php
 $node
->field_commission['0']['value']
?>

suffit
tu passe le reste en if-else, genre

<?php
 
if($node->field_commission['0']['value'] == '0'):
?>
<?php
 
print "ce que tu souhaites"
?>

<?php
 
elseif($node->field_commission['0']['value'] == '1'):
?>
<?php
 
print "ce que tu souhaites"
?>

<?php
 
else:
?>
<?php
 
print "ce que tu souhaites"
?>
<?php
 
endif;
?>

Merci Tofu,

J'ai installé http://drupal.org/project/drupalforfirebug qui me permet d'avoir les memes informations qu'avec devel (concernant les formulaires au moins)

Maintenant j'ai compris que:

-$node->field_commission['0']['value'] renvoit la première valeur sélectionnée dans la liste
-$node->field_commission['1']['value'] renvoit la deuxieme valeur sélectionnée (et la pas le 2e choix possible) dans la liste

Du coup j'ai fait une boucle for de façon a récupérer mes valeurs. Je pense que ce n'est pas la meilleure façon de procéder.

Je fais une boucle de temps en temps pour charger des photos par exemple. Je mets un upload field. Et je récupère les valeurs avec un foreach comme ceci :

<ul id="gallery">
<?php foreach ($node->field_img as $img) : ?>
<li>
    <?php print $img['view']; ?>
</li>
<?php endforeach; ?>
</ul>

L'important est que tu aies obtenu ce que tu souhaitais :)