迭代从mysqli获取的值

时间:2017-08-23 05:17:29

标签: php mysql html5 mysqli

所以我正在创建一个动态菜单。我已将菜单的主要类别存储在单独的表中,而子类别存储在另一个表中。 它们以这种方式存储

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循环迭代值,但无法正确使用。

6 个答案:

答案 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循环

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循环更快,更易读。