Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/69.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php Codeigniter-锚定uri段-创建模板文件以加载动态数据_Php_Mysql_Codeigniter - Fatal编程技术网

Php Codeigniter-锚定uri段-创建模板文件以加载动态数据

Php Codeigniter-锚定uri段-创建模板文件以加载动态数据,php,mysql,codeigniter,Php,Mysql,Codeigniter,我目前正在把一个静态站点变成一个动态站点,并且一直在使用codeigniter来做到这一点,没有任何问题。。直到现在 我的问题是,我希望有一个视图(网页)作为模板文件,并根据单击的链接从数据库中提取动态数据 网站上有一个职位概述页面,其中有一个侧栏,列出了所有当前空缺职位。我想要的是,当用户单击其中一个链接时,它将加载模板文件,并拉入与该工作相关的所有数据(工作描述、职位等) 我不认为我离实现这一目标还有多远,但我遇到了一些问题 首先,我在控制器(站点)中创建了一个函数,该函数加载一个模型和函数

我目前正在把一个静态站点变成一个动态站点,并且一直在使用codeigniter来做到这一点,没有任何问题。。直到现在

我的问题是,我希望有一个视图(网页)作为模板文件,并根据单击的链接从数据库中提取动态数据

网站上有一个职位概述页面,其中有一个侧栏,列出了所有当前空缺职位。我想要的是,当用户单击其中一个链接时,它将加载模板文件,并拉入与该工作相关的所有数据(工作描述、职位等)

我不认为我离实现这一目标还有多远,但我遇到了一些问题

首先,我在控制器(站点)中创建了一个函数,该函数加载一个模型和函数(getJobInfo),该函数从数据库中获取职务(取决于位置)。然后,它获取标题、导航、内容,并将其拉入名为“jobs”的视图中

在jobs overview页面中,我使用了foreach语句加载作业标题,该标题将用作单击的链接,在这里它将加载包含所有相关数据的模板文件。在这个foreach语句中,我使用了一个codeigniter锚语句将一个新函数(作业位置)加载回控制器,这将用于显示和获取所有作业特定的信息。我还将作业列表id作为锚点的第三段传递给了新的站点控制器功能(作业位置)中的新模型,其中只显示与该id相关的信息(其中查询)

如果这没有意义,希望这会澄清

控制器-作业概览功能

public function jobs(){
$this->load->model("get_db");
$data['jobheader'] = $this->get_db->getJobHeader('3');
$data['joblocationlisting'] = $this->get_db->getJobLocationListing('manchester');
$data['header'] = $this->get_db->getHeaders('3');
$data['content'] = $this->get_db->getContent('2');
$this->load->view("header", $data);
$this->load->view("nav");
$this->load->view("jobs", $data);
}
public function jobPosition(){
$this->load->model("get_db");
$data['jobposition'] = $this->get_db->getJobInfo();
$this->load->view("header", $data);
$this->load->view("nav");
this->load->view("jobTemplate", $data);
}
模型-获得职位

public function getJobLocationListing($job_location){
$query = $this->db->query("SELECT job_location, job_listing_id, job_title 
FROM job_location INNER JOIN job_listing ON job_location.job_location_id =
job_listing.job_location_id WHERE job_location = '$job_location'" );
return $query->result();
}
查看-作业

<ul>
<?php foreach($joblocationlisting as $row)
{ 
   $title = $row->job_title;
?>
<li>
<?php
   echo anchor("site/jobPosition/$row->job_listing_id", $title);
?>
</li>
<?php
}
?>
</ul>
public function getJobInfo(){
$query = $this->db->where('job_listing_id', $this->uri->segment(3));
$this->db->get('job_listing');
return $query->result();
}
<?php foreach($jobposition as $row)
{ 
  $jobtitle = $row->job_title;
  $jobdescription = $row->job_description;
}
?>

 h1><?php echo $jobtitle; ?></h1>
 <p><?php echo $jobdescription; ?></p>
模型-获取工作信息

<ul>
<?php foreach($joblocationlisting as $row)
{ 
   $title = $row->job_title;
?>
<li>
<?php
   echo anchor("site/jobPosition/$row->job_listing_id", $title);
?>
</li>
<?php
}
?>
</ul>
public function getJobInfo(){
$query = $this->db->where('job_listing_id', $this->uri->segment(3));
$this->db->get('job_listing');
return $query->result();
}
<?php foreach($jobposition as $row)
{ 
  $jobtitle = $row->job_title;
  $jobdescription = $row->job_description;
}
?>

 h1><?php echo $jobtitle; ?></h1>
 <p><?php echo $jobdescription; ?></p>
查看-职务-模板

<ul>
<?php foreach($joblocationlisting as $row)
{ 
   $title = $row->job_title;
?>
<li>
<?php
   echo anchor("site/jobPosition/$row->job_listing_id", $title);
?>
</li>
<?php
}
?>
</ul>
public function getJobInfo(){
$query = $this->db->where('job_listing_id', $this->uri->segment(3));
$this->db->get('job_listing');
return $query->result();
}
<?php foreach($jobposition as $row)
{ 
  $jobtitle = $row->job_title;
  $jobdescription = $row->job_description;
}
?>

 h1><?php echo $jobtitle; ?></h1>
 <p><?php echo $jobdescription; ?></p>

h1>

我遇到的问题是锚标记正在加载函数-site/jobPosition(和id号),例如site/jobPosition/1。我想要的是加载锚来运行函数site/jobPosition,但它需要将job_listing_id传递到函数中,然后函数将把它传递给getJobInfo模型。在这里,它将根据所剪辑的id获取数据,然后将其返回到jobPosition功能,以便将其显示在jobTemplate视图中

我离这样做还差得远吗?因为我觉得我和这段教程视频非常接近——它对他来说是删除数据,而不是选择和显示数据。
谢谢(很抱歉发了这么多的帖子)。

嗯,我弗兰基在理解这个问题时有点困难,如果我错了,请原谅我:

到目前为止,您正在使用uri段获取作业清单id

$query = $this->db->where('job_listing_id', $this->uri->segment(3));
您已经(使用anchor()方法)创建了正确的url,那么为什么在控制器中忽略传递的参数,并依赖uri段获取它呢?为什么不做:

   public function jobPosition($job_listing_id){
    $this->load->model("get_db");
    $data['jobposition'] = $this->get_db->getJobInfo($job_listing_id);
    $this->load->view("header", $data);
    $this->load->view("nav");
    this->load->view("jobTemplate", $data);
    }
模型-获取工作信息

public function getJobInfo($job_listing_id){
$query = $this->db->where('job_listing_id', $job_listing_id);
$this->db->get('job_listing');
return $query->result();
}
当您在url中传递其他段时,它们会自动作为参数传递给控制器方法,因此像您这样的url

  echo anchor("site/jobPosition/$row->job_listing_id", $title);
将自动向jobPosition()控制器传递一个参数,该参数可能是您想要的

编辑

也许我明白了。尝试更改路线:

// Put this after the default routes:
$route['jobPosition/(:num)'] = "jobPosition/jobPosition/$1";

现在确保您的控制器jobposition.php具有我在这里发布的类jobposition和方法jobposition($job\u listing\u id)。为了简单起见,我使用“jobPosition”作为方法名称,根据您的喜好进行相应的更改:路由器将拾取与您的规则匹配的URL(
$route['jobPosition/(:num)]
),并将请求转发给您定义的任何控制器/方法/参数

我明白了,谢谢我编辑了与之匹配的代码。我对codeigniter已经很满意了,但仍然不熟悉这样的东西,但我知道它是如何工作的。但是,当用户单击链接时,jobPosition函数不会运行,因为我相信它正在寻找一个名为jobPosition/1的函数,您显然无法将其作为控制器名称。如果我给你我正在做的项目的URL,可能会更有意义——如果你点击一个工作列表链接,它会加载一个空白页面。哦,也许我明白了,检查我的编辑。我相信你的问题与routingOk有关。谢谢,我是否需要像你所描述的那样为这个函数/方法创建一个新的控制器,或者我可以将(jobPosition/jobPosition/$1)更改为我为每个称为“站点”的函数使用的控制器。因此,它不会读到-(site/jobPosition/$1)-是否可能需要一个新的控制器?我已经用jobPosition/jobPosition/$1尝试过了,我将锚标记更改为链接到新控制器,并收到错误消息。我还尝试将其更改为site/jobPosition/$1,但什么也没发生。任何想法,因为它似乎如此接近。我已经解决了这个问题。在“获取职务信息”功能中,用于选择和返回数据的查询错误。而不是使用:$query=$this->db->where('job_listing_id',$this->uri->segment(3))$这->数据库->获取('job_listing');它应该是:$query=$this->db->get_where('job_listing',array('job_listing_id'=>$job_listing_id));返回$query->result();希望这有助于解决其他人的问题。不管怎样,谢谢你的帮助,这很有用。