2015-12-10 167 views
0

我想將月份名稱轉換爲月份編號。通過使用此代碼,它只顯示十二月的結果,另一個月沒有工作。但是如果我改變這一年,這是工作。例如,我選擇11月和2015年,結果是12月和2015年,如果我選擇11月和2014年,結果是12月和2014年。如何將月份名稱轉換爲月份編號

數據庫中的值是2015-09-28。我認爲我如何將月份名稱轉換爲月份編號存在錯誤。有人可以幫助我解決我的代碼。

這是我的代碼:

VIEW

<?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(); ?> 

控制器

function announcement_list() 
{ 

    $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;  
    } 


    if ($m='December') 
    { 
     $m='12'; 
    } 
    else if($m='November') 
    { 
     $m='11'; 
    } 
    else if ($m='October') 
    { 
     $m='10'; 
    } 
    else if ($m='September') 
    { 
     $m='9'; 
    } 
    else if ($m='August') 
    { 
     $m='8'; 
    } 
    else if ($m='July') 
    { 
     $m='7'; 
    } 
    else if ($m='June') 
    { 
     $m='6'; 
    } 
    else if ($m='May') 
    { 
     $m='5'; 
    } 
    else if ($m='April') 
    { 
     $m='4'; 
    } 
    else if ($m='March') 
    { 
     $m='3'; 
    }               
    else if ($m='February') 
    { 
     $m='2'; 
    } 
    else if ($m='January') 
    { 
     $m='1'; 
    } 
    $data['results'] = $this->news_model->get_announcement_list($config['per_page'], $page); 
    } 

模型

function get_results($m, $q, $limit=6, $offset=0) 
{ 
    $sql = "SELECT * 
     FROM ArkibBerita 
     WHERE code='PENGUMUMAN' AND Enable = 'Y' AND Lang ='EN' AND YEAR(BeritaDate)='{$q}' AND MONTH(BeritaDate)='{$m}' 
     ORDER BY position ASC 
     OFFSET {$offset} ROWS 
     FETCH NEXT {$limit} ROWS ONlY"; 

     $query = $this->db->query($sql); 
     return $query->result(); 

} 
+2

爲什麼你不只是將日期傳遞給DateTime對象,而只是使用格式函數來獲取所有你需要的信息? – chrisShick

+0

@chrisShick你能告訴我先生嗎?嚴重的我不知道如何啓動它 –

回答

2

什麼:

echo date('m', strtotime('january')); 

輸出:

01 

如果你不想前導零使用n或查看其他用途的手冊; http://php.net/manual/en/function.date.php

在你的代碼中,你沒有比較日期,你正在設置它。

if ($m='December') 

應該

if ($m=='December') 

一等於套。兩個等於比較。三個等於比較並且需要相同的變量類型。 http://php.net/manual/en/language.operators.comparison.php

因此,在每次迭代中,您的$m將是12,因爲$m總是設置爲字符串,並且這是它命中的第一個條件。如果您顛倒了您的訂單,它將被設置爲1

您還應該考慮使用預處理語句來處理SQL查詢。 http://php.net/manual/en/security.database.sql-injection.php

相關問題