匹配节点 ID 与 mysql table id
Matching node id with mysql table id
我必须创建可以从 url (example: localhost/site/node-1
) 获取节点 ID 的函数,并将 link 设为 mysql 数据行,其中 (example: id=1)
我需要用几个节点动态地做它..我试试这个代码:
<?php
function module_name_menu() {
$items['node-%'] = array(
'title' => 'Row from database',
'page callback' => 'module_name_node_page_view',
'access callback' => 'node_access',
);
return $items;
}
function module_name_node_page_view(){
$id = $_GET['id'];
$results=db_query("SELECT * FROM csvupload WHERE id = $id");
$header = array ( t('First name'), t('Last name'), t('Email'));
$rows = array();
foreach($results as $result){
$rows[] = array(
$result -> first_name,
$result -> last_name,
$result -> email,
);
}
return theme('table', array('header' => $header, 'rows' => $rows));
}
当我转到 localhost/site/node-1
时,我发现找不到页面。我需要用 node-2, node-3
来做...有人可以帮我解决这个问题吗?
获取当前页面节点id有多种方式,即:
if (arg(0) == 'node') {
$nid = arg(1);
}
或
if ($node = menu_get_object()) {
$nid = $node->nid;
}
那么,你的格式:
localhost/site/node-1
不是 drupal 的 url 格式,而是为您定制的格式。为此,您可以先使用:
$_SERVER['REQUEST_URI']
获取您的自定义路径。然后,由于您的路径仅包含一个“-”符号,您可以使用 php explode() 函数按该符号拆分并从减号开始找到字符串部分。
http://php.net/manual/en/function.explode.php
此外,使用视图是从数据库中获取内容的 "more natural" ("drupalish") 方式,但是如果您的任务是特定的...您必须这样做。但是如果你必须加载一个节点,那你为什么要选择 "csvupload" table 呢? Drupal 的数据库组织比您预期的要复杂一些。并非您添加到内容类型的所有字段都是一个 table 的一部分。更重要的是,您添加的每个字段都是不同的 table 并且您将需要大量连接才能获得所需的内容。这就是为什么最好使用视图...
我必须创建可以从 url (example: localhost/site/node-1
) 获取节点 ID 的函数,并将 link 设为 mysql 数据行,其中 (example: id=1)
我需要用几个节点动态地做它..我试试这个代码:
<?php
function module_name_menu() {
$items['node-%'] = array(
'title' => 'Row from database',
'page callback' => 'module_name_node_page_view',
'access callback' => 'node_access',
);
return $items;
}
function module_name_node_page_view(){
$id = $_GET['id'];
$results=db_query("SELECT * FROM csvupload WHERE id = $id");
$header = array ( t('First name'), t('Last name'), t('Email'));
$rows = array();
foreach($results as $result){
$rows[] = array(
$result -> first_name,
$result -> last_name,
$result -> email,
);
}
return theme('table', array('header' => $header, 'rows' => $rows));
}
当我转到 localhost/site/node-1
时,我发现找不到页面。我需要用 node-2, node-3
来做...有人可以帮我解决这个问题吗?
获取当前页面节点id有多种方式,即:
if (arg(0) == 'node') {
$nid = arg(1);
}
或
if ($node = menu_get_object()) {
$nid = $node->nid;
}
那么,你的格式:
localhost/site/node-1
不是 drupal 的 url 格式,而是为您定制的格式。为此,您可以先使用:
$_SERVER['REQUEST_URI']
获取您的自定义路径。然后,由于您的路径仅包含一个“-”符号,您可以使用 php explode() 函数按该符号拆分并从减号开始找到字符串部分。
http://php.net/manual/en/function.explode.php
此外,使用视图是从数据库中获取内容的 "more natural" ("drupalish") 方式,但是如果您的任务是特定的...您必须这样做。但是如果你必须加载一个节点,那你为什么要选择 "csvupload" table 呢? Drupal 的数据库组织比您预期的要复杂一些。并非您添加到内容类型的所有字段都是一个 table 的一部分。更重要的是,您添加的每个字段都是不同的 table 并且您将需要大量连接才能获得所需的内容。这就是为什么最好使用视图...