2013-03-04 60 views
1

我有两个表一个类别表和一个工厂表。 在我的类别表中我有以下几行。查看表加入codeigniter

idcategory 
category 

在我的工厂表中,我有以下几行。

idfactories 
factoryname 
postcode 
country 
telephone number 
email 
website 
profile 
adress 
idcategory 

我有另一个表,我有idfactory和idcategory也存储。

我的factorycategories表中有以下几行。

idfactorycat 
idfactory 
idcategory 
factorycat 

我改变了我的类模型中的加入,因为我想在我的网站类别,当我在一个类别点击谁被存储在该类别中的工厂有露面。

在我的模型,我有

$this->db->select('*'); 
$this->db->from('bedrijfcategorieen'); 
$this->db->join('bedrijfcategorieen', 'bedrijfcategorieen.idbedrijven = bedrijven.idbedrijven'); 
$this->db->join('bedrijfcategorieen', 'bedrijfcategorieen.idcategorieen = categorieen.idcategorieen'); 
$query = $this->db->get(); 

什么其实我有我的控制器和视图存储? 我对codeigniter很陌生。

ps:我翻译了我的行,所以很容易理解别人,因为我是荷兰人。

感谢

编辑: 这是一个有点棘手解释,但我有一个侧边栏catogories。

Categories 

cars 
cars parts 
books 
etc etc... 

我想创建每个类别的链接。

点击时,让我们说汽车。我想去工厂出现的结果页面,因为汽车的ID = 1,所以有一个类别id = 1。 这是我真正的问题。我想我需要加入。

希望你能理解它。

再次感谢。

+0

好吧,这有点像要求太多,但我会更新我的答案,以适应您的编辑 – 2013-03-04 13:17:37

回答

0

编辑以符合您的编辑

根据您的编辑,我只是​​让你在这里的基本思路。请参阅笨手册的细节:

//型号

function getresults($segment3){ 
    $this->db->select('*'); 
    $this->db->from('category'); 
    $this->db->join('factories', 'category.idcategory. ' = factories.idfactories'); 
    $this->db->join('factorycategories', 'factorycategories.idfactory = ' . $segment3); 

    $query = $this->db->get(); 
    return $query->result(); 
} 

//Note that it would return only results that match in all tables. 
//If you need to return more of a table, use right join or left join. 


function categories(){ //Call this from controller to create the initial links 
    $query = $this->db->get('category'); 
    return $query->result(); 
} 

//控制器

function pageCategories(){ // Shows initial categories links on page 
    $data["links"] = $this->modelname->categories(); 
    $this->load->view("page-to-view"); 
} 

function pageFactories(){ // takes categories and shows factories 
    $this->load->helper('url'); 
    $segment3 = $this->uri->segment(3); 
    $data["results"] = $this->modelname->getresults($segment3); 
    $this->load->view("page-to-view"); 
} 

//查看

print_r($results); //run a test - debug 

显示您的链接(注段图案):

if(isset($links) && is_array($links)){ 
    foreach($links as $k => $value){ 
     echo '<a href="'.base_url().'Yourcontroller/pageFactories/'.$value->idcategory.' ">' .$value->category. '</a>'; 
     echo "<br />"; 
    } 
} 

if(isset($results) && is_array($results)){ 
    foreach($results as $key => $row){ 
     echo $row->category; 
     echo "<br />"; 
     echo $row->factoryname; 
     //It goes on as much as you want 
    } 
} 

这只是让你看到大局。

如何将其转换回荷兰文是我无法弄清的。请注意:google.translate.com会将大量的空白区域搞乱,您可能需要清理它们。

+0

我可以把它翻译回荷兰人自己,所以这没问题。这看起来不错,我会尝试这个谢谢:) – 2013-03-04 10:55:58

+0

我不能真的得到它的工作。也许你们明白我错了。我有一个侧边栏,我查看我的类别。这工作正常。但然后我想链接到另一个页面,所以当点击我显示te类别谁拥有该类别ID。 – 2013-03-04 11:23:14

+0

编辑了一下我的问题。根据编辑:请看看它。 – 2013-03-04 11:27:09

0

这是一个更一般的MVC问题。你的数据库模式对于这个问题并不重要,因为你想知道如何访问数据,而不是如何优化你的查询(从我了解的内容来看)...

所以你的模型需要返回一些东西,比如return $query->result();。然后你可以在你的控制器中使用它来获取这些数据并将其发送到视图。例如:

控制器

$data['my_data'] = $this->my_model->my_get_function(); // this is calling your function above 
$this->load->view('my_view', $data); // loads my_view and sends the data array to it 

在视图中,你把所有的presentional(HTML)的数据,但你有访问您控制器发来的数据,在我们的情况下,这将是$my_data这是由您所做的查询中返回的所有行组成的对象。这将显示你的数据:

查看

// ...html here... 
<div> 
    <pre> 
     <?php var_dump($my_data); ?> 
    </pre> 
</div> 
// ...html here... 

这些控制器和视图的只是例子部分。阅读关于MVC的更多信息,以更好地了解它应该如何工作。

+0

是的,但我也想知道如果我的模型是正确的。因为我对codeigniter – 2013-03-04 10:16:13

+0

很陌生,但我会看看它并尝试。 – 2013-03-04 10:17:20

+0

它看起来很好,你只需要将它包装成一个方法/函数(我在上面的例子中使用了'my_get_function'作为函数名和'my_model'作为模型名称。 – Shomz 2013-03-04 10:19:24