0

joomla ビュー 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->where("(a.date BETWEEN '$searchStartDate' AND '$searchEndDate' LIKE '.$search.')");

4

1 に答える 1