簡體   English   中英

使用自定義PHP MVC在另一個foreach循環內部循環

[英]foreach loop inside another foreach loop using Custom PHP MVC

我有一個表1 產品和表2 供應商

表結構是這樣的:

制品

CREATE TABLE IF NOT EXISTS `products` (
`id_product` int(11) NOT NULL AUTO_INCREMENT,   
`id_supplier` int(11) NOT NULL,   
`name_product` varchar(20) NOT NULL,     
PRIMARY KEY (`id_product`) )
ENGINE=InnoDB  DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ;

供應商

CREATE TABLE IF NOT EXISTS `suppliers` (
`id_supplier` int(11) NOT NULL AUTO_INCREMENT,   
`name_supplier` varchar(11) NOT NULL,    
PRIMARY KEY (`id_supplier`) ) 
ENGINE=InnoDB  DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ;

型號:( suppliers_model.php

class Suppliers_Model extends Model{

    public function fetchSuppliers(){
        stmt = $this->db->prepare("SELECT * FROM suppliers");
        $stmt->setFetchMode(PDO::FETCH_OBJ);
        $stmt->execute();
        return $stmt->fetchAll();       
    }
}

控制器( suppliers.php

class Suppliers extends Controller{
    function __construct(){
        parent::__construct();
    }

    public function index(){
        $this->view->Suppliers= $this->model->fetchSuppliers();
    }
}

查看:

<table>
    <tr>
        <th>ID</th>
        <th>Name of supplier</th>
        <th>List of products</th>
    </tr>
    <?php foreach($this->Suppliers AS $key=>$value):?>
    <tr>
        <td><?php echo $value->id_supplier; ?></td>
        <td><?php echo $value->name_supplier; ?></td>
        <td>
                <?php foreach():?>
                    **HERE I Wante To display a liste of products**
                    1. Product A
                    2. Product B
                    etc....
                <?php endforeach;?>
        </td>
    </tr>
    <?php endforeach;?>

如何創建另一個模型和控制器來獲取產品列表並傳遞值

$值 - > id_supplier

作為顯示每個供應商的產品清單的條件?

我試過這段代碼,但它不起作用

    public function listProducts($id_supplier){
        stmt = $this->db->prepare("SELECT * FROM products WHERE id_supplier=$id_supplier");
        $stmt->setFetchMode(PDO::FETCH_OBJ);
        $stmt->execute();
        return $stmt->fetchAll();

    }

並將此代碼添加到控制器

$this->view->listProducts= $this->model->listProducts('id_supplier');

並嘗試使用foreach循環遍歷products表以檢索產品列表但它不起作用

注意:我正在使用自定義PHP MVC

由於您已經設置了模型方法來獲取產品,因此只需在控制器中使用它即可。

不要嘗試在視圖內部進行調用,在控制器內部進行調用。

控制器:

public function index()
{

    $suppliers = $this->model->fetchSuppliers();
    foreach($suppliers as &$s) {
        $s->products = $this->model->listProducts($s->id_supplier);
    }

    $this->view->Suppliers = $suppliers; 
}

然后在您看來,繼續你所擁有的:

<table>
    <tr>
        <th>ID</th>
        <th>Name of supplier</th>
        <th>List of products</th>
    </tr>
    <?php foreach($this->Suppliers AS $key=>$value):?>
    <tr>
        <td><?php echo $value->id_supplier; ?></td>
        <td><?php echo $value->name_supplier; ?></td>
        <td>
            <?php foreach($value->products as $k => $p): ?>
               <p><?php echo ($k + 1) '. ' . $p->product_name; ?></p>
            <?php endforeach;?>
        </td>
    </tr>
    <?php endforeach;?>
</table>

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM