Drupal& PHP / MySQL:如何将字段与当前用户的字段进行比较?

时间:2011-07-22 22:18:32

标签: php mysql drupal views cck

我有一个问题,关于drupal中的php语法/ mysql:

假设userA创建了一个名为“test”的内容类型,他在其中填充了值为“xxx”的字段field_example。之后,另一个用户userB创建了另一个内容,并使用相同的值“xxx”填充了相同的字段field_example

我想知道如何仅在创建的节点中显示一个视图,其中字段field_example对于当前用户是相同的?我没有(我不想要)我正在使用的内容类型“test”中的用户引用。

我查看了View PHP Filter,但我想知道如何比较字段的值?这是我的尝试[我不是PHP的专家,你可能会注意到:)]:

<?php

$a="SELECT uid FROM users WHERE uid=%d";

/* ??? How to create $b which can get value of field_example from content_type_test from current user which is logged in ? */

$b="";

$c="SELECT field_example FROM content_type_test";

if ($b==$c){
echo "Ok, I've what I want :) ";
}

?>

任何帮助都会非常感激,因为我已经有一段时间了,我正在寻找有关此查询的信息......

全部谢谢:)

2 个答案:

答案 0 :(得分:0)

我认为你想要这样的东西:

function _get_list() {
global $user; // This is global variable, contains information for current logged in user.

$results = db_query("SELECT ctt.field_example FROM {node} n JOIN {content_type_test} ctt ON n.nid = ctt.nid AND n.vid = ctt.vid WHERE n.uid = %d", $user->uid);

while($row = db_fetch_object($results)){
   //$row->nid.. etc..
}

}

答案 1 :(得分:0)

我没有视图模块解决方案。

想到的一个想法是,如果用户A提交多个节点,那么您将使用哪个示例值?另外,你正在使用什么版本的Drupal?

假设用户只提交一个这种类型的内容而你正在运行Drupal 6(我从代码示例中猜测),那么它可能看起来像这样:

<?php
// current user
global $user;
// select this user's node
$nid = db_result(db_query("SELECT nid FROM {node} WHERE type = 'my_content_type' AND status = 1 AND uid = %d", $user->uid));
// if this node loads fine, then proceed with the rest
if ($node = node_load($nid)) {
  // find nodes with the same example value, which do not belong to the current user
  $result = db_query("SELECT nid FROM {node}
                        INNER JOIN {content_type_test} ctt ON n.vid = ctt.vid
                        WHERE n.status = 1 AND ctt.field_example_value = '%s' AND uid <> %d
                        ORDER BY n.created DESC", $node->field_example[0]['value'], $user->uid);
  // loop through results
  while ($row = db_fetch_object($result)) {
    $node = node_load($node->nid);
    // append the teaser output (if this is what you want to do)
    $output .= node_view($node, TRUE);
  }
  // print the output
  print $output;
}
else {
  print t('No other content found.');
}
?>

如果用户提交了多种内容类型,那么这就是避免在这里写小说的另一种答案。有几种方法可以解决这个问题。

如果这是Drupal 7,我也会使用不同的功能。