如何使用ajax调用从mysql中拆分最大的数组?

pcrecxhr  于 2021-06-23  发布在  Mysql
关注(0)|答案(2)|浏览(222)

我有一个大问题:在我的网站上会有一个页面,用户可以选择日期和其他选项来查看世界上发生的地震。
问题是,例如,用户是否可以查看去年发生的地震。这个选项将返回一个非常大的数组,我认为这会减慢加载速度,也许浏览器会对文件有限制。
那我怎么才能拆分这个大数组呢?
PHP

$query = "SELECT * FROM earthquakes WHERE milliseconds > 0";
$query = mysqli_query($con,$query);

if ($result = mysqli_query($con, $query)) {
   while ($row = mysqli_fetch_assoc($result)) { // fetches a result row as an associative array
       $result[] = $row;
   }
   mysqli_free_result($result);
}

echo json_encode($result); // return value of $result
mysqli_close($con); // close connection with database

javascript语言

$.ajax({
    type: "POST",
    url: "database-sismico.php?"+query,
    success: function (result) { //Performs an async AJAX request
        if (result) {

        }
        else {
            //will print alert to advice user that there aren't quakes
        }
    },
    dataType:"json"
});

你能给我一些建议吗?非常感谢,对不起我的英语。。。

nbewdwxp

nbewdwxp1#

使用 limit 以及 offset 实现分页。
然而,您可以将用例分为“探索少数地震”和“探索许多地震”。因此,第一个可以返回一个包含所有细节的完整列表,而另一个将返回一个热图。热图是在后端生成的,不涉及将所有行发送到前端。一个用例或另一个用例由匹配过滤器的行数触发。

blpfk2vs

blpfk2vs2#

虽然这个问题有点宽泛,但我可以给出一些相当标准的建议,这些建议应该能帮助你朝着正确的方向前进。
一般来说,当您有某个列表,并且该列表可能非常大时,一种常见的技术是实现“分页”。从字面上说,把它变成多页。
一般的方法是以某种方式传入一个页面参数(通常在查询字符串中),然后使用该参数获取一定数量的结果。
在查询端,可以使用 LIMIT 设置最大值,然后使用page参数设置 OFFSET .
例如,如果要在每页显示200个结果,那么 LIMIT 是200。如果您在第3页,那么您可以将偏移设置为 (page-1)*max ,也就是 (3-1)*200 或者 400 . 这将得到从结果400到结果200的结果。

SELECT * FROM earthquakes WHERE milliseconds > 0 OFFSET 400 LIMIT 200

同时,还返回最大数量的结果,以便您可以在前端构建适当的ui:

SELECT COUNT(1) FROM earthquakes WHERE milliseconds > 0

然后,您只需显示这个和您的页面控件,就可以全部设置好了。

相关问题