基本上,我希望基于月份和年份的侧栏中有一个带有档案列表的新闻页面...例如2012年6月。该表名为'news',其中包含news_id,news_title,news_entry,已更新,已创建的列。更新和创建的是时间戳。现在我正在使用普通的PHP,如下所示:
mysql_select_db($database_admin_conn, $admin_conn);
$query_getArchives = "SELECT DISTINCT DATE_FORMAT (news.updated, '%M %Y') AS archive, DATE_FORMAT (news.updated, '%Y-%m') AS link FROM news ORDER BY news.updated DESC";
$getArchives = mysql_query($query_getArchives, $admin_conn) or die(mysql_error());
$row_getArchives = mysql_fetch_assoc($getArchives);
$totalRows_getArchives = mysql_num_rows($getArchives);
显示档案列的代码如下:
<h3>News Archives</h3>
<ul>
<?php do { ?>
<li class="seperator
<?php echo (isset($_GET['archive']) && $_GET['archive'] == $row_getArchives['link'] ? 'currentItem' : '') ?>">
<a href="news.php?archive=<?php echo $row_getArchives['link']; ?>"><?php echo $row_getArchives['archive']; ?></a>
</li>
<?php } while ($row_getArchives = mysql_fetch_assoc($getArchives)); ?>
</ul>
如何在Zend Framework的第一个代码块中实现select语句,以实现与当前代码输出相同的结果?提前致谢!
答案 0 :(得分:0)
首先在 /models/DbTable/Archive.php 或使用zf命令工具创建表类。
class Application_Model_DbTable_Archive extends Zend_Db_Table_Abstract
{
protected $_name = 'news'; // actual table name here
}
然后使用以下代码
$table = new Application_Model_DbTable_Archive();
$select = $table->getAdapter()->select()
->from(array('news' => $table->info(Zend_Db_Table::NAME)),
array(
'archive'=>new Zend_Db_Expr('DISTINCT DATE_FORMAT (news.updated, \'%M %Y\')'),
'link'=>new Zend_Db_Expr('DISTINCT DATE_FORMAT (news.updated, \'%Y-%m\')')))
->order('news.updated DESC');
// then use $select
$row_getArchives = $table->fetchAll($select);
$totalRows_getArchives = $row_getArchives ->count();
和视图
foreach($row_getArchives as $row){
echo $row->link;
}
如果您不想使用表类,请尝试以下方法:
$adapter = Zend_Db_Table::getDefaultAdapter();
$select = $adapter->select()
->from(array('news' => 'news'),
array(
'archive'=>new Zend_Db_Expr('DISTINCT DATE_FORMAT (news.updated, \'%M %Y\')'),
'link'=>new Zend_Db_Expr('DISTINCT DATE_FORMAT (news.updated, \'%Y-%m\')')))
->order('news.updated DESC');
// then use $select
$row_getArchives = $adapter->fetchAll($select);
$totalRows_getArchives = count($row_getArchives);
和视图
foreach($row_getArchives as $row){
echo $row['link'];
}