php使用while循环显示div,h1,ul中的数据

时间:2013-11-05 07:02:30

标签: php mysqli

我在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>

我不知道为什么我的代码会一直向我返回数据并显示第1级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 = '';
            }
         ?>

希望你们明白。在此先感谢帮助人员。

1 个答案:

答案 0 :(得分:0)

更改代码同时会使其正常工作,更改此代码,

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 check(在while循环中)。