[英]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.