【问题标题】:How to select all data based on year and month如何根据年份和月份选择所有数据
【发布时间】:2015-12-08 12:27:59
【问题描述】:

我想根据用户选择的年份和月份来选择数据。但结果没有显示正确的输出。它只是显示数据库中所有数据的列表。

谁能帮我修复我的代码

查看

  <div class="large-3  columns ">
  <?php echo form_open("announcement/announcement_result");?>
  <?php echo form_dropdown('m', $m, set_value('m'), 'id="m"'); ?>
  <?php echo form_dropdown('q', $q, set_value('q'), 'id="q"'); ?>
  <?php echo form_submit('search', 'SEARCH', 'class="button expand"'); ?>
  <?php echo form_close(); ?>
  </div>

控制器

function announcement_list() 
{

  $q = '';
  $data['q'] = $q;

  $this->data['q'] = array(
    '' => ' Select Year',);   

  for ($i = 0; $i < 10; $i++)
    {
    $date = date('Y') - $i;
    $data['q'][$date] = $date; 
    }

  $m = '';
    $data['m'] = $m;

    $data['m'] = array(
        '' => 'Select Month',
    );
    for ($m = 1; $m <= 12; $m++) {
        $month = date("F", mktime(0, 0, 0, $m));
        $data['m'][$month] = $month;
    }

        $data['results'] = $this->news_model->get_announcement_list($config['per_page'], $page);
    }

    public function announcement_result($q='default', $m='default') 
{

    if ($q == '') $q = $this->input->post('q');
    $this->data['q'] = $q;

    if ($q == '') redirect(base_url().'announcement/announcement_list');

    $q = '';
  $data['q'] = $q;

  $this->data['q'] = array(
    '' => ' Select Year',);   

  for ($i = 0; $i < 10; $i++)
    {
    $date = date('Y') - $i;
    $data['q'][$date] = $date; 
    }

  $m = '';
    $data['m'] = $m;

    $data['m'] = array(
        '' => 'Select Month',
    );
    for ($m = 1; $m <= 12; $m++) {
        $month = date("F", mktime(0, 0, 0, $m));
        $data['m'][$month] = $month;
    }

        $data['results'] = $this->news_model->get_results($m, $q, $limit=6, $offset=0); 
    }

型号

   function get_results($m ='default', $q='default', $limit, $offset)
{
    $sql = "SELECT *
        FROM ArkibBerita
        WHERE code='PENGUMUMAN' AND Enable = 'Y' AND Lang ='EN' AND BeritaDate LIKE '%$q%' 
        ORDER BY position ASC
        OFFSET {$offset} ROWS
        FETCH NEXT {$limit} ROWS ONlY";
        $query = $this->db->query($sql);
        return $query->result();

}

【问题讨论】:

  • 而不是 BeritaDate LIKE '%$q%' 使用 BeritaDate LIKE '$q%'
  • @saurabhkamble 我目前的结果是它显示了数据库中所有公告的列表,这些公告不遵循用户选择的输入。对于我想要的,查看页面将显示所有公告的列表,搜索后,它只会显示基于年份和月份的数据。现在,我的问题是搜索结果不起作用。

标签: php sql-server codeigniter date


【解决方案1】:

在你的模型中,我认为 m 为月份,q 为年份,而不是你的模型中的 BeritaDate LIKE '%$q%' use YEAR(BeritaDate)='{$q}' AND MONTH(BeritaDate)='{$m}'

【讨论】:

    【解决方案2】:

    你应该检查你发送的内容:'%$q%'

    AND BeritaDate LIKE '%$q%'
    

    请尝试回显 $sql 变量。然后从 sql 表中选择一行并比较 BeritaDate 字段的结果。 如果没有结果,我认为您以不同的格式发送数据。您应该将数据完全按照它的形式发送到 sql 表中。

    【讨论】:

      猜你喜欢
      • 2012-02-24
      • 2018-01-23
      • 2018-03-02
      • 1970-01-01
      • 2021-11-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多