我想获取所有值以在PHP前端页面中显示它们。我在数据库中有两个表:
cat_id
,cat_name
pro_id
,cat_id
,cat_name
,pro_name
,price
我的product.php
代码(前端PHP文件):
<div class="content">
<div class="content_top">
<?php
$product = new Product();
$getProduct = $product->getAllProduct();
if (!empty($getProduct)) {
foreach($getProduct as $row) {
?>
<div class="heading">
<h3>Latest from <?php echo $row['cat_name']; ?></h3>
</div>
</div>
<div class="section group">
<h2><?php echo $row['product']['product_id']?></h2>
<h2><?php echo $row['product']['product_name']?></h2>
<p><?php echo $row['product']['price']?></p>
</div>
<?php
}
}
?>
</div>
我的Product.php
代码(后端类文件):
public function getAllProduct() {
$query = "SELECT p.*, c.cat_name, b.brand_name
FROM product as p, category as c, brand as b
WHERE p.cat_id = c.cat_id AND p.brand_id= b.brand_id
ORDER BY p.product_id DESC";
$data = $this->db->select($query);
$result = $data->fetch_all();
$product = array();
$product1 = array();
foreach ($result as $row) {
$product[$row[2]] = array(
'cat_id' => $row[2],
'cat_name' => $row[8]
);
$product1[$row[2]][$row[0]] = array(
'product_id' => $row[0],
'product_name' => $row[1],
'price' => $row[5]
);
}
$product2 = array();
foreach ($product as $id => $val) {
$product2[$id]= array(
'cat_id' => $val['cat_id'],
'cat_name' => $val['cat_name'],
'product' => $product1[$id],
);
array_push($product2, $tmp);
}
return $product2;
}
输出显示三个错误,如下所示:
注意:未定义的索引:第14行的product_id
注意:未定义的索引:第15行的正文
- 醇>
注意:未定义的索引:第16行的价格
答案 0 :(得分:0)
你似乎有3个表而不是2个? (品牌)。并且您在结果数组中似乎有更多的键作为表中的字段。这使调试变得不那么容易。但除此之外,我认为这是因为您以不同的格式存储产品。看看你的代码的这一部分:
$product1[$row[2]][$row[0]] = array(
'product_id' => $row[0],
'product_name' => $row[1],
'price' => $row[5]
);
您可以按行的索引2
和索引0
键入数组。
其次是你的代码的这部分
foreach($product as $id=> $val ) {
$product2[$id]= array(
'cat_id' => $val['cat_id'],
'cat_name' => $val['cat_name'],
'product' => $product1[$id],
);
array_push($product2, $tmp);
}
$tmp
变量未被使用,所以很奇怪这不会给你带来错误。
对于body
错误,我没有在您的代码中看到它使用,因此您对该错误采用了黑色。
所以使用以下原始问题的固定代码:
$product = array();
$product1 = array();
foreach($result as $row) {
$product[$row[2]] = array(
'cat_id' => $row[2],
'cat_name' => $row[8]
);
$product1[$row[2]][$row[0]] = array(
'product_id' => $row[0],
'product_name' => $row[1],
'price' => $row[5]
);
}
$product2 =array();
foreach($product as $id=> $val ) {
$product2[$id]= array(
'cat_id' => $val['cat_id'],
'cat_name' => $val['cat_name'],
'product' => $product1[$id],
);
//array_push($product2, $tmp);
}
并使用此数组作为我的输入:
$result = array(
array(
'1', // p id
'2', // p cat id
'product category_name', // p cat name
'product_x', // p name
'100', // p price
'category category name', // c name
'x', // ?
'x', // ?
'x' // ?
),
);
我在$product2
变量中得到以下数组结构。
array (
'product category_name' =>
array (
'cat_id' => 'product category_name',
'cat_name' => 'x',
'product' =>
array (
1 =>
array (
'product_id' => '1',
'product_name' => '2',
'price' => 'category category name',
),
),
),
)
<强> TLDNR; 强>
结论,数组中的'product'键也是一个数组。所以你需要像这样做foreach
:foreach ($row['product'] as $product => $pid) { ... }
,所以你的回声看起来像这样:
<h2><?php echo $product['product_id']?></h2>
<h2><?php echo $product['product_name']?></h2>
<p><?php echo $product['price']?></p>