Register Register Member Login Member Login Member Login Forgot Password ??
PHP , ASP , ASP.NET, VB.NET, C#, Java , jQuery , Android , iOS , Windows Phone
 

Registered : 109,038

HOME > PHP > PHP Forum > แบ่งปัน CI-Counter แบบละเอียด Today, Yesterday,This Month, Last Month, This Year, Last Year


[PHP] แบ่งปัน CI-Counter แบบละเอียด Today, Yesterday,This Month, Last Month, This Year, Last Year

 
Topic : 136684



โพสกระทู้ ( 48 )
บทความ ( 0 )



สถานะออฟไลน์



พัฒนาต่อจากอันนี้ครับ เอามาเขียนแบบ CI
https://www.thaicreate.com/community/php-counter-day-yesterday-thismonth-lastmonth-year-lastyear.html
1. ในไฟล์ controller ในที่นี่ไว้ใน Home.php
01.public function index()
02.    {
03.        $date_today = date('Y-m-d');
04.        $last_day = date('Y-m-d',strtotime("-1 day"));
05.        $strSQL = " SELECT DATE FROM counter LIMIT 0,1";
06.        $row_read = $this->db->query($strSQL)->row();
07.        if ($row_read->DATE == $last_day) {
08.            //*** บันทึกข้อมูลของเมื่อวานไปยังตาราง daily ***//
09.            $strSQL1 = " SELECT count(DATE) AS total_yesterday FROM counter WHERE 1 AND DATE = '$last_day'";
10.            $row_count = $this->db->query($strSQL1)->row();
11.            $data = array(
12.                'DATE' => $last_day,
13.                'NUM' => $row_count->total_yesterday
14.            );
15.            if($this->db->insert('daily',$data)){
16.                $condition = array('DATE' => $last_day);
17.          $this->db->delete('counter', $condition);
18.            }
19.            $data_today = array(
20.                'DATE' => $date_today,
21.                'IP' => $_SERVER["REMOTE_ADDR"]
22.            );
23.            $this->db->insert('counter',$data_today);
24.            //$strSQL = " INSERT INTO daily (DATE,NUM) SELECT '".date('Y-m-d',strtotime("-1 day"))."',COUNT(*) AS intYesterday FROM  counter WHERE 1 AND DATE = '".date('Y-m-d',strtotime("-1 day"))."'";
25. 
26.            //*** ลบข้อมูลของเมื่อวานในตาราง counter ***//
27.            //$strSQL = " DELETE FROM counter WHERE DATE != '".date("Y-m-d")."' ";
28. 
29.        }
30.        if($row_read->DATE ==''){
31.            $data_today = array(
32.                'DATE' => $date_today,
33.                'IP' => $_SERVER["REMOTE_ADDR"]
34.            );
35.            $this->db->insert('counter',$data_today);
36.        }
37.        $sdata['count_today'] = $this->get_data->get_counter_today($date_today);
38.        $sdata['count_yesterday'] = $this->get_data->get_counter_yesterday($last_day);
39.        $sdata['count_this_m'] = $this->get_data->get_counter_this_m();
40.        $sdata['count_last_m'] = $this->get_data->get_counter_last_m();
41.        $sdata['count_this_y'] = $this->get_data->get_counter_this_y();
42.        $sdata['count_last_y'] = $this->get_data->get_counter_last_y();
43.        $sdata['count_all'] = $this->get_data->get_counter_all();
44.        //print_r($sdata);
45.        $this->load->view('home',$sdata);
46.    }


2. Model
01.function get_counter_today($today)
02.  {
03.    $sql = "SELECT COUNT(DATE) AS CounterToday FROM counter WHERE DATE = '$today'";
04.    $row = $this->db->query($sql)->row_array();
05.    return $row;
06.  }
07.  function get_counter_yesterday($lastday)
08.  {
09.    $sql = "SELECT COUNT(DATE) AS Counter_lastday FROM daily WHERE DATE = '$lastday'";
10.    $row = $this->db->query($sql)->row_array();
11.    return $row;
12.  }
13.  function get_counter_this_m()
14.  {
15.    $sql = "SELECT SUM(NUM) AS CountMonth FROM daily WHERE DATE_FORMAT(DATE,'%Y-%m') = '".date('Y-m')."'";
16.    $row = $this->db->query($sql)->row_array();
17.    return $row;
18.  }
19.  function get_counter_last_m()
20.  {
21.    $sql = "SELECT SUM(NUM) AS Count_LastMonth FROM daily WHERE DATE_FORMAT(DATE,'%Y-%m') = '".date('Y-m',strtotime("-1 month"))."'";
22.    $row = $this->db->query($sql)->row_array();
23.    return $row;
24.  }
25.  function get_counter_this_y()
26.  {
27.    $sql = "SELECT SUM(NUM) AS CountYear FROM daily WHERE DATE_FORMAT(DATE,'%Y')  = '".date('Y')."' ";
28.    $row = $this->db->query($sql)->row_array();
29.    return $row;
30.  }
31.  function get_counter_last_y()
32.  {
33.    $sql = "SELECT SUM(NUM) AS CountYear FROM daily WHERE DATE_FORMAT(DATE,'%Y')  = '".date('Y',strtotime("-1 year"))."' ";
34.    $row = $this->db->query($sql)->row_array();
35.    return $row;
36.  }
37.  function get_counter_all()
38.  {
39.    $sql = "SELECT COUNT(DATE) AS Counter_all FROM daily";
40.    $row = $this->db->query($sql)->row_array();
41.    return $row;
42.  }


3. หน้า views
01.<table width="100%" class="table table-striped">
02.            <tr>
03.              <td width="98">วันนี้</td>
04.              <td width="75"><div align="center"><?php echo number_format($count_today['CounterToday'],0);?></div></td>
05.            </tr>
06.            <tr>
07.              <td>เมื่อวาน</td>
08.              <td><div align="center"><?php echo number_format($count_yesterday['Counter_lastday'],0);?></div></td>
09.            </tr>
10.            <tr>
11.              <td>เดือนนี้</td>
12.              <td><div align="center"><?php echo number_format($count_this_m['CountMonth']+$count_today['CounterToday'],0);?></div></td>
13.            </tr>
14.            <tr>
15.              <td>เดือนที่แล้ว</td>
16.              <td><div align="center"><?php echo number_format($count_last_m['Count_LastMonth'],0);?></div></td>
17.            </tr>
18.            <tr>
19.              <td>ปีนี้</td>
20.              <td><div align="center"><?php echo number_format($count_this_y['CountYear']+$count_today['CounterToday'],0);?></div></td>
21.            </tr>
22.            <tr>
23.              <td>ปีที่แล้ว</td>
24.              <td><div align="center"><?php echo number_format($count_last_y['CountYear'],0);?></div></td>
25.            </tr>
26.          </table>


สอบถามหรือแสดงความคิดเห็นได้ครับ



Tag : PHP, MySQL, CodeIgniter

Move To Hilight (Stock) 
Send To Friend.Bookmark.
Date : 2022-05-07 14:13:49 By : comsc006 View : 614 Reply : 3
 

 

No. 1



โพสกระทู้ ( 48 )
บทความ ( 0 )



สถานะออฟไลน์


แก้ไข model -> function get_counter_all เป็นแบบนี้ครับ
Code (PHP)
1.function get_counter_all()
2.  {
3.    $sql = "SELECT SUM(NUM) AS Counter_all FROM daily";
4.    $row = $this->db->query($sql)->row_array();
5.    return $row;
6.  }

แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2022-05-09 15:51:41 By : comsc006
 

 
ไม่ควรกำหนดตัวแปรโดยไม่จำเป็น จะทำให้เปลือก Memory

Refactoring

Code (PHP)
1.function get_counter_all() {
2.    return $this->db->query("SELECT SUM(NUM) AS Counter_all FROM daily")->row_array();
3.}

แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2022-05-12 11:09:33 By : Guest
 

 
Refactor เพิ่มเติม:

Code (PHP)
1.function get_counter_last_y() {
2.    return $this->db->query("SELECT SUM(`NUM`) AS `CountYear` FROM `daily` WHERE DATE_FORMAT(`DATE`,'%Y') = YEAR(DATE_SUB(CURDATE(), INTERVAL 1 YEAR))")->row_array();
3.}

แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2022-05-12 11:16:03 By : Guest
 

   

ค้นหาข้อมูล


   
 

แสดงความคิดเห็น
Re : แบ่งปัน CI-Counter แบบละเอียด Today, Yesterday,This Month, Last Month, This Year, Last Year
 
 
รายละเอียด
 
ตัวหนา ตัวเอียง ตัวขีดเส้นใต้ ตัวมีขีดกลาง| ตัวเรืองแสง ตัวมีเงา ตัวอักษรวิ่ง| จัดย่อหน้าอิสระ จัดย่อหน้าชิดซ้าย จัดย่อหน้ากึ่งกลาง จัดย่อหน้าชิดขวา| เส้นขวาง| ขนาดตัวอักษร แบบตัวอักษร
ใส่แฟลช ใส่รูป ใส่ไฮเปอร์ลิ้งค์ ใส่อีเมล์ ใส่ลิ้งค์ FTP| ใส่แถวของตาราง ใส่คอลัมน์ตาราง| ตัวยก ตัวห้อย ตัวพิมพ์ดีด| ใส่โค้ด ใส่การอ้างถึงคำพูด| ใส่ลีสต์
smiley for :lol: smiley for :ken: smiley for :D smiley for :) smiley for ;) smiley for :eek: smiley for :geek: smiley for :roll: smiley for :erm: smiley for :cool: smiley for :blank: smiley for :idea: smiley for :ehh: smiley for :aargh: smiley for :evil:
Insert PHP Code
Insert ASP Code
Insert VB.NET Code Insert C#.NET Code Insert JavaScript Code Insert C#.NET Code
Insert Java Code
Insert Android Code
Insert Objective-C Code
Insert XML Code
Insert SQL Code
Insert Code
เพื่อความเรียบร้อยของข้อความ ควรจัดรูปแบบให้พอดีกับขนาดของหน้าจอ เพื่อง่ายต่อการอ่านและสบายตา และตรวจสอบภาษาไทยให้ถูกต้อง

อัพโหลดแทรกรูปภาพ

Notice

เพื่อความปลอดภัยของเว็บบอร์ด ไม่อนุญาติให้แทรก แท็ก [img]....[/img] โดยการอัพโหลดไฟล์รูปจากที่อื่น เช่นเว็บไซต์ ฟรีอัพโหลดต่าง ๆ
อัพโหลดแทรกรูปภาพ ให้ใช้บริการอัพโหลดไฟล์ของไทยครีเอท และตัดรูปภาพให้พอดีกับสกรีน เพื่อความโหลดเร็วและไฟล์ไม่ถูกลบทิ้ง

   
  เพื่อความปลอดภัยและการตรวจสอบ กระทู้ที่แทรกไฟล์อัพโหลดไฟล์จากที่อื่น อาจจะถูกลบทิ้ง
 
โดย
อีเมล์
บวกค่าให้ถูก
<= ตัวเลขฮินดูอารบิก เช่น 123 (หรือล็อกอินเข้าระบบสมาชิกเพื่อไม่ต้องกรอก)





ThaiCreate.Com Logo
© www.ThaiCreate.Com. 2003-2025 All Rights Reserved.
ไทยครีเอทบริการ จัดทำดูแลแก้ไข Web Application ทุกรูปแบบ (PHP, .Net Application, VB.Net, C#)
[Conditions Privacy Statement] ติดต่อโฆษณา 081-987-6107 อัตราราคา คลิกที่นี่