关于这个主题有很多帖子,但都让我感到困惑。
项目正在保存到数据库,但我不知道如何将其发送到数据库中的右侧行。 我有一个where语句,它是WHERE songid =(序列化的id),但它只是将每个id列号复制到排序列号中。 (这样做有意义)
我的数据库行字段= = songid userid songname sort
每个用户ID都是唯一的,而且songid设置为自动增量。我想为每个用户的歌曲单独订购。现在我只是
songid = 1,sort = 1;
songid = 2,sort = 2
等等。
不确定该怎么做。请提出任何建议。
HTML
<div id="thesort"class="sortable">
<?php foreach ($query as $dataitem): ?>
<div class="row" id="theitem_<?=$dataitem['songid']?>" data-songid="<?=$dataitem['songid']?>" >
<audio ontimeupdate='updateprogress<?=$dataitem['songid']?>()'id='<?=$dataitem['songid']?>'src='<?=base_url();?>/uploads/<?=$dataitem['songurl']?>'></audio>
<div class="col-md-6">
<button class='btn btn-primary' onclick="playaudio('<?=$dataitem['songid']?>')">
<span class='glyphicon glyphicon-play'></span>
</button>
<button class='btn btn-primary' onclick="pauseaudio('<?=$dataitem['songid']?>')">
<span class='glyphicon glyphicon-pause'></span>
</button>
<progress id='seekbar<?=$dataitem['songid']?>' class="progress-bar songprog"value='0' max='1' role="progressbar" aria-valuenow="60" aria-valuemin="0" aria-valuemax="100"></progress>
</div>
<div class="col-md-2">
<a href='' download='<?=$dataitem['songurl']?>'><h3><?=$dataitem['songname']?></h3></a>
</div>
<div class="col-md-2">
<h5><?=$dataitem['songdesc']?></h5>
</div>
<div class="col-md-2">
<button id="item_<?=$dataitem['songid']?>" onClick="delSong('<?=$dataitem['songid']?>')"class="deletebut">
<span class="glyphicon glyphicon-remove"></span>
</button>
</div>
</div>
javascript
function thestop(){
var serialized = $(thesort).sortable('serialize',{key:'sort'});
$.post('songshare/songpos',serialized);
}
var thesort = $('.sortable');
$(thesort).sortable({
axis:'y',
stop: thestop
});
控制器
function songpos(){
$this->load->model('songshare/songmodel');
$sort = $this->input->post('sort');
$data = array(
'sort'=>$sort,
);
$this->songmodel->Songpos($data);
}
模型
function Songpos($data){
foreach ($data as $dataitem){
//$this->db->where('songid', $dataitem);
//$this->db->update('songs', $data);
$this->db->update('songs', $data, array('songid' => $dataitem));
}
}
答案 0 :(得分:0)
如果我理解正确,您需要保存排序顺序。您可以创建一系列项目:
var ids = new Array;
$.each(inputs, function(i, pinput) {
ids[i] = $(pinput).val();
});
并更新表格:
public function save_order() {
$pids = $this->input->post('pids');
$parr = array();
foreach ($pids as $key => $value) {
$parr[] = array('id' => $value, 'weight' => ($key + 1));
}
$result = $this->songmodel->update_batch($parr, 'id');
if ($result) {
echo TRUE;
} else {
echo FALSE;
}
exit;
}
我用了#34;体重&#34;保存排序顺序的字段。