dongzi8191 2018-05-23 19:18
浏览 55
已采纳

使用PHP保存排序首选项到MySQL,拖放

I'm using JQuery to provide my users with a re-arrangeable list of items. Like this:

Image of List

Here's the simple HTML:

      <ul class="sortable">
      <li>Item 1<i class="sorthandle"></i></li>
      <li>Item 2<i class="sorthandle"></i></li>          
      </ul>

The drag-and-drop feature works great. The next step is saving the user's sort preference to the database. I plan to add a "priority" column to my database, which will hold an integer representing the user's preferred sort order. My query will then Order by 'priority' ASC.

I'm thinking I need to generate an array of the sort order currently displayed on the drag-and-drop screen, then save those values to the database records. But as a JavaScript newbie, I need some help.

My JavaScript

<script src="//cdnjs.cloudflare.com/ajax/libs/jquery/2.1.3/jquery.min.js"></script>
<script src="//cdnjs.cloudflare.com/ajax/libs/jqueryui/1.11.2/jquery-ui.min.js"></script>
<script type="text/javascript">
$(function() {
  $(".sortable").sortable({
    connectWith: ".sortable",
    handle: '.handle'
  }).disableSelection();

});
</script>

Generating the drag-and-drop list via PHP:

while ($row = mysqli_fetch_array($result)){
  $playlistname = $row['name'];
  $id = $row['id'];
  echo "<li>$playlistname<i class='handle fa fa-bars'></i></li>";

}
  • 写回答

2条回答 默认 最新

  • dsifjgogw48491752 2018-05-23 21:01
    关注

    I was able to accomplish this without writing any more JavaScript. PHP worked just fine!

    PHP - Getting Values

    <?php
    $sql = "SELECT name, id FROM playlists WHERE userid = 'XX' AND active = 1 ORDER BY priority ASC";
    $row = mysqli_fetch_array($result,MYSQLI_ASSOC);
    $result = mysqli_query($conn,$sql);
    
     ?>
    <form action="" method="POST">
    
    <div class="container">
          <ul class="sortable">
    
            <?php
              while ($row = mysqli_fetch_array($result)){ /* FETCH ARRAY */
              $playlistname = $row['name'];
              $id = $row['id'];
              echo "<li>$playlistname<i class='handle fa fa-bars'><input type='hidden' name='sort[]' value='$id' /></i></li>";
              }
            ?>
    
            </ul>
    </div>
    <center><button name="submit" id="sortsavebutton" type="SUBMIT" value="submit" action="POST">Save</button></center><br>
    </form>
    

    Processing on Save/Submission

    if (isset($_POST['submit'])){
        $rearrange = $_POST['sort'];
        $count = count($rearrange);
        $sort = 0;
        for($i=0;$i<$count;$i++){
    
            if(!empty($rearrange[$i])){ 
    
            $id = mysqli_real_escape_string($conn,$rearrange[$i]); /* ESCAPE STRINGS */
        $priority = $sort++;
        $stmt = $conn->prepare("UPDATE playlists SET priority=? WHERE id = ?");
        $stmt->bind_param("ii", $priority, $id);
        $stmt->execute();
    
              } 
    
        } 
    
    } 
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

悬赏问题

  • ¥15 关于#matlab#的问题:在模糊控制器中选出线路信息,在simulink中根据线路信息生成速度时间目标曲线(初速度为20m/s,15秒后减为0的速度时间图像)我想问线路信息是什么
  • ¥15 banner广告展示设置多少时间不怎么会消耗用户价值
  • ¥16 mybatis的代理对象无法通过@Autowired装填
  • ¥15 可见光定位matlab仿真
  • ¥15 arduino 四自由度机械臂
  • ¥15 wordpress 产品图片 GIF 没法显示
  • ¥15 求三国群英传pl国战时间的修改方法
  • ¥15 matlab代码代写,需写出详细代码,代价私
  • ¥15 ROS系统搭建请教(跨境电商用途)
  • ¥15 AIC3204的示例代码有吗,想用AIC3204测量血氧,找不到相关的代码。