2012-07-10 104 views
0

我使用jQuery可排序來操縱圖像順序並寫入數據庫。該功能運行良好。jQuery可排序PHP

PHP

echo "<div class='revisionNum'>"; 
      echo "<ul id='sortable_" . $count ."'>"; 

      while($row = mysql_fetch_array($result)) { 
       $sortImageName = $row['OrgImageName']; 
       $sortPath = "../data/gallery/" . $galleryID . "/images/album/" . $sortImageName; 
       echo "<li class='sortPhotos' id='item_{$row['id']}' >"; 
       echo '<img class="sortImage" src="'. $sortPath .'"/>'; 
       echo "<p>" . $sortImageName . "</p>"; 
       echo "</li>"; 
      } 
      echo "</ul>"; 
      echo "</div>"; 

的jQuery

//make sortable 
    $(".revisionNum").each(
     function(e) { 
     num = e + 1; 
     $("#sortable_" + num).sortable(
      {stop:function(i) { 
       serial = $("#sortable_" + num).sortable("serialize"); 
       $.ajax({ 
        type: "GET", 
        url: "../albumUploader/queries/sort.php", 
        data: serial 
       }); 
      }, 
      opacity:1.0, 
      //cursor: move 
     });  
    }); 

MYSQL

foreach($_GET['item'] as $key=>$value) { 

    mysql_query(" UPDATE galleryimage 
        SET sort = '{$key}' 
        WHERE id = '{$value}' 
       "); 

}問題是當我有多個<div class=''revisionNum>我只抓取最後UL的serial = $("#sortable_" + num)如果[.revisionNum],而不是我正在排序的實際UL。感謝您的幫助。讓我知道是否需要進一步澄清。

回答

2

我不知道我完全理解你的問題,但我認爲你正在尋找如下:

變量num將改變每個循環您在每個循環做。但最後它將具有最後一個循環的價值。因爲num似乎是一個全局變量,所以不能在停止函數中調用它。然後它會使用它的最後一個值。最後一個循環的值。 (解釋你的問題)

爲了解決這個問題,我建議你的代碼更改爲:

$(".revisionNum").each(
    function(e) { 
    $(this).children("ul").sortable(
     {stop:function(i) { 
      num = $(this).children("ul").attr("id").replace("sortable_", ""); 
      serial = $(this).children("ul").sortable("serialize"); 
      ... 

$(this)$(".revisionNum")您是通過循環,它會被記住,也停止功能。

+0

感謝您的回覆。我需要num值,因爲它是可排序使用的唯一標識符。沒有這一點,我失去了我的DB寫。我將添加SQL,以便您看到我在做什麼。應該早點完成 – Bungdaddy 2012-07-11 00:05:40

+0

我已經添加了一個新行:'num = $(this).children(「ul」)。attr(「id」)。replace(「sortable_」,「」);'where'num '由'ul'的ID檢索。這是否解決了它? – Lumocra 2012-07-11 11:34:20