function pageCount($a_page){ $sql = "select count(id) as count from con"; $prep = $this->mysql->prepare($sql); $prep->execute(); $pageFrom = $prep->fetch(2); $pageCount = ceil($pageFrom['count'] / $a_page); return $pageCount; } 这段代码错误,错误代码Warning: Division by zero in
时间: 2024-03-17 22:41:20 浏览: 149
这个错误出现的原因是因为 `$a_page` 变量的值为0,导致在计算 `$pageCount` 变量时发生了除以0的操作。
要解决这个问题,您可以在计算 `$pageCount` 之前,先检查 `$a_page` 变量的值是否为0。如果为0,则直接返回0或者抛出异常,以避免出现除以0的错误。可以按照以下方式修改您的代码:
```
function pageCount($a_page) {
if ($a_page == 0) {
return 0; // 或者抛出异常
}
$sql = "select count(id) as count from con";
$prep = $this->mysql->prepare($sql);
$prep->execute();
$pageFrom = $prep->fetch(2);
$pageCount = ceil($pageFrom['count'] / $a_page);
return $pageCount;
}
```
这样,如果 `$a_page` 值为0,函数会直接返回0,否则会计算出正确的 `$pageCount` 值。
相关问题
$info = array( array('name'=>'王六','birth'=>'1996-08-07','subject'=>'PHP','snum'=>'0150427001'), array('name'=>'张三','birth'=>'1995-12-23','subject'=>'PHP','snum'=>'0150427002'), array('name'=>'赵二','birth'=>'1996-01-09','subject'=>'PHP','snum'=>'0150427003'), array('name'=>'孙四','birth'=>'1995-05-04','subject'=>'PHP','snum'=>'0150427004'), array('name'=>'钱一','birth'=>'1996-06-24','subject'=>'PHP','snum'=>'0150427005'), array('name'=>'郑七','birth'=>'1995-10-10','subject'=>'PHP','snum'=>'0150427006'), array('name'=>'白三','birth'=>'1996-12-28','subject'=>'PHP','snum'=>'0150427007'), array('name'=>'李四','birth'=>'1995-11-01','subject'=>'PHP','snum'=>'0150427008'), array('name'=>'陆八','birth'=>'1996-02-02','subject'=>'PHP','snum'=>'0150427009'), array('name'=>'刘六','birth'=>'1995-03-08','subject'=>'PHP','snum'=>'0150427010'), array('name'=>'谭九','birth'=>'1996-06-01','subject'=>'PHP','snum'=>'0150427011'), array('name'=>'韩十','birth'=>'1995-07-09','subject'=>'PHP','snum'=>'0150427012'), array('name'=>'史二','birth'=>'1996-11-11','subject'=>'PHP','snum'=>'0150427013') ); 请完成以上学生信息一页5条页面显示程序
好的,下面是一个简单的示例代码,可以通过 PHP 实现分页功能,每页显示 5 条学生信息:
```php
<?php
$info = array(
array('name' => '王六', 'birth' => '1996-08-07', 'subject' => 'PHP', 'snum' => '0150427001'),
array('name' => '张三', 'birth' => '1995-12-23', 'subject' => 'PHP', 'snum' => '0150427002'),
array('name' => '赵二', 'birth' => '1996-01-09', 'subject' => 'PHP', 'snum' => '0150427003'),
array('name' => '孙四', 'birth' => '1995-05-04', 'subject' => 'PHP', 'snum' => '0150427004'),
array('name' => '钱一', 'birth' => '1996-06-24', 'subject' => 'PHP', 'snum' => '0150427005'),
array('name' => '郑七', 'birth' => '1995-10-10', 'subject' => 'PHP', 'snum' => '0150427006'),
array('name' => '白三', 'birth' => '1996-12-28', 'subject' => 'PHP', 'snum' => '0150427007'),
array('name' => '李四', 'birth' => '1995-11-01', 'subject' => 'PHP', 'snum' => '0150427008'),
array('name' => '陆八', 'birth' => '1996-02-02', 'subject' => 'PHP', 'snum' => '0150427009'),
array('name' => '刘六', 'birth' => '1995-03-08', 'subject' => 'PHP', 'snum' => '0150427010'),
array('name' => '谭九', 'birth' => '1996-06-01', 'subject' => 'PHP', 'snum' => '0150427011'),
array('name' => '韩十', 'birth' => '1995-07-09', 'subject' => 'PHP', 'snum' => '0150427012'),
array('name' => '史二', 'birth' => '1996-11-11', 'subject' => 'PHP', 'snum' => '0150427013')
);
$pageSize = 5; // 每页显示的条数
$pageCount = ceil(count($info) / $pageSize); // 总页数
$currentPage = (isset($_GET['page']) && $_GET['page'] > 0 && $_GET['page'] <= $pageCount) ? $_GET['page'] : 1; // 当前页码
$start = ($currentPage - 1) * $pageSize; // 当前页数据的开始索引
$end = min($start + $pageSize, count($info)); // 当前页数据的结束索引
// 显示当前页的学生信息
echo '<table>';
echo '<thead><tr><th>姓名</th><th>出生日期</th><th>科目</th><th>学号</th></tr></thead>';
echo '<tbody>';
for ($i = $start; $i < $end; $i++) {
echo '<tr><td>' . $info[$i]['name'] . '</td><td>' . $info[$i]['birth'] . '</td><td>' . $info[$i]['subject'] . '</td><td>' . $info[$i]['snum'] . '</td></tr>';
}
echo '</tbody>';
echo '</table>';
// 显示分页链接
echo '<div>';
if ($currentPage > 1) {
echo '<a href="?page=1">首页</a>';
echo '<a href="?page=' . ($currentPage - 1) . '">上一页</a>';
}
if ($currentPage < $pageCount) {
echo '<a href="?page=' . ($currentPage + 1) . '">下一页</a>';
echo '<a href="?page=' . $pageCount . '">尾页</a>';
}
echo '</div>';
?>
```
在上面的代码中,我们首先定义了一个学生信息数组 `$info`,然后通过计算总页数和当前页码来获取当前页数据的开始索引和结束索引。然后,我们通过一个 for 循环来显示当前页的学生信息。在页面下方,我们通过判断当前页码来显示分页链接,其中需要传入相应的页码。
需要注意的是,这只是一个简单的示例代码,实际项目中可能需要根据具体需求进行修改和优化。
void ConsolidatedReport::printPreview1(QPrinter *p) { QPrinter previewPrinter(QPrinter::HighResolution); ted = new QTextDocument; p->setPageMargins(QMarginsF(0,0,0,0)); ted->setPageSize(QSizeF(p->pageRect().size())); ted->setHtml(getHtmlStr()); int pageCount = ted->pageCount();//所需页数 int totalHeight = pageCount * p->pageRect().height(); //总页面高度 int printheight = p->pageRect().height();//单一页面高度 QString header = "<div style='background-color:red;'><span class='report-title'>测试</span></div>"; QString finalHtmlStr = ""; if(pageCount>0){ for (int i = 0; i < pageCount; i++) { QString pageHtml = ted->toHtml().mid(i * p->pageRect().height(), p->pageRect().height()); if (i != 0) { pageHtml = header + pageHtml; } finalHtmlStr += pageHtml; } }else { finalHtmlStr = ted->toHtml(); } ted->setHtml(finalHtmlStr); ted->print(p); }哪里有错
在这段代码中,可能存在一些问题:
1. 在函数中创建了一个新的QPrinter对象previewPrinter,但是没有使用,而是直接使用了传入的指针p,这样可能会导致一些意外问题。
2. 在设置页面大小时,使用了p->pageRect().size(),这样会得到整个页面的大小,而不是单一页的大小,可能会导致页面显示不完整。
3. 在循环中,每次都调用ted->toHtml()方法,这样会重复生成整个HTML字符串,导致效率低下。
为了解决这些问题,可以尝试进行如下修改:
```
void ConsolidatedReport::printPreview1(QPrinter *p) {
ted = new QTextDocument;
p->setPageMargins(QMarginsF(0,0,0,0));
ted->setPageSize(p->pageSize());
ted->setHtml(getHtmlStr());
int pageCount = ted->pageCount(); //所需页数
int totalHeight = pageCount * p->pageRect().height(); //总页面高度
int printheight = p->pageRect().height(); //单一页面高度
QString header = "<div style='background-color:red;'><span class='report-title'>测试</span></div>";
QString finalHtmlStr = "";
if (pageCount > 0) {
QString pageHtml;
for (int i = 0; i < pageCount; i++) {
if (i != 0) {
pageHtml = header + ted->toHtml(QByteArray(), QTextDocument::HtmlFragmentOnly).mid(i * printheight, printheight);
} else {
pageHtml = ted->toHtml(QByteArray(), QTextDocument::HtmlFragmentOnly).mid(i * printheight, printheight);
}
finalHtmlStr += pageHtml;
}
} else {
finalHtmlStr = ted->toHtml(QByteArray(), QTextDocument::HtmlFragmentOnly);
}
ted->setHtml(finalHtmlStr);
ted->print(p);
}
```
在这个修改后的代码中,我们使用了传入的QPrinter指针p来设置页面大小,并且使用了QTextDocument::HtmlFragmentOnly参数来获取分页后的HTML字符串。同时,在循环中,我们只生成了当前页面的HTML字符串,而不是全部的HTML字符串,这样可以提高效率。
阅读全文
相关推荐
修改这段代码 首页 上一页 下一页 最后一页
跳转到: <input id="pageNo" type="text" class="form-control form1" name="pageNo" value="${list.pageNo}" /> 每页记录数: <input class="form-control form1" type="text" name="pageCount" value="${list.pageCount}" /> <input class="btn btn-primary" type="submit" value="跳转" /> 共有 ${list.totalPage} 页
跳转到: <input id="pageNo" type="text" class="form-control form1" name="pageNo" value="${list.pageNo}" /> 每页记录数: <input class="form-control form1" type="text" name="pageCount" value="${list.pageCount}" /> <input class="btn btn-primary" type="submit" value="跳转" /> 共有 ${list.totalPage} 页