Je travaille dans Drupal 6 avec CCK. Sous chaque champ de texte il y a une section PHP où vous pouvez exécuter du code PHP pour obtenir les valeurs autorisées. Je rencontre des problèmes en utilisant une instruction "if" pour modifier les valeurs autorisées en fonction du type d'utilisateurDrupal: champ PHP pour les valeurs autorisées
Pour commencer, je fais une requête pour déterminer le type d'utilisateur actuel. -1 est l'utilisateur par défaut, qui est les employés et l'ID de type d'utilisateur "1", est pour les utilisateurs du site. Ce que je veux, c'est restreindre l'utilisateur du site aux seules valeurs autorisées qu'ils doivent voir, tout en permettant aux employés de modifier cette valeur quand sur l'écran d'édition de nœud avec tous les choix.
La première partie de l'instruction if fonctionne. Cependant, la partie "else" ne fonctionne pas. Ce champ est-il configuré pour gérer les structures de contrôle?
global $user;
$sql1 = "SELECT user_type_id FROM user_types_user WHERE uid = ".$user->uid." ";
$res1 = db_query($sql1);
if($res1 == '1'){
$sql = "SELECT account FROM users WHERE uid = ".$user->uid." ";
$res = db_query($sql);
while($row = db_fetch_array($res)){
$rows[] = $row['account'];
}
$rows = drupal_map_assoc($rows);
return $rows;
}
else {
$sql2 = "SELECT title FROM node WHERE type = 'accounts' ";
$res2 = db_query($sql2);
while($row2 = db_fetch_array($res2)){
$rows2[] = $row2['title'];
}
$rows2 = drupal_map_assoc($rows2);
return $rows2;
}
Les choix sont de type = comptes dans les nœuds, cependant, lorsqu'un utilisateur est créé l'un des choix est sélectionné et stockées dans la table utilisateur, sous une colonne I créé sous le nom « compte »
Vous êtes l'homme! Juste pour que je sois hétéro, le problème était que le résultat de mon tableau était un entier, mais j'essayais de le comparer à une chaîne de caractères? Donc, même pensé qu'ils étaient les mêmes, ils n'étaient pas égaux? – tpow
Je ne suis pas exactement sûr de ce qui se passe, mais PHP a des règles étranges pour la comparaison quand les types ne correspondent pas (voir les documents à http://www.php.net/manual/fr/language.operators.comparison.php). Le 'db_query' de Drupal semble retourner une ressource, qui est convertie en nombre (probablement 1). Si l'ajout de 'db_fetch_array' aide, super :-) J'ai trébuché sur des problèmes de comparaison plus d'une fois ... – Simon