2012-06-14 63 views
1

我想按佈局和排序順序排序我的圖像。我有點做了,但並不完全如我所願。數據排序PHP

<div id="sortableImages"> 
    <ul> 
     <?php 
      $galleryID = $_SESSION['newGalleryId']; 

      $query = "SELECT * 
         FROM galleryimage 
         WHERE galleryId = $galleryID 
         ORDER BY sort 
         AND layout 
         ASC"; 
      $result = mysql_query($query); 

      while($row = mysql_fetch_array($result, MYSQL_ASSOC)) { 
       $sortImageName = $row['OrgImageName']; 
       $sortPath = "../data/gallery/" . $_GET['edit'] . "/images/album/" . $sortImageName; 
     ?> 
      <li class="sortPhotos" id="recordsArray_<?php echo $row['id']; ?>"> 
       <img src="<?php echo $sortPath ?>" />        
      </li> 
     <?php } ?> 
    </ul> 
</div> 

這給我的

<ul class="ui-sortable"> 
        <li class="sortPhotos" id="recordsArray_1392"> 
       <img src="../data/gallery/208/images/album/front_cover.jpg" />        
      </li> 
        <li class="sortPhotos" id="recordsArray_1393"> 
       <img src="../data/gallery/208/images/album/007.jpg" />        
      </li> 
        <li class="sortPhotos" id="recordsArray_1394"> 
       <img src="../data/gallery/208/images/album/009.jpg" />        
      </li> 
</ul> 

輸出我希望能夠得到它看起來像

<h2>Layout 1</h2> 
<ul class="ui-sortable"> 
        <li class="sortPhotos" id="recordsArray_1392"> 
       <img src="../data/gallery/208/images/album/front_cover.jpg" />        
      </li> 
</ul> 
<h2>Layout 2</h2> 
<ul> 
        <li class="sortPhotos" id="recordsArray_1393"> 
       <img src="../data/gallery/208/images/album/007.jpg" />        
      </li> 
        <li class="sortPhotos" id="recordsArray_1394"> 
       <img src="../data/gallery/208/images/album/009.jpg" />        
      </li> 
</ul> 

我需要一點點幫助搞清楚如何巢在PHP中正確循環。任何幫助將是一個很大的幫助。 謝謝

回答

0

您需要適當地設置一個標誌。

<div id="sortableImages"> 
    <h2>Layout 1</h2> 
    <ul class="ui-sortable"> 

    // Etc... 

    $first = true; 
    while($row = mysql_fetch_array($result, MYSQL_ASSOC)) { 
     $sortImageName = $row['OrgImageName']; 
     $sortPath = "../data/gallery/" . $_GET['edit'] . "/images/album/" . $sortImageName; 

    ?> 
     <li class="sortPhotos" id="recordsArray_<?php echo $row['id']; ?>"> 
      <img src="<?php echo $sortPath ?>" />        
     </li> 
    <?php 
     if($first === true) { 
      $first = false; 
    ?> 
    </ul> 
     <h2>Layout 2</h2> 
    <ul> 
    <?php 
     } 
    } 
?> 
    </ul> 
</div> 
+0

請問這個可擴展到利用柱'layout'在mysql表? – stUrb

+0

@stUrb - ...什麼? – nickb

+0

在您的代碼中,您將分區設爲靜態分區,即:「佈局1」或「佈局2」。如果要佈局3,甚至佈局4,那麼該怎麼辦?然後,您的解決方案就無法工作。 – stUrb

0

$查詢= 「SELECT * FROM galleryimage WHERE galleryId = $ galleryID ORDER BY排序 和佈局 ASC」;

應該是:

SELECT 
    layout,sort, id, orgImageName 
FROM galleryimage 
GROUP BY layout 
ORDER BY layout, sort 
1
<?php 

$galleryID = $_SESSION['newGalleryId']; 

$layout1 = $layout2 = ""; 

$query = "SELECT * 
      FROM galleryimage 
      WHERE galleryId = $galleryID 
      ORDER BY sort 
      AND layout 
      ASC"; 
$result = mysql_query($query); 

while($row = mysql_fetch_array($result, MYSQL_ASSOC)) { 
    $sortImageName = $row['OrgImageName']; 
    $sortPath = "../data/gallery/" . $_GET['edit'] . "/images/album/" . $sortImageName; 
    if ($sortImageName == 'front_cover.jpg'){ 
     $layout1 .= 
      "<li class='sortPhotos' id='recordsArray_{$row['id']}'> 
       <img src="$sortPath" />        
      </li>"; 
    } else { 
     $layout2 .= 
      "<li class='sortPhotos' id='recordsArray_{$row['id']}'> 
       <img src="$sortPath" />        
      </li>"; 
    } 
} 
?> 
<h2>Layout 1</h2> 
<ul class="ui-sortable"> 
    <?=$layout1?> 
</ul> 
<h2>Layout 2</h2> 
<ul> 
    <?=$layout2?> 
</ul>