现在我必须创建它:
在我的数据库中;每个人最喜欢的作为自己的“体重”条目
截至目前,它默认为'10'
假设我有一系列收藏夹,
权重相应地如下:
如果我要按'2'上的'向下'箭头,我必须在其重量上加+1
这将导致:
但我只是想用最喜欢的'3'重量来切换最喜欢的'2' 我需要一种方法来确保每个项目的权重在隐含时起作用。 由于只是加1或减1会导致很多问题。
希望我能正确解释。
写入数据库
/*
* Write Form data to database
*/
function f25_favorites_form_submit($form, &$form_state){
global $user;
$listOfPaths = f25_favorites_listOfPaths();
$selected = $form_state['values']['path'];
$data = array(
'uid' => $user->uid,
'path' => $selected,
'title' => $listOfPaths[$selected]['#title'],
'weight' => 10,
'timestamp' => time(),
);
drupal_write_record(f25_favorites, $data);
}
查询
/*
* Fetching Specific User's Favorites Data
*/
function f25_favorites_user_favorites() {
global $user;
if($user->uid > 0){
$userid = $user->uid;
$user_paths = db_query("SELECT * FROM f25_favorites foo WHERE foo.uid = '%s' ORDER BY foo.weight DESC", $userid);
$pathlist = array();
while ($data = db_fetch_object($user_paths)) {
$pathlist[] = $data;
}
return $pathlist;
}
}
我该如何解决这个问题?
答案 0 :(得分:2)
如果您的所有收藏夹的权重不同,您可以简单地将“起床”的weight
字段与“下降”字段交换,或者在减轻权重时将其反转。你必须弄清楚代码
答案 1 :(得分:1)
因为只有很少的项目我会将整个订单保存到数据库中,而不仅仅是被移动的内容:我不太了解drupal,但我认为它很容易实现,因为drupal是php和javascript基于
html中的每个元素都有自己的id / index(uid?)
<div id="el_1">Menu1</div>
<div id="el_2">Menu2</div>
使用javascript获取重新排序顺序中的商品列表(例如:
itm[0]=item1;
itm[1]=item3;
itm[2]=item2;
itm[3]=item4;
将带有ajax的itm发送到你的php更新程序。并更新你的数据库,使用收到的位置,而不是权重。
现在你的数据库有这样的东西:
uid;position
1;0
3;1
2;2
4;3
我建议您使用jquery进行javascript工作,jquery有一个不错的sortable plugin。但它对ajax stuf也很棒。