我正在与CCK一起工作在Drupal 6中。在每个文本字段下都有一个PHP部分,您可以在其中运行一些PHP代码以获取允许的值。我遇到了麻烦,使用“if”语句来更改基于用户类型的允许值Drupal:允许值的PHP字段
因此,首先,我执行查询以确定当前用户的用户类型。 -1是缺省用户,即员工和用户类型标识“1”,用于站点用户。我想要的是限制站点用户仅允许他们需要查看的值,同时允许员工在具有所有选择的节点编辑屏幕上编辑该值。
if语句的第一部分起作用。但是,“其他”部分不起作用。该字段是否设置为处理控制结构?
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;
}
这些选择是在节点类型=帐户,然而,当创建用户的选择中的一个被选择并存储在用户表中,下一个列我创建的名为“帐户”
你是男人!就我所说的那样,问题是我的数组结果是一个整数,但我试图将它与一个字符串进行比较?所以,即使他们认为他们是一样的,他们是不平等的? – tpow 2009-12-21 23:59:40
我并不确定会发生什么,但是当类型不匹配时,PHP会列出一些比较奇怪的比较规则(请参阅http://www.php.net/manual/en/language.operators.comparison.php上的文档)。 Drupal的'db_query'似乎返回一个资源,它被转换成一个数字(可能是1)。如果添加'db_fetch_array'帮助,很好:-)我不止一次地在比较问题上绊倒... – Simon 2009-12-22 07:49:29