我正在试图找出如何查询数据库并在多个页面上以oop输出结果。
页面将有不同的查询和查询数量,有些将具有相似的布局,而其他页面将完全不同。
这是正确的方向,为每个包含所需sql字段的页面以及可能用于输出数据的html提供类吗?或者更有经验的oop设计师会以不同的方式做到这一点吗?
例如(为可怕的伪代码道歉):
abstract class Page(){}
class SearchPage extends Page()
{
private $sql;
function output(){};
}
class ProfilePage extends Page()
{
private $sql;
private $sql2;
function output(){}; ← dynamic method that can output both sql and sql2??
}
class DatebaseFetch()
{
__construct($sql)
{
$this->$sql=$sql;
}
function results()
{
...get db results...;
return $results;}
}
}
class PageFactory()
{
function getPage($page)
{
return new $page.Page();
}
}
$page=PageFactory::getPage($_SERVER['PHP_SELF']);
$query=$page->sql;
$db=new DatabaseFetch($query);
$results=$db->results();
$page->output($results);
代码的重点是获得与此过程代码等效的oop:
Search Page:
$db=new PDO("mysql:host=localhost;dbname=test;","test","test");
$db->query("select search items from table");
while($row=$db->fetch(PDO::FETCH_ASSOC)){
echo <html>....;
}
Profile Page:
$db=new PDO("mysql:host=localhost;dbname=test;","test","test");
$db->query("select profile items from table");
while($row=$db->fetch(PDO::FETCH_ASSOC)){
echo <html>....;
}
答案 0 :(得分:1)
我会看一下Zend Paginator组件。您可以下载并单独安装。您可以使用Zend_Paginator_Null_Adapter或数据库,并帮助它为您生成页码。您需要做的就是确保您的界面正在更改页码和结果数量。
http://framework.zend.com/manual/2.0/en/modules/zend.paginator.usage.html