2012-07-10 106 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