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>

以下のように分離するのではなく、コードがデータを返し続け、すべてを第 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 = '';
            }
         ?>

皆さんが理解してくれることを願っています。助けてくれてありがとう。

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 に答える