2012-07-02 67 views
0

我正在使用jQuery sortable()來在數據庫中排序圖像。 HTML如下。jQuery可排序 - PHP

<h2>Revision 1</h2> 

<ul class='sortable'> 
<li class='sortPhotos' id='item_249745' > 
    <img src="../data/gallery/13387/images/album/1650519801.jpg"/> 
    <p>1650519801.jpg</p> 
</li> 
<li class='sortPhotos' id='item_249744' > 
    <img src="../data/gallery/13387/images/album/704633205.jpg"/> 
    <p>704633205.jpg</p> 
</li> 
</ul> 

<h3>Revision 2</h3> 

<ul class='sortable'> 
<li class='sortPhotos' id='item_518811' > 
    <img src="../data/gallery/13387/images/album/001.jpg"/> 
    <p>001.jpg</p> 
</li> 
<li class='sortPhotos' id='item_518812' > 
    <img src="../data/gallery/13387/images/album/003.jpg"/> 
    <p>003.jpg</p> 
</li 
</ul> 

的JS

<script> 

    $(".sortable").sortable({stop:function(i) { 
      $.ajax({ 
       type: "GET", 
       url: "../albumUploader/queries/sort.php", 
       data: $(".sortable").sortable("serialize") 
      }); 
     }, 
     opacity:1.0 
    });  
</script> 

最後的SQL

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

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

與上面例子中的問題 - 第一次修訂是實際排序的唯一版本在DB中。其他版本不是。它確實從Chrome網頁開發人員擴展中的網絡監控中看出,兩個列表都發送到數據庫,但第二個不是寫入。任何想法在這一個?

+0

我需要弄清楚如何給一個唯一的ID給每個UL - 似乎排序只承認第一,不作爲.sortable等級 – Bungdaddy

+0

等待 - 這兩個列表是否被髮送到PHP代碼?你的回答似乎意味着是的,但你的評論似乎意味着沒有。 – Brilliand

回答

0

每個排序需要有它自己的唯一ID。我解決它:

ul id='sortable_" . $count ."' 
$count++; 

$(".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 
     });  
    }); 
0

一個解決方案是隻發送一個列表到服務器一次。這可以通過從$(this)$(".sortable")發送數據,而不是來完成:

$(".sortable").sortable({stop:function(i) { 
     $.ajax({ 
      type: "GET", 
      url: "../albumUploader/queries/sort.php", 
      data: $(this).sortable("serialize") 
     }); 
    }, 
    opacity:1.0 
}); 
+0

我想我應該限定,雖然這種事情是跨jQuery事件的標準,但我實際上沒有用這個特定的插件來測試它。 – Brilliand