2013-03-04 56 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