0

我在 php 和 mysql 方面不是很好,但根据我的代码,我能够显示我想要的结果,但是它没有以正确的 DOM 结构显示。

我想显示如下:

<div class="container">
<h1>Header</h1>
<ul><li>
<p>data 1</p>
<p>data 2</p>
</li></ul>
</div>

<div class="container">
<h1>Header</h1>
<ul><li>
<p>data 1</p>
<p>data 2</p>
</li></ul>
</div>

我不知道为什么我的代码一直向我返回数据并在第一级 ul 中显示所有内容,而不是像下面这样分开:

<div class="container">
<h1>Header</h1>
<ul><li>
<p>data1</p>
<p>data 2</p>

<div class="container">
<h1>Header</h1>
<ul><li>
<p>data1</p>
<p>data 2</p>
</li></ul>
</div>
</li></ul>
</div>

我玩过代码并尝试了不同的方法,但仍然无法正确显示。下面是我的代码:

<?php
        $data='';
        $previousVal = '';
        // Update new images
        $levelArray=array('B1','L1','L2','main','L3','L4','L5');
            foreach ($levelArray as $i=>$level) {
                $img = "img/".$level.".jpg";
                if($level=='main'){
                    $result = mysqli_query($con,"SELECT * FROM floor_directory ORDER BY categories");
                }
                else {
                    $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 .= '<div class="container"><h1>'.$row['categories'].'</h1>';
                         $previousVal = $row['categories'];
                    }
                     $data .= '<ul><li>
                               <p class="float_left">'.$row['name'].'</p>
                               <p class="float_right">'.$row['unit_number'].'</p>
                               </li></ul></div>';
                }

                if($levelArray[$i]=='main'){
                    echo '<div class="swiper-slide">
                    <img src="'.$img.'" alt="" />
                        <div class="content_container_main">'.$data.'</div>
                  </div>';
                }
                else {
                    echo '<div class="swiper-slide">
                    <img src="'.$img.'" alt="" />
                        <div class="content_container">'.$data.'</div>
                  </div>';
                }
                $data='';
                $previousVal = '';
            }
         ?>

希望大家理解。在此先感谢您的帮助。

4

1 回答 1

0

在while中更改代码将使其工作,更改此代码,

while($row = mysqli_fetch_array($result)){
  if($previousVal != $row['categories']){
    $data .= '<div class="container"><h1>'.$row['categories'].'</h1>';
    $previousVal = $row['categories'];
  }
  $data .= '<ul><li>
  <p class="float_left">'.$row['name'].'</p>
  <p class="float_right">'.$row['unit_number'].'</p>
  </li></ul></div>';
}

有了这个,

while($row = mysqli_fetch_array($result)){
  if($previousVal != $row['categories']){
    $previousVal = $row['categories'];
  }
  $data .= '<div class="container"><h1>'.$row['categories'].'</h1>';
  $data .= '<ul><li>
  <p class="float_left">'.$row['name'].'</p>
  <p class="float_right">'.$row['unit_number'].'</p>
  </li></ul></div>';
}

如果不在进一步的脚本中使用,您甚至可以删除 if 检查(在 while 循环内)。

于 2013-11-05T07:59:23.723 回答