我即将开始研究一个新项目,并在开始之前想要一些建议。
我有一个MySQL表,我需要在我的网站上显示。该表中有超过1亿行。该表格中有两列:domainid
和domainname
。
domainid
列只是从1开始,最多超过1亿的数字。在domainname
表中,我有一个域列表,如下所示:
test1
test2
test3
test4
test5
test6
基本上我要做的就是:
我想在我的网站上每页显示1000个域名 - 在表格中。该表将是4列和250行。首先,我不确定如何从数据库中获取数据并实际将其显示在我的HTML表中。我知道它可以用PHP完成,当然不知道如何。
我需要补充的第二件事是某种分页。它不需要漂亮,我只需要一种方法在列表底部自动生成页面,这样人们可以从一个页面转到下一个页面并在每个页面上查看1000条记录 - 显然我不想要所有1亿条记录显示在一个页面上。
所以这就是我遇到的问题:我不确定如何获取MySQL数据并快速将其显示在我的网站上 - 我不希望它永远加载页面只是因为数据库很大。第二,我真的需要一种方法来为表添加分页。
如果有人能指出我正确的方向,我将不胜感激。我不确定这样做有多难,但你能提供的任何帮助都会很棒。
答案 0 :(得分:2)
这将为您提供总行数
Select count(*) from yourtable
然后要显示一个页面,做一些像这样的眩晕数学
$rows_per_page = 1000;
$page_no = 2; // hint, start counting pages at page 0, it will make things easier
$offset = $page_no * $rows_per_page;
// 0 = offset (where to start)
// 1000 = number of rows returned
select * from yourtable limit $offset,$rows_per_page
因为你有这么多行,所以我会使用html选择来选择你要去的页面,或者只是选择下一个和上一个按钮然后保留它
要弄清楚有多少页面,你需要更多的数学
$total_rows = 100000000;
$rows_per_page = 1000;
$num_pages = $total_rows / $rows_per_page;
答案 1 :(得分:1)
使用此代码: 在php中创建页面配置,分页,索引。
<强> CONFIG.PHP 强>
$mysql_hostname = "host";
$mysql_user = "usr";
$mysql_password = "pass";
$mysql_database = "db";
$bd = mysql_connect($mysql_hostname, $mysql_user, $mysql_password) or die("Opps some thing went wrong");
mysql_select_db($mysql_database, $bd) or die("Error on database connection");
<强> PAGINATE.PHP 强>
function paginate($reload, $page, $tpages) {
$adjacents = 2;
$prevlabel = "‹ Prev";
$nextlabel = "Next ›";
$out = "";
// previous
if ($page == 1) {
$out.= "<span>".$prevlabel."</span>\n";
} elseif ($page == 2) {
$out.="<li><a href=\"".$reload."\">".$prevlabel."</a>\n</li>";
} else {
$out.="<li><a href=\"".$reload."&page=".($page - 1)."\">".$prevlabel."</a>\n</li>";
}
$pmin=($page>$adjacents)?($page - $adjacents):1;
$pmax=($page<($tpages - $adjacents))?($page + $adjacents):$tpages;
for ($i = $pmin; $i <= $pmax; $i++) {
if ($i == $page) {
$out.= "<li class=\"active\"><a href=''>".$i."</a></li>\n";
} elseif ($i == 1) {
$out.= "<li><a href=\"".$reload."\">".$i."</a>\n</li>";
} else {
$out.= "<li><a href=\"".$reload. "&page=".$i."\">".$i. "</a>\n</li>";
}
}
if ($page<($tpages - $adjacents)) {
$out.= "<a style='font-size:11px' href=\"" . $reload."&page=".$tpages."\">" .$tpages."</a>\n";
}
// next
if ($page < $tpages) {
$out.= "<li><a href=\"".$reload."&page=".($page + 1)."\">".$nextlabel."</a>\n</li>";
} else {
$out.= "<span style='font-size:11px'>".$nextlabel."</span>\n";
}
$out.= "";
return $out;
}
<强>的index.php 强>
<?php
include('config.php'); //include of db config file
include ('paginate.php'); //include of paginat page
$per_page = 1000; // number of results to show per page
$result = mysql_query("SELECT * FROM YOURTABLE");
$total_results = mysql_num_rows($result);
$total_pages = ceil($total_results / $per_page);//total pages we going to have
//-------------if page is setcheck------------------//
if (isset($_GET['page'])) {
$show_page = $_GET['page']; //current page
if ($show_page > 0 && $show_page <= $total_pages) {
$start = ($show_page - 1) * $per_page;
$end = $start + $per_page;
} else {
// error - show first set of results
$start = 0;
$end = $per_page;
}
} else {
// if page isn't set, show first set of results
$start = 0;
$end = $per_page;
}
// display pagination
$page = intval($_GET['page']);
$tpages=$total_pages;
if ($page <= 0)
$page = 1;
?>
//设计和显示数据(代码在index.php中继续)
<?php
$reload = $_SERVER['PHP_SELF'] . "?tpages=" . $tpages;
echo '<div class="pagination"><ul>';
if ($total_pages > 1) {
echo paginate($reload, $show_page, $total_pages);
}
echo "</ul></div>";
// display data in table
echo "<table class='table table-bordered'>";
echo "<thead><tr><th>DOMAIN CODE</th> <th>DOMAIN Name</th></tr></thead>";
// loop through results of database query, displaying them in the table
for ($i = $start; $i < $end; $i++) {
// make sure that PHP doesn't try to show results that don't exist
if ($i == $total_results) {
break;
}
// echo out the contents of each row into a table
echo "<tr " . $cls . ">";
echo '<td>' . mysql_result($result, $i, 'domainid') . '</td>';
echo '<td>' . mysql_result($result, $i, 'domainname') . '</td>';
echo "</tr>";
}
// close table>
echo "</table>";
// pagination
?>