2013-11-05 74 views
0

我不是很擅長php和mysql,但基於我的代碼,我能夠顯示我想要的結果,但它不顯示在正確的DOM結構體。PHP顯示div,h1,ul使用while循環中的數據

我想顯示象下面這樣:

<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 = ''; 
      } 
     ?> 

希望你們明白。預先感謝幫助傢伙。在同時

+1

將數據庫處理代碼與HTML處理代碼分開 –

+0

還利用MySQLi的能力和使用[變量綁定](http://www.php.net/manual/en/mysqli.quickstart.prepared-statements.php)而不是將所有內容填充到SQL語句中。 – Passerby

+0

謝謝你的回覆。你提到的先進水平是什麼? = x – Dr3am3rz

回答

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>'; 
} 

如果在未使用,你甚至可以刪除,如果檢查(內while循環)進一步腳本。

+0

嗨Adil,感謝您的幫助,但if檢查中的$數據應該只顯示不同數據的標題1次,而不是重複顯示標題。這解釋瞭如果檢查在那裏。 – Dr3am3rz