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 Attention is all you need 的代码运行
  • ¥15 一个服务器已经有一个系统了如果用usb再装一个系统,原来的系统会被覆盖掉吗
  • ¥15 使用esm_msa1_t12_100M_UR50S蛋白质语言模型进行零样本预测时,终端显示出了sequence handled的进度条,但是并不出结果就自动终止回到命令提示行了是怎么回事:
  • ¥15 前置放大电路与功率放大电路相连放大倍数出现问题
  • ¥30 关于<main>标签页面跳转的问题
  • ¥80 部署运行web自动化项目
  • ¥15 腾讯云如何建立同一个项目中物模型之间的联系
  • ¥30 VMware 云桌面水印如何添加
  • ¥15 用ns3仿真出5G核心网网元
  • ¥15 matlab答疑 关于海上风电的爬坡事件检测