2012-06-14 47 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>