PHP实现自定义排序显示

阅读量:3294

发布时间:2015-11-01 20:16:08


有的时候我们在上传或者是书写东西的时候,不能按时间、Id、或者是别的进行排序的时候,我们就需要自定义排序规则,实现自定义排序。

在网页中修改参数就可以选择排序,常见的有两种:

第一种是利用jQuery双击修改表格,当点击不是编辑区域的时候提交数据‘

第二种是表单的下拉按钮直接选择

 

在这里讲诉的第二种方法实现排序,下拉框的形式实现排序。

先建立数据库,排序的时候我们按数据库中某个字段从小到大的排序。

nav_id设置自动真增长,根据nav_no从小到大进行排序,表结构如下:

+------------------+--------------+------+-----+---------+----------------+
| Field               | Type         | Null | Key | Default | Extra          |
+------------------+--------------+------+-----+---------+----------------+
| nav_id            | int(11)           | NO   | PRI | NULL   | auto_increment |
| nav_title         | varchar(50)   | YES  |     | NULL    |                |
| nav_class       | varchar(11)   | YES  |     | NULL    |                |
| nav_show       | varchar(11)   | NO   |     | 1           |                |
| nav_no           | double(10,5) | YES  |     | NULL    |                |
+------------------+--------------+------+-----+---------+----------------+

 

一、在插入数据的之后我们需要给nav_no赋值,其值等于当前插入数据的Id(使用mysql_insert_id()方法);

 

二、前台显示

HTML代码:

<select name="nav_no" class="form-control nav_sequence" data-Id="11"> 
    <option selected="selected" value="0">第一</option> 
    <option selected="selected" value="1">在 日志 之后</option> 
    <option selected="selected" value="8">在 PHP 之后</option> 
    <option selected="selected" value="10">在 JavaScript 之后</option> 
    <option selected="selected" value="7">在 踩过的坑 之后</option> 
    <option selected="selected" value="2">在 生活记录记 之后</option> 
    <option selected="selected" value="3">在 每日日志 之后</option> 
    <option selected="selected" value="4">在 语言 之后</option> 
    <option selected="selected" value="5">在 生活 之后</option> 
    <option selected="selected" value="6">在 错误记录 之后</option> 
    <option selected="selected" value="9">在 python 之后</option>
</select>

 

三、数据提交JavaScript代码

需要在文档加载的时候初始化函数,实现数据下拉表单中选中值被修改了以后实现监听功能,使用AJAX中的POST请求发送数据到后台

$(".nav_sequence").bind('change', function(){
        nav_id =  $(this).attr("data-Id");  //需要修改的
        var nav_id_next = $(this).find("option:selected").val(); //在这个之后

        $.post( "/submit/nav_sequence" ,{
                submit : "nav_sequence",
                nav_id : nav_id,
                nav_id_next : nav_id_next
              }, function (data, textStatus){   //回调函数
                  var Count = data.code;
                  var time = data.time;
                  if(Count == '2'){
                    alert("修改成功!");
                    location.href='./modify_title';
                  }else{
                    alert("修改失败!");
                    return false;
                  }
                },"json");  //$post 第四个参数指明是 json数据
        // 停止冒泡
        return false;
    });

 

四、后台接收数据

  1. 判断POST请求是否是修改排序
  2. 更具nav_id_next的值去判断,需要排序的数据列中nav_no的值,等于nav_id_next的数据本身加它的下一条数据nav_no的值相加除以二
  3. 将需要排序的数据nav_no修改计算以后的结果

 










当前没有评论