以下是用于制作可重复使用分页的功能。如果你看到下面的代码,他们就是一个函数
generate_pages()
从函数
获取参数paged_controls()
但是我想调用函数generate_pages()而不在body.php上传递任何参数。
这是调用函数
时上传到body.php的错误消息generate_pages()
Warning: Missing argument 1 for generate_pages(), called in
E:\admin\snippets\body.php on line 11 and defined in
E:\admin\cores\pages.php on line 12
注意:未定义的变量:第16行的E:\ xampp \ htdocs \ projects \ hoplate \ admin \ cores \ pages.php中的限制
这可能吗?
pages.php
<?php
function page_count(){
global $db;
$sql = "SELECT COUNT(pages_id) FROM pages";
$query = $db->SELECT($sql);
$rows = $db->FETCH_ROW();
foreach($rows as $row){
return $row[0];
}
}
function generate_pages($limit){
/* Run actual query now to get the records from database */
global $db;
$sql = "SELECT * FROM pages " . $limit;
$query = $db->SELECT($sql);
return $rows = $db->FETCH_OBJECT();
}
function paged_controls($page_rows = 1){
global $db;
/* Call the function page_count to get the total page count */
$row_count = page_count();
/* We use the ceil function to round the number to whole number */
$last = ceil($row_count / $page_rows);
/* Make sure that the last page cannot be less then 1 */
if($last < 1){
$last = 1;
}
/* Est. the page number variables */
$pagenum = 1;
/* Set the pagenum variables from URL else set it to 1*/
if(isset($_GET["paged"])){
$pagenum = preg_replace('#[^0-9]#', '', $_GET["paged"]);
}
/* Make sure page number canoot be less then 1 */
if($pagenum < 1){
$pagenum = 1;
} else if($pagenum > $last){
$pagenum = $last;
}
/* Set the range of query to be excuted depend on our variables values set*/
$limit = 'LIMIT '.($pagenum - 1) * $page_rows . ','. $page_rows;
generate_pages($limit);
$paged_controls = "";
/* Only if theirs more then 1 page of results */
if($last != 1){
if($pagenum > 1){
$previous = $pagenum - 1;
$paged_controls .= '<a href="?paged='.$previous.'">Previous</a> ';
/* Renders the left paged numbers */
for($i = $pagenum - 4; $i < $pagenum; $i++){
if($i > 0){
$paged_controls .= '<a href="?paged='.$i.'">'.$i.'</a> ';
}
}
}
/* Render the current page the user is at */
$paged_controls .= ''.$pagenum.' ';
/* Renders the right paged numbers */
for($i = $pagenum + 1; $i <= $last; $i++){
$paged_controls .= '<a href="?paged='.$i.'">'.$i.'</a> ';
if($i >= $pagenum + 4){
break;
}
}
if($pagenum != $last){
$next = $pagenum + 1;
$paged_controls .= '<a href="?paged='.$next.'">Next</a> ';
}
return $paged_controls;
}
}
?>
body.php
<?php
$pages = generate_pages();
foreach($pages as $page){
echo $pages_id = $page->pages_id . "<br/>";
}
?>
答案 0 :(得分:2)
我认为这样做只会增加支票。
function generate_pages($limit = null){
/* Run actual query now to get the records from database */
$gloab $db;
$sql = "SELECT * FROM pages " . isset($limit) ? "LIMIT $limit" : "";
$query = $db->SELECT($sql);
return $rows = $db->FETCH_OBJECT();
}
所以现在它可以运行两种方式之一
generate_pages();
或:
generate_pages(10);
答案 1 :(得分:0)
比较两个函数头:
function generate_pages($limit)
function paged_controls($page_rows = 1)
PHP为您提供to specify default arguments,就像C ++一样(您需要向下滚动才能看到该部分)。
您的paged_controls
- 函数已经执行了此操作,它是实现所需内容的好方法,无需编辑函数中的业务逻辑。
无论何时调用没有任何参数的函数,默认参数都会启动。
所以,如果你编辑
function generate_pages($limit)
到(例如)
function generate_pages($limit = 'LIMIT 0,18446744073709551615')
并通过generate_pages()
调用该函数,PHP将自动假定为$limit = 'LIMIT 0,18446744073709551615'
在这种特定情况下,在没有参数的情况下调用generate_pages
将检索您选择的表中的所有条目,因为我们告诉数据库从头开始给我们18446744073709551615
个条目。
请参阅MYSQL manual on select/limit。