Php 将节点id与mysql表id匹配
我必须创建一个可以从url获取节点id的函数(Php 将节点id与mysql表id匹配,php,mysql,drupal,drupal-7,Php,Mysql,Drupal,Drupal 7,我必须创建一个可以从url获取节点id的函数(示例:localhost/site/node-1),并链接到mysql数据库行,其中是(示例:id=1),我需要使用多个节点动态执行此操作。。我尝试以下代码: <?php function module_name_menu() { $items['node-%'] = array( 'title' => 'Row from database', 'page callback' => 'module_name_n
示例:localhost/site/node-1
),并链接到mysql数据库行,其中是(示例: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));
}
有几种方法可以获取当前页面节点id,即:
if (arg(0) == 'node') {
$nid = arg(1);
}
或
然后,您的格式:
localhost/site/node-1
不是drupal的url格式,而是为您定制的。为此,您可以首先使用:
$_SERVER['REQUEST_URI']
获取自定义路径。然后,由于您的路径只包含一个“-”号,因此可以使用php explode()函数按该号拆分,并从减号中找到字符串部分
此外,使用视图是从数据库获取内容的“更自然的”(“drupalish”)方式,但如果您的任务是特定的,您必须这样做。但如果必须加载节点,那么为什么选择“csvupload”表呢?Drupal的数据库组织比您预期的要复杂一些。并不是所有添加到内容类型的字段都是一个表的一部分。更重要的是,您添加的每个字段都是不同的表,您需要大量的连接才能获得所需的内容。这就是为什么最好使用视图…有几种方法可以获取当前页面节点id,即:
if (arg(0) == 'node') {
$nid = arg(1);
}
或
然后,您的格式:
localhost/site/node-1
不是drupal的url格式,而是为您定制的。为此,您可以首先使用:
$_SERVER['REQUEST_URI']
获取自定义路径。然后,由于您的路径只包含一个“-”号,因此可以使用php explode()函数按该号拆分,并从减号中找到字符串部分
此外,使用视图是从数据库获取内容的“更自然的”(“drupalish”)方式,但如果您的任务是特定的,您必须这样做。但如果必须加载节点,那么为什么选择“csvupload”表呢?Drupal的数据库组织比您预期的要复杂一些。并不是所有添加到内容类型的字段都是一个表的一部分。更重要的是,您添加的每个字段都是不同的表,您需要大量的连接才能获得所需的内容。这就是为什么最好使用视图…SQL注入警报。对于未发现问题的页面,请检查您是否在Apache中启用了mod_rewrite并在.htaccess文件中正确设置。一个附带的问题是,如果
node-1
是URI的一部分,它将不在$\u GET
中。您需要解析$\u SERVER['REQUEST\u URI']
以找出用户请求的节点id。顺便说一句,不需要再问两次相同的问题。SQL注入警报对于未找到的页面问题,请检查您是否在Apache中启用了mod\u rewrite并在.htaccess文件中正确设置。一个附带的问题是,如果node-1
是URI的一部分,它将不在$\u GET
中。您需要分析$\u服务器['REQUEST\u URI']
以找出用户请求的节点id。顺便说一句,不需要再问两次同样的问题。我尝试了$\u服务器['REQUEST\u URI']
,但仍然不起作用。。你能说得更具体一点吗如果你有什么建议,那会很有帮助的@米浪你说“没用”是什么意思?你写出来了吗?它包含什么字符串?我是drupal的新手,所以我不确定我是否用正确的方法。。代码是:$uri=$\u服务器['REQUEST\u uri'];分解(“-”,$uri)$results=db_查询(“从csvupload中选择*,其中id=$uri”)代码>其余的都一样。。Hvala unapred@MilanGexplode()正在返回结果,而您只是忽略了它。在每个“可疑”行打印出变量后,您必须确保哪一步失败。在此之前,db_query()调用print out$uri的目的是确定它的值是否正确。我尝试了$\u服务器['REQUEST\u uri']
。。你能说得更具体一点吗如果你有什么建议,那会很有帮助的@米浪你说“没用”是什么意思?你写出来了吗?它包含什么字符串?我是drupal的新手,所以我不确定我是否用正确的方法。。代码是:$uri=$\u服务器['REQUEST\u uri'];分解(“-”,$uri)$results=db_查询(“从csvupload中选择*,其中id=$uri”)代码>其余的都一样。。Hvala unapred@MilanGexplode()正在返回结果,而您只是忽略了它。在每个“可疑”行打印出变量后,您必须确保哪一步失败。在此之前,db_query()调用print out$uri以确定其值是否正确。