<?php
// error_reporting(E_ALL^E_NOTICE);
require_once './source/class/class_core.php';
require_once libfile('function/core');
$discuz = C::app();
$discuz->init_cron = false;
$discuz->init_setting = true;
$discuz->init_user = true;
$discuz->init_session = false;
$discuz->init();
$posttable = array('0'=>'pre_forum_post');
foreach(C::t('forum_post')->show_table() as $table) {
list($tempkey, $tablename) = each($table);
$tableid = substr($tablename, strrpos($tablename, '_') + 1);
if (!preg_match('/^\d+$/', $tableid)) {
continue;
}
$posttable[$tableid] = $tablename;
}
foreach($posttable as $key=>$ptable)
{
$sql = "select count(*) as total from {$ptable}";
$temp = DB::fetch_first($sql);
$tableidpagearr[$key] = $temp['total'];
}
var_dump($tableids);
var_dump($tableidpagearr);
$perpage = 10;
$nowpage = 23;
// $tableidpagearr = array(15,30,40);
$ft = gettablepage($perpage,$nowpage,$tableidpagearr);
echo "<pre>";
print_r($ft);
$allresult = array();
foreach($ft as $key=>$sqllimit) {
$sql = "select * from {$posttable[$key]} {$sqllimit}";
echo $sql."<br>";
$result = DB::fetch_all($sql);
$allresult = array_merge($allresult,$result);
}
var_dump($allresult);
function gettablepage($perpage,$nowpage,$tableidpagearr) {
$totalnum = 0;
$mpage =0;
$mappage = array();
foreach($tableidpagearr as $key=>$num) {
$temp = array_slice($tableidpagearr,0,$key+1);
$totalnum = array_sum($temp);//总条数累加
$pagetotal[$key] = intval($totalnum/$perpage);//总页数
$temppagetotal = $pagetotal[$key]-$pagetotal[$key-1];//后面的总页数-前一个的总页数
// var_dump($temppagetotal);continue;
$countnum = ($totalnum%$perpage)?$temppagetotal+1:$temppagetotal;
if (isset($mappage[$key-1])&&($mpage=max(array_keys($mappage[$key-1])))&&$mappage[$key-1][$mpage]<$perpage) {
$startpage = $mpage;//上一个分表的最大分页
} else {
$startpage = $mpage+1;//上一个分表的最大分页+1 刚好
}
for ($i=$startpage;$i<$startpage+$countnum;$i++) {
if ($i<$startpage)continue;
if (isset($mappage[$key-1][$i])&&$mappage[$key-1][$i]<$perpage) {//头
$mappage[$key][$i] = $perpage-$mappage[$key-1][$i];
} else if ($i==$startpage+$countnum-1&&$totalnum%$perpage) {//尾
$mappage[$key][$i] = $totalnum%$perpage;
} else {
$mappage[$key][$i] = $perpage;//中间
}
$offset = $mappage[$key][$i-1]?$mappage[$key][$i-1]:0;
if ($mpage == $i) {$offset=0;$a=0;}
$a = $a+intval($offset);
$mappageoffset[$key][$i]= $a;
}
}
// var_dump($mappage);
// var_dump($mappageoffset);
foreach($mappage as $tableid=>$page) {
if (in_array($nowpage,array_keys($page))) {
$ft[$tableid] = "limit {$mappageoffset[$tableid][$nowpage]},{$page[$nowpage]}";//当前分表 多少条数据
}
}
return $ft;
}
转载于:https://my.oschina.net/u/731817/blog/229133