我必须创建函数,我可以从url(example: localhost/site/node-1
)获取节点ID并链接到mysql databes row (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
时,我找不到Page。我需要用node-2, node-3
来做...有人可以帮我解决这个问题吗?
答案 0 :(得分:0)
有几种方法可以获取当前页面节点ID,即:
if (arg(0) == 'node') {
$nid = arg(1);
}
或者
if ($node = menu_get_object()) {
$nid = $node->nid;
}
然后,你的格式:
本地主机/站点/节点-1
不是drupal的网址格式,而是为您定制的内容。为此你可以先使用:
$_SERVER['REQUEST_URI']
获取自定义路径。然后,因为你的路径只包含一个&#34; - &#34;标志你可以使用php explode()函数来拆分该符号并从减号中找到字符串部分。
http://php.net/manual/en/function.explode.php
此外,使用视图更自然&#34; (&#34; drupalish&#34;)从数据库获取内容的方式,但如果你的任务是特定的......你必须这样做。但是如果你必须加载一个节点,那你为什么要选择&#34; csvupload&#34;表而不是? Drupal的数据库组织比您预期的要复杂一些。并非您添加到内容类型的所有字段都是一个表的一部分。更重要的是,您添加的每个字段都是不同的表格,您需要大量的联接才能获得所需的内容。这就是为什么使用视图会更好......