【问题标题】:How to show Ajax results in Descending order?如何以降序显示 Ajax 结果?
【发布时间】:2020-06-01 21:50:16
【问题描述】:

您好,我有一个 ajax 代码,它能够以升序从 sql 表中获取数据。

这是main.php

<?php  
$connect = mysqli_connect("localhost", "admin", "", "main");
 $sql = "SELECT * FROM names LIMIT 8";  
 $result = mysqli_query($connect, $sql);  
 $id = '';  
?>  
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.2.0/jquery.min.js"></script>  
 <div class="table-responsive"> 
    <table class="table table-bordered" id="load_data_table">  
        <?php  
          while($row = mysqli_fetch_array($result))  
            {  
            ?>  
                <tr>  
                 <td><?php echo $row["id"]; ?></td>
                 <td><?php echo $row["name"]; ?></td>  
                </tr>  
          <?php  
          $id = $row["id"];  
          } 
          ?>  
          <tr id="remove_row">  
          td><button type="button" name="btn_more" data-id="<?php echo $id; ?>" id="btn_more" class="btn btn-success form-control">more</button></td>  
          </tr>  
          </table>  
          </div>           
 <script>  
 $(document).ready(function(){  
      $(document).on('click', '#btn_more', function(){  
           var last_id = $(this).data("id");  
           $('#btn_more').html("Loading...");  
           $.ajax({  
                url:"resources/views/frontend/ajax/one.php",  
                method:"POST",  
                data:{last_id:last_id},  
                dataType:"text",  
                success:function(data)  
                {  
                     if(data != '')  
                     {  
                          $('#remove_row').remove();  
                          $('#load_data_table').append(data);  
                     }  
                     else  
                     {  
                          $('#btn_more').html("No Data");  
                     }  
                }  
           });  
      });  
 });  
 </script>

这是一个.php

<?php  
$output = '';  
$id = '';  
sleep(1);  
$connect = mysqli_connect("localhost", "admin", "", "main");
$sql = "SELECT * FROM names WHERE id > ".$_POST['last_id']." LIMIT 8";  
$result = mysqli_query($connect, $sql);  
if(mysqli_num_rows($result) > 0)  
{  
     while($row = mysqli_fetch_array($result))  
     {  
          $id = $row["id"];  
          $output .= '  
               <tbody>  
               <tr>  
                    <td>'.$row["id"].'</td> 
                    <td>'.$row["name"].'</td> 
               </tr></tbody>';  
     }  
     $output .= '  
               <tbody><tr id="remove_row">  
                    <td><button type="button" name="btn_more" data-id="'. $id .'" id="btn_more" class="btn btn-success form-control">more</button></td>  
               </tr></tbody>  
     ';  
     echo $output;  
}  
?>

我的 sql 表有两列 id 和 name。

此代码非常适合升序,即如果“id”的值增加 (1,2,3...)

我已经尝试过 SQL 语句中的 ORDER BY 子句,但没有成功。

我想按降序显示数据,即首先显示最高的“id”值。

请帮忙。

【问题讨论】:

  • Ajax 与以 ASC 或 DESC 方式排序数据无关。当您查询数据库时,您有权使用 ORDER BY 子句以特定顺序 ASC/DESC 对结果集进行排序。 AJAX 只是用于在后台发送 HTTP 请求和接收响应(异步方式)。
  • 对不起,我在最初的问题中没有提到我已经尝试了 ORDER BY 条款。哪个不按预期工作。原因在 one.php 中,条件是 WHERE id > Last ID。感谢所有警告我有关 SQL 注入的人。该代码目前仅适用于本地服务器,仅用于测试目的。

标签: php jquery sql ajax


【解决方案1】:

您应该使用 Order By 子句。这有助于对结果进行排序。

像这样修改你的查询:

$sql = "SELECT * FROM names ORDER BY id DESC LIMIT 8";  

您确实应该考虑学习 PDO,因为您的第二个查询可能会受到 SQL 注入。

【讨论】:

  • 虽然这个答案将OP指向正确的方向,但第二个查询(在one.php中)是需要修改的$sql = "SELECT * FROM names WHERE id &gt; ".$_POST['last_id']." ORDER BY id DESC LIMIT 8";
  • 对不起,我在最初的问题中没有提到我已经尝试了 ORDER BY 条款。哪个不按预期工作。原因在 one.php 中,条件是 WHERE id > Last ID。
猜你喜欢
  • 2019-04-07
  • 2018-07-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-04-10
  • 1970-01-01
  • 2014-10-26
相关资源
最近更新 更多