joomla 下拉菜单中几个月的数据

Posted

技术标签:

【中文标题】joomla 下拉菜单中几个月的数据【英文标题】:data for period of months from dropdown on joomla 【发布时间】:2013-07-25 07:32:01 【问题描述】:

我在 joomla view php 上有这个代码:(这个代码生成月份下拉列表)

    <form action="<?php echo JRoute::_('index.php?option=com_mycom'); ?>" method="post" name="adminForm" id="adminForm" class="modelList">        
    <select name="filter.search" class="inputbox" onchange="this.form.submit()">
                        <?php
          for ($i = 0; $i <= 12; ++$i) 
            $time = strtotime(sprintf('-%d months', $i));
            $value = date('Y-m', $time);
            $label = date('F Y', $time);
            printf('<option value="%s">%s</option>', $value, $label);
          
          ?>
          </select>
</form>

我有一个 mysql 表,其中有一行“日期”调用“日期” 所以我正在寻找的是 - 当我选择月份时,本月的所有数据都将加载到此页面上

那么我怎样才能从 sql 查询中得到它呢?我在模型上尝试了这个代码,但这给了我一个错误:

    $search = $this->getState('filter.search');

    if(!empty($search))
    
        if(stripos($search, 'id:') === 0)
        
            $query->where('id = '.(int) substr($search, 3));
        
        else
        
            $search = $db->Quote('%'.$db->escape($search, true).'%');
            $query->where('(date LIKE '.$search.')');
        
    

我试试这个代码:

if(!empty($search))
    
        if(stripos($search, 'id:') === 0)
        
            $query->where('a.id = '.(int) substr($search, 3));
        
        else
        

            $searchParts = explode('-', $search);
            // day 1 of selected month
            $searchStartDate = date('Y-m-d', mktime(0, 0, 0, $searchParts[1], 1, $searchParts[0]));
            // day 0 of next month is last day of selected month
            $searchEndDate = date('Y-m-d', mktime(0, 0, 0, $searchParts[1] + 1, 0, $searchParts[0]));

            $query->where("(a.date BETWEEN '$searchStartDate' AND '$searchEndDate' LIKE '.$search.')");
        
    

但它返回一个错误:

Fatal error: Call to a member function where() on a non-object in 

在这条线上 - $query-&gt;where("(a.date BETWEEN '$searchStartDate' AND '$searchEndDate' LIKE '.$search.')");

【问题讨论】:

“但这给了我一个错误”不是很有帮助。你得到了什么错误? 该错误告诉您 $query 不是具有 where 方法的类的实例。也许您需要添加完整的代码。 【参考方案1】:

使用 DATE 字段时,您应该这样做。您正在尝试将其作为字符串使用,这是可能的,但效率非常低。

而不是要求数据库返回所有记录 WHERE date LIKE '%2013-07%' 您应该要求在所选月份的开始和结束之间的所有记录。

SELECT *
FROM tbl
WHERE `date` BETWEEN '2013-07-01' AND '2013-07-31'

你可以把你的 PHP 代码改成这样 -

else

    $searchParts = explode('-', $search);
    // day 1 of selected month
    $searchStartDate = date('Y-m-d', mktime(0, 0, 0, $searchParts[1], 1, $searchParts[0]));
    // day 0 of next month is last day of selected month
    $searchEndDate = date('Y-m-d', mktime(0, 0, 0, $searchParts[1] + 1, 0, $searchParts[0]));

    $query->where("(date BETWEEN '$searchStartDate' AND '$searchEndDate')");

【讨论】:

以上是关于joomla 下拉菜单中几个月的数据的主要内容,如果未能解决你的问题,请参考以下文章

CSS Joomla 1.5的suckerfish下拉菜单joomla 1.5教程

Joomla 1.5 | Joomla 1.5教程的Suckrfish下拉菜单

WordPress Elementor Pro 仅制作导航菜单小部件项目下拉菜单

TinyMCE Joomla 3.5中的下拉自定义按钮

使用下拉菜单分期显示产品价格

excel2007为日期制作下拉菜单的方法步骤