我使用这个查询:
$result_members = mysql_query("SELECT * FROM members");
结果显示在我的管理页面的表格中,如下所示:
while($row = mysql_fetch_array($result_members))
{
$id = $row['id'];
$firstname = $row['firstname'];
...
<tr>
<td><? echo "$id"; ?></td>
<td><? echo "$firstname"; ?></td>
...
</tr>
}
我使用 jQuery 分页,每页显示 50 行,并使用 jquery 自动完成功能在表格中进行搜索。
加载和搜索都需要很多时间。从几秒到一分钟不等。我的数据库中有大约 5.000 名成员。
我认为有更好的方法来做到这一点。我没有使用 mysql 的经验,所以如果你能告诉我一个简单的方法来使这项工作顺利进行,我将非常高兴! :)
问候
维克
最佳答案
改变
SELECT * FROM members
到
SELECT * FROM members LIMIT 200
缺点是,您只能显示/搜索用户的前 4 页。如果您想解决这个问题,您需要让 jQuery 页面动态请求更多数据,这会使事情复杂一个数量级。
如何添加这个功能
很多代码取决于您使用的分页插件。一些插件有 integrated support for it ,其他你可能需要入侵。
但是,服务器端的东西并没有真正改变。您需要第二个 PHP 脚本,它只返回一页给定的结果。这是一个。
fetch_page.php
:
<?
define('RESULTS_PER_PAGE', 50);
$page = $_GET['page];
$page = (int) $page; // Cast to int to prevent sql injections and let us do math on it.
$start = $page * RESULTS_PER_PAGE;
$end = ($page + 1) * RESULTS_PER PAGE;
$result_members = mysql_query("SELECT * FROM members LIMIT $start, $end");
while($row = mysql_fetch_array($result_members))
{
$id = $row['id'];
$firstname = $row['firstname'];
...
<tr>
<td><? echo "$id"; ?></td>
<td><? echo "$firstname"; ?></td>
...
</tr>
}
?>
请注意,对此进行搜索是完全不同的事情。有两种搜索方式:
1) 将服务器端的所有数据加载到客户端。这非常慢,特别是因为 javascript/DOM 并不是存储/搜索大量数据的真正正确方法。但是,它很容易组合在一起。
2) 在数据库服务器上进行查询,并将结果返回给客户端。这也很复杂。
您应该考虑这种增加的复杂性是否合理。为什么需要搜索用户表?
关于php - 管理页面上的用户表,需要很长时间才能加载,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11925211/