Php 在带有html标记的while循环中使用多个数据显示一次类别

Php 在带有html标记的while循环中使用多个数据显示一次类别,php,mysqli,Php,Mysqli,我一直在努力解决这个问题,并找到了很多解决方案,但仍然无法开始工作。我对这些代码感到非常失望,我想我会一步一步地去做,而不是把它们一股脑地放在一起,然后马上让它们工作 现在我的桌子是: categories | name fashion | chanel fashion | prada cafes | starbucks cafes | tcc dining | kfc dining | macdonalds 我想要达到的是 1) Echo-in

我一直在努力解决这个问题,并找到了很多解决方案,但仍然无法开始工作。我对这些代码感到非常失望,我想我会一步一步地去做,而不是把它们一股脑地放在一起,然后马上让它们工作

现在我的桌子是:

categories | name
fashion    | chanel
fashion    | prada
cafes      | starbucks
cafes      | tcc
dining     | kfc
dining     | macdonalds
我想要达到的是

1) Echo-ing out the categories <h1>fashion</h1> with once instead of duplicating and <ul> if it is starting on a new category

2) Echo-ing out all the <li>name</li> no matter how many of names are under that fashion

3) Echo-ing out </ul> if it is the last name in that fashion
1)以一次而不是重复的方式呼应类别,如果是从新类别开始,则呼应
    2) 呼应出所有的
  • 名字
  • ,不管有多少名字是这样的 3) 如果它是以这种方式显示的姓氏,则回显
其余的类别也是如此。这就是我目前的想法,我不知道这是否可行

我试过这样做:

$result = mysqli_query($con,"SELECT * FROM floor_directory WHERE level='$level' ORDER BY categories");
while($row = mysqli_fetch_array($result)){
                if($previousVal != $row['categories']){
                     $data .= '<h1>'.$row['categories'].'</h1><ul class="shop_listing">';
                     $previousVal = $row['categories'];
                }
                 $data .= '<li>
                           <p class="float_left">'.$row['name'].'</p>
                           </li></ul>';
            }
$result=mysqli_query($con,“从楼层目录中选择*,其中级别='$level'按类别排序”);
while($row=mysqli\u fetch\u数组($result)){
if($previousVal!=$row['categories'])){
$data.=''.$row['categories'.'.
    ; $previousVal=$row['categories']; } $data.='
  • 。$row['name']

'; }
我知道在li和ul的循环中有问题。这就是我被困很长时间的地方,在任何地方都找不到任何解决办法。无论我做什么,对于不同的类别,如果不是这样,我仍然无法接近

我得到的结果是:

<h1>fashion</h1>
<ul class="shop_listing">
<li><p>chanel</p></li>
</ul>
<li><p>prada</p></li>

<h1>dining</h1>
<ul class="shop_listing">
<li><p>kfc</p></li>
</ul>
<li><p>macdonald</p></li>
时尚
  • 香奈儿

  • 普拉达

  • 吃饭
    • 肯德基

  • 麦克唐纳

  • 或:

    时尚
    
    • 香奈儿

    • 普拉达

    • 吃饭
      • 肯德基

      • 麦克唐纳


    希望你们能帮帮我。对于那些刚刚添加链接并发表评论的读者,请阅读更多相关内容,不要在此处输入答案。我不需要,我已经很困惑了,我只是一个初学者。如果有人愿意指导我,甚至向我解释为什么我的代码不起作用,为什么给出的解决方案会起作用,我会很高兴。提前谢谢

    一种方法是使用
    类别
    作为键创建一个新数组,并将属于该类别的所有名称放入该类别的数组中。循环新数组并创建HTML

    PHP

    $temp_array=array()//临时阵列
    $result=mysqli_query($con,“从楼层目录中选择*,其中级别='$level'按类别排序”);
    while($row=mysqli\u fetch\u数组($result)){
    $temp_数组[$row['categories']][=$row['name'];//将数据放入临时数组
    }
    foreach($temp_数组作为$category=>$names){
    $data.=''.$category.'
      ; foreach($name作为$name){ $data.='
    • 。$name

    • '; } $data.='
        '; }

    未测试,但它应该满足您的需要。

    一种方法是使用您的
    类别作为键创建一个新数组,并将属于该类别的所有名称放入该类别的数组中。循环新数组并创建HTML

    PHP

    $temp_array=array()//临时阵列
    $result=mysqli_query($con,“从楼层目录中选择*,其中级别='$level'按类别排序”);
    while($row=mysqli\u fetch\u数组($result)){
    $temp_数组[$row['categories']][=$row['name'];//将数据放入临时数组
    }
    foreach($temp_数组作为$category=>$names){
    $data.=''.$category.'
      ; foreach($name作为$name){ $data.='
    • 。$name

    • '; } $data.='
        '; }

    未测试,但它应该满足您的需要。

    一种方法是使用您的
    类别作为键创建一个新数组,并将属于该类别的所有名称放入该类别的数组中。循环新数组并创建HTML

    PHP

    $temp_array=array()//临时阵列
    $result=mysqli_query($con,“从楼层目录中选择*,其中级别='$level'按类别排序”);
    while($row=mysqli\u fetch\u数组($result)){
    $temp_数组[$row['categories']][=$row['name'];//将数据放入临时数组
    }
    foreach($temp_数组作为$category=>$names){
    $data.=''.$category.'
      ; foreach($name作为$name){ $data.='
    • 。$name

    • '; } $data.='
        '; }

    未测试,但它应该满足您的需要。

    一种方法是使用您的
    类别作为键创建一个新数组,并将属于该类别的所有名称放入该类别的数组中。循环新数组并创建HTML

    PHP

    $temp_array=array()//临时阵列
    $result=mysqli_query($con,“从楼层目录中选择*,其中级别='$level'按类别排序”);
    while($row=mysqli\u fetch\u数组($result)){
    $temp_数组[$row['categories']][=$row['name'];//将数据放入临时数组
    }
    foreach($temp_数组作为$category=>$names){
    $data.=''.$category.'
      ; foreach($name作为$name){ $data.='
    • 。$name

    • '; } $data.='
        '; }
    未经测试,但它可以满足您的需要。

    试试这个

    $result = mysqli_query($con,"SELECT * FROM floor_directory WHERE level='$level' ORDER BY 
    
        categories");
        while($row = mysqli_fetch_array($result)){
                        if($previousVal != $row['categories']){
                             if($data) {
                                   $data .= "</ul>";
                             }
                             $data .= '<h1>'.$row['categories'].'</h1><ul class="shop_listing">';
                             $previousVal = $row['categories'];
                        }
                         $data .= '<li>
    
    
                         <p class="float_left">'.$row['name'].'</p>
                                       </li>';
                        }
    $data .= "</ul>";
    
    $result=mysqli\u query($con,“从floor\u目录中选择*,其中level='$level'按顺序排列
    类别);;
    while($row=mysqli\u fetch\u数组($result)){
    if($previousVal!=$row['categories'])){
    如果($数据){
    $data.=“”;
    }
    
    $temp_array=array();//temporary array
    
    $result = mysqli_query($con,"SELECT * FROM floor_directory WHERE level='$level' ORDER BY categories");
    
    while($row = mysqli_fetch_array($result)){
        $temp_array[$row['categories']][]=$row['name'];//put data into temporary array
    }
    
    foreach($temp_array AS $category=>$names){
        $data.='<h1>'.$category.'</h1><ul class="shop_listing">';
        foreach($names AS $name){
            $data.='<li>
                   <p class="float_left">'.$name.'</p>
                   </li>';
        }
        $data.='<ul>';
    }
    
    $result = mysqli_query($con,"SELECT * FROM floor_directory WHERE level='$level' ORDER BY 
    
        categories");
        while($row = mysqli_fetch_array($result)){
                        if($previousVal != $row['categories']){
                             if($data) {
                                   $data .= "</ul>";
                             }
                             $data .= '<h1>'.$row['categories'].'</h1><ul class="shop_listing">';
                             $previousVal = $row['categories'];
                        }
                         $data .= '<li>
    
    
                         <p class="float_left">'.$row['name'].'</p>
                                       </li>';
                        }
    $data .= "</ul>";