从数组中的数据库中获取多行
Get multiple rows from database in array
通过下面的代码,我可以获取类别 ID 和该类别中的产品名称。回显类别 ID,并在其下方显示 select 以及该类别的产品名称。
现在看起来像这样:
<label>37</label> <!--category id-->
<select>
<option>product one</option>
<option>product two</option>
</select>
但我需要它来显示选项值产品 ID 中的类别名称。
像这样:
<label>category name</label>
<select>
<option value="1">product one</option>
<option value="2">product two</option>
</select>
如何在下面的代码中实现?
$categories = array();
$sql= "
SELECT a.id
, a.name
, a.active
, b.id product_id
, b.name product_name
, b.flag_active
, c.product_id
, c.group_id
FROM products_groupnames a
JOIN products_group c
ON a.id = c.group_id
JOIN products_name b
ON b.id = c.product_id
WHERE a.active=1
AND b.flag_active = 1
";
$result = $mysqli->query($sql);
echo "<h4>Select products by groups</h4>";
while($row = $result->fetch_assoc()) {
$categories[$row['id']][] = $row['product_name'];
}
foreach($categories as $key => $category){
echo '<label>'.$key.'</label><br/>';
echo '<select>';
foreach($category as $item){
echo "<option>".$item."</option>";
}
echo "</select><br/>";
}
使您的 $categories
二维数组:
while ($row = $result->fetch_assoc()) {
$cat = $row['id'];
if (isset($categories[$cat])) {
$categories[$cat]['products'][] = $row;
} else {
$categories[$cat] = array('name' => $row['name'], products => array($row));
}
}
然后你可以使用嵌套循环显示它:
foreach ($categories as $category) {
echo '<label>'.$category['name'].'</label>';
echo '<select>';
foreach ($category['products'] as $prod) {
echo '<option value="'.$prod['product_id'].'">'.$prod['product_name'].'</option>';
}
echo '</select><br/>';
}
通过下面的代码,我可以获取类别 ID 和该类别中的产品名称。回显类别 ID,并在其下方显示 select 以及该类别的产品名称。 现在看起来像这样:
<label>37</label> <!--category id-->
<select>
<option>product one</option>
<option>product two</option>
</select>
但我需要它来显示选项值产品 ID 中的类别名称。 像这样:
<label>category name</label>
<select>
<option value="1">product one</option>
<option value="2">product two</option>
</select>
如何在下面的代码中实现?
$categories = array();
$sql= "
SELECT a.id
, a.name
, a.active
, b.id product_id
, b.name product_name
, b.flag_active
, c.product_id
, c.group_id
FROM products_groupnames a
JOIN products_group c
ON a.id = c.group_id
JOIN products_name b
ON b.id = c.product_id
WHERE a.active=1
AND b.flag_active = 1
";
$result = $mysqli->query($sql);
echo "<h4>Select products by groups</h4>";
while($row = $result->fetch_assoc()) {
$categories[$row['id']][] = $row['product_name'];
}
foreach($categories as $key => $category){
echo '<label>'.$key.'</label><br/>';
echo '<select>';
foreach($category as $item){
echo "<option>".$item."</option>";
}
echo "</select><br/>";
}
使您的 $categories
二维数组:
while ($row = $result->fetch_assoc()) {
$cat = $row['id'];
if (isset($categories[$cat])) {
$categories[$cat]['products'][] = $row;
} else {
$categories[$cat] = array('name' => $row['name'], products => array($row));
}
}
然后你可以使用嵌套循环显示它:
foreach ($categories as $category) {
echo '<label>'.$category['name'].'</label>';
echo '<select>';
foreach ($category['products'] as $prod) {
echo '<option value="'.$prod['product_id'].'">'.$prod['product_name'].'</option>';
}
echo '</select><br/>';
}