2012-06-20 56 views
0

我是一個web開發人員,目前我使用一個非常討厭,我認爲困難的方法爲我的cms爲以下;保存排序順序在dabatase

我正在做一個畫廊,我想給用戶選擇如何命令/排序圖像。所以他可以改變顯示順序(http://jqueryui.com/demos/sortable/)。 但接下來要做什麼;如何在數據庫中安全這個命令?目前我有一個額外的表與ID的,他們必須出現在網站上的順序。我猜想困難的方式。

誰知道更好的方法?這很難保持aswel。我正在使用codeigniter和jquery。

回答

1

一個額外的領域photo_ord]添加到您的數據庫表Image_Order
創建圖像列表

<li class="left" id="someId">   
<a href="#" > 
<img src="image path here" alt="error" id="image_id_here" class="img_thumb"/> 
</a> 
</li> 

功能處理器(它會調用時的任何圖像將移動)

<a href="#" onclick="change_order()" class="btn_1">Save Order</a> 

功能讓阿賈克斯呼籲更新圖片 - 訂單

function change_order() 
{ 
    var urlst=""; 
    var co=1; 
    $('.img_thumb').each(function() 
    { 
     urlst=urlst+this.id+'#'+co+'*'; 
     co++; 
    }); 
    $.ajax(
    { 
     type:"POST", 
     url:"xhr_change_image_order.php", 
     data:"orader="+urlst, 
     success:function(data) 
     { 
      if(data=="changed") 
       alert("Image order changed.");    
     }, 
     error:function() 
     { 
      alert('error occure'); 
     } 
    }); 
} 

文件:xhr_change_image_order.php(將更新數據庫)

<?php  
$url = $_POST['orader']; 
$photo_arr = explode("*", $url); 
foreach ($photo_arr as $k => $ph) { 
    if (strlen($ph) > 1) 
    { 
      // Update Query 
      // $arr[0] will contain image id 
      // $arr[1] will contain image order    
      UPDATE `photo` SET `photo_ord` = $arr[1] WHERE `photo_id` = $arr[0]; 
    } 
} 
echo "changed"; 
?> 

之後,當創建相冊只需用獲取訂單數據BY子句

SELECT * FROM photo ORDER BY photo_ord asc or DESC