2016-04-12 7 views
0

Я использую Codeigniter 3.0 и SQL SERVERданных граф Использование CodeIgniter ежемесячно мудрое

Это мой стол

customers table: 
Amount  Date       Id 
1.00  2014-01-05 00:00:00.000   1 
2.00  2014-01-11 00:00:00.000   1 
3.00  2014-02-03 00:00:00.000   1 
2.00  2014-02-05 00:00:00.000   1 

И я хочу показать мой выход, как

January 3.00 
February 5.00 
!!!!!! 

December 12.00 

Итак, как могу ли я подсчитать сумму и как положить все дни до одного месяца

и я использую треску eigniter 3,0, моя база данных SQL SERVER 2012

public function overviews(){ 
// $merchantid=$this->session->userdata('user_password'); 
    $baji=$this->livemerchant_model->overviews(); 
    $name=$this->session->userdata('name'); 
      $data=array('baji'=>$baji,'name'=>$name); 

    if($this->session->has_userdata('user_email','name')){ 
    $this->load->view('overviews.php', $data); 


    } 
    } 

sfnerd это мой контроллер и можно отображать данные как

select year 
january 12.00 
february 24.00 


Total 36.00 

и я хочу, количество отображения суммы за выбранный год только

<label class="tp-label">Select a year</label> 
                   <select> 
                   <?php 
foreach($monthlyTotals as $row) 
{ 
?> 
<option value = "<?php echo $row->TheYear?>"><?php echo $row->TheYear;?> </option> 
<?php 
} 
?> 

поэтому, когда я сделал этот цикл, я получаю много лет, основываясь на месяцах, таких как 2014 12 раз, и мне нужен вывод, например, год выбора 2015, и у меня есть кнопка загрузки, когда я нажимаю на это, но п необходимо отобразить 12 месяцев

public function overviews() 
{ 
$this->load->model('livemerchant_model'); 
$name=$this->session->userdata('name'); 
$data['monthlyTotals'] = $this->livemerchant_model- >overviews($theyear=''); 
$this->load->view('overviews', $data); 
} 

И использовали этот контроллер

Помощь мне

ответ

0

Есть вероятно несколько способов сделать это, но вот два способа сделать это (один с помощью Active Record , один прямой SQL). Я тестировал CI 3.0.6 и SQL Server 2012 и создал аналогичную таблицу.

МОДЕЛЬ ФУНКЦИЯ (предположим, что модель называется Заказчики)

Straight SQL Версия:

function get_monthly_totals($theYear = '', $theMonth = '') 
{ 
    $sql = "SELECT DATEPART(Year, Date) [TheYear], DATEPART(Month, Date) [TheMonth], DATENAME(Month, Date) [TheMonthName], SUM(Amount) [TotalAmount] 
     FROM Customers 
     WHERE Date IS NOT NULL "; 

    if ($theYear != '') { 
     $sql = $sql . " AND DATEPART(Year, Date) = '$theYear'"; 
    } 

    if ($theMonth != '') { 
     $sql = $sql . " AND DATEPART(Month, Date) = '$theMonth'"; 
    } 

    $sql = $sql . " GROUP BY DATEPART(Year, Date), DATEPART(Month, Date), DATENAME(Month, Date) ORDER BY [TheYear], [TheMonth], [TheMonthName]"; 

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

    return $query->result(); 
} 

Активная версия Запись:

function get_monthly_totals($theYear = '', $theMonth = '') 
{ 

    $this->db->select("DATEPART(Year, Date) [TheYear], DATEPART(Month, Date) [TheMonth], DATENAME(Month, Date) [TheMonthName], SUM(Amount) [TotalAmount]", false); 
    $this->db->from('Customers'); 

    if ($theYear != '') { 
     $this->db->where("DATEPART(Year, Date) = '" . $theYear . "'", NULL, FALSE); 
    } 

    if ($theMonth != '') { 
     $this->db->where("DATEPART(Month, Date) = '" . $theMonth . "'", NULL, FALSE); 
    } 

    $this->db->group_by("DATEPART(Year, Date), DATEPART(Month, Date), DATENAME(Month, Date)"); 
    $this->db->order_by("1", "asc"); 
    $this->db->order_by("2", "asc"); 
    $this->db->order_by("3", "asc"); 

    $query = $this->db->get(); 

    return $query->result(); 
} 

CONTROLLER ФУНКЦИЯ

public function index() 
{ 
    $this->load->model('Customers_model'); 

    $data['monthlyTotals'] = $this->Customers_model->get_monthly_totals('2014'); 

    $this->load->view('customers', $data); 
} 

VIEW OUTPUT (customers.php)

<?php 
    foreach ($monthlyTotals as $row) 
    { 
     echo $row->TheYear . " - " . $row->TheMonthName . ": " . $row->TotalAmount . " <br />" . PHP_EOL; 
    } 
?> 
+0

Благодаря cfnerd его работы для меня ........ но я получаю все годы записи, но я хочу выбрать год, как выбрать год и отобразить 12 месяцев записи – ohmygood

+0

@shaik вы можете настроить запрос в контроллере, чтобы сделать это, добавив WHERE claus е. ГДЕ может быть то, что вы проходите через переменную или что-то статическое. – cfnerd

+0

Thnak you @cfnerd .. На самом деле я отредактировал свой вопрос, не могли бы вы проверить и дать мне решение – ohmygood