我有PHP脚本,我编写了主题系统
,我想在一个页面中显示每10个主题,怎么做?
sql table:
ID
L_TITLE
L_URL
L_COMMENTS
L_VIEWS
L_STATE
php代码:
$sql = mysql_query("SELECT * FROM LESSONS WHERE L_STATE='0' ORDER BY ID DESC") or die($sql_error);
if(mysql_num_rows($sql) > 0){
while($rs = mysql_fetch_assoc($sql)){
$l_id = $rs['ID'];
$l_title = $rs['L_TITLE'];
$l_comments = $rs['L_COMMENTS'];
$l_views = $rs['L_VIEWS'];
}
}else{
$l_id = $no_data;
$l_title = $no_data;
$l_comments = $no_data;
$l_views = $no_data;
}
答案 0 :(得分:1)
你可以通过多种方式做到这一点。
我看到的常见方法是页面查询整个数据库,然后将结果存储到数组中。变量用于确定每页有多少结果,以及用于保存活动页面的变量。您可以使用GET或POST来管理当前页面。
示例:
如果您有100个项目,并且您希望每页显示10个项目,那么您将有10个页面。 (如果你有91个项目,它也应该显示10个页面!)
$sql = mysql_query("SELECT * FROM LESSONS WHERE L_STATE='0' ORDER BY ID DESC") or die($sql_error);
//DETERMINE PAGE SIZE/NUMBERS
$currentPage = $_GET["page"];
$itemPerPage = 10;
$itemTotal = mysql_num_rows($sql);
$lastPage = $itemTotal / $itemPerPage + 1; //+1, because you round up to whole pages
$startItem = $currentPage * $itemsPerPage;
if($itemTotal > 0){
//PUT DATA IN ARRAYS
while($rs = mysql_fetch_assoc($sql)){
$id[] = $rs['ID'];
$l_title[] = $rs['L_TITLE'];
$l_comments[] = $rs['L_COMMENTS'];
$l_views[] = $rs['L_VIEWS'];
);
}
//DETERMINE WHAT PAGE AND ITEMS TO SHOW
if(0 < $currentPage <= $lastPage){
for($i=$startItem;$i<=$startItem+$itemsPerPage;$i++){
//EXIT LOOP IF END OF ITEMS
if($i > $itemTotal){
break;
}
//DISPLAY DATA
echo "<table><tr><th>id</th><th>title</th><th>comments</th><th>views</th></tr><tr>"
echo "<tr><td>" . $id[$i] . "</td><td>" . $l_title[$i] . "</td><td>" . $l_comments[$i] . "</td><td>" . $l_views[$i] . "</td></tr>";
echo "</table>";
}
//DISPLAY PAGE NUMBERS
echo "<br />";
echo "<a href='/?page=0'>|<</a>";
echo "<a href='/?page=" . $currentPage - 1 . "'><</a>";
for($i=0;$i<$lastPage;$i++){
echo "<a href='/?page=" . $i . "'>" . $i . "</a>";
}
echo "<a href='/?page=" . $currentPage + 1 . "'>></a>";
echo "<a href='/?page=" . $lastPage . "'>>|</a>";
echo "<br />";
} else {
//If invalid page number, send to page 0
header("Location: /?page=0");
}
}else{
$l_id = $no_data;
$l_title = $no_data;
$l_comments = $no_data;
$l_views = $no_data;
}
答案 1 :(得分:0)
首先,不要再使用mysql_ *函数了。他们没有正式贬值,但他们可能也是如此。第二。我只是浏览了一下代码,但尝试在while循环数组中创建这些变量 即
$l_id[] = $rs['ID'];
然后使用foreach循环调用$ l_id
编辑:我猜我错了,而且mysql_ *函数也是如此,看来yare正式折旧了。