所以我正在创建一个动态菜单。我已将菜单的主要类别存储在单独的表中,而子类别存储在另一个表中。 它们以这种方式存储
Categories Table
id cat_name
1 HOME,
2 PRODUCTS,
3 SOLUTIONS,
4 NEWS & GALLERY,
5 DOWNLOADS,
6 CONTACT
现在我正在运行查询
$sql="SELECT * FROM categories";
$query = mysqli_query($con, $sql);
while($row = mysqli_fetch_assoc($query)) {
$row['cat_name'];
$cat=explode(",",$row['cat_name']);
}
然后在需要的地方我打印像这样的值
<?php echo $cat[0]; .. echo $cat[1]; //and so on ?>
现在看起来像this。它应该看起来像this 但是这个解决方案的问题是我必须定义数组的索引来打印它。
我正在为这个开发管理面板,我希望如果管理员添加一个新的菜单项,那么它应该自动获取并显示它。 但是使用这种解决方案是不可能的。 我正在考虑使用for循环迭代值,但无法正确使用。
答案 0 :(得分:0)
您可以将其保存在数组中,然后再访问这些值。
$sql="SELECT * FROM categories";
$query = mysqli_query($con, $sql);
$cat = array();
while($row = mysqli_fetch_assoc($query)) {
$cat[]=$row['cat_name']
}
现在:
foreach ($cat as $category) {
$cate_gory = explode("," , $category);
foreach ($cate_gory as $categories) {
echo $categories . "<br>";
}
}
答案 1 :(得分:0)
使用foreach($ query as $ rows)
或
用于($ i = 0; $ i&lt; count($ query); $ i ++)
答案 2 :(得分:0)
也许你也可以尝试这个
$sql="SELECT * FROM categories";
$query = mysqli_query($con, $sql);
while($row = mysqli_fetch_assoc($query))
{
$row['cat_name'];
$cat=explode(",",$row['cat_name']);
foreach($cat as $catss)
{
$cat = trim($catss);
$categories .= "<category>" . $cat . "</category>\n";
}
}
答案 3 :(得分:0)
你可以尝试这种方式,你想这样的动态菜单:
$sql="SELECT * FROM categories";
$query = mysqli_query($con, $sql);
$menu = '';
$menu .= '<ul>';
while($row = mysqli_fetch_assoc($query))
{
$menu .= '<li>' . $row['cat_name'] . '</li>';
}
$menu .= '</ul>';
echo $menu;
从表中获取数据时,您可以使用字段名称直接打印该值。如果你想进一步使用它,你必须添加一个数组,如:
$cat[] = $row['cat_name'];
然后您可以使用for或while:
以这种方式使用此值foreach ($cat as $value) {
echo $value;
}
答案 4 :(得分:0)
foreach($cats as $cat)
{
echo $cat;
}
for ($i=0; $i<count($cats); $i++)
{
echo $cats[$i];
}
<?php
$cats = 'Stack overflow PHP questions';
$cats = explode(' ',$cats);
$html = '<ul>';
foreach($cats as $cat)
{
$html .= '<li>' . $cat . '</li>';
}
$html .= '</ul>';
echo $html;
?>
在这种情况下,您使用的while循环将遍历从sql语句返回的所有值,因此无需添加更多复杂性。我会从字段名称中删除逗号并以这种方式回显html。
$sql="SELECT * FROM categories";
$query = mysqli_query($con, $sql);
$html = '<ul>';
while($row = mysqli_fetch_assoc($query)) {
$html .= '<li>' . $row['cat_name'] . '</li>';
}
$html .= '</ul>';
echo $html;
?>
答案 5 :(得分:0)
echo '<ul>';
foreach ($cat as $val) {
echo "<li>{$val}</li>";
}
echo '</ul>';
而不是index
。此外,这应该比for
循环更快,更易读。