如何在视图3中显示外部数据,没有节点,CCK和内容类型

时间:2010-12-28 06:11:36

标签: drupal drupal-views

我有一个外部数据库,Mydbase包含以下表格:

  • 公司:主编码,子代码,公司名称
  • 产品:产品代码,产品名称
  • 容量:主要代码,子代码,产品代码,容量,自

我想在视图中显示主码,子代码,产品代码,公司名称,产品名称,容量以及之后的信息。
我也希望公开产品代码过滤器。

我已经设置了外部数据库的setting.php db_url。然后,我在页面中创建了用于选择公司的表单;一旦用户选择公司,我将公司代码存储在会话变量中以供参考。我将使用此变量来获取视图中的信息。我将在默认参数PHP代码中输入其值,而Views将为我提供所选公司的容量信息。此页面使用drupal_goto()功能自动将用户重定向到容量的视图页面。该页面的代码如下。我的代码有问题:我无法将公司名称存储在变量中;我只能获取“maincode”和“subcode”的信息。如何获取下拉列表的显示值而不是标记值?

我不知道如何在没有drupal中的内容类型定义的情况下使用外部数据库的视图,并且也没有任何cck字段。如果我想在视图中公开产品代码,那么用户可以选择并查看选定公司的一个产品。

if(isset($_SESSION['ses_maincode'])){
  echo "Company Main code Selected =  " . $_SESSION['ses_maincode'] . "<br/>";
  echo "Company Sub code Selected =  " . $_SESSION['ses_subcode'] . "<br/>";
  echo "<br />";
}

$output .= drupal_get_form('formexample_testform');    
echo $output;

function formexample_testform() {
  $myvalue = array();
  $count = 0;
  db_set_active('mydb');
  $result = db_query('SELECT maincode,subcode,cname FROM {company}');
  while ($row = db_fetch_array($result)) {
    $arrayvalue = $row[maincode]  . '+' . $row[subcode];
    $myvalue[$arrayvalue]=$row['cname'];
    $count = $count + 1;
  }
  db_set_active('default');

  $form['select_company'] = array(
    '#title' => t('Select Company'),
    '#type' => 'select',
    '#description' => t('Pick the company '),
    '#options' => $myvalue,
    '#multiple' => FALSE,
  );

  $form['submit'] = array(
    '#type' => 'submit',
    '#value' => t('Submit')
  );

  return $form;
}

function formexample_testform_submit($form_id, $form_state) {
  $name = $form_state['values']['select_company'];
  drupal_set_message(t(' You have select the company %name', array('%name' => $name)));

  $mystring = $form_state['values']['select_company'];
  $pos = strrpos($mystring, "+");
  $endpoint = strlen($mystring) - $pos;
  $_SESSION['ses_maincode']=substr($mystring,0,$pos);
  $_SESSION['ses_subcode']=substr($mystring,$pos+1,$endpoint);

  $urlstring='node/7';
  /** . $_SESSION['ses_maincode']; */
  drupal_goto($urlstring);
}

0 个答案:

没有答案