簡體   English   中英

如何使用PHP中的日期增加PHP中的變量

[英]How to increment a variable in php using the date in PHP

我正在開發一個頁面,其中我想使用日期記錄事件。 例如,如果我們在2016年3月,則代碼必須為第一個事件生成的值為1_03_2016,然后,如果在3月發生另一個事件,則值為2_03_2016,然后,如果在3月再次發生另一個事件,則值將為3_03_2016,依此類推。

我已經完成以下工作:

$date= date('Y-m-d');


$time=strtotime($date);
$month=date("m",$time);
$year=date("Y",$time);

$zuva="";
$previous=0;
$sql = "select * from offense order by id desc limit 1";
$query_result = mysql_query($sql) or die(mysql_error());
while($row = mysql_fetch_assoc($query_result)){

$previous = $row['previous'];
$zuva=$row['date'];
}
$time1=strtotime($zuva);
$month1=date("m",$time1);
$year1=date("Y",$time1);
if($month === $month1){


$previous++;
$casenumber = $previous."_".$month."_".$year;


}   elseif($date != $zuva){
    //$date= date('Y-m-d');
    $previous=0;
    $previous++;

$casenumber = $previous."_".$month."_".$year;
    }
    elseif(mysql_num_rows($query_result)==0){
    $previous=0;
    $previous++;

    $casenumber = $previous."_".$month."_".$year;

    }
$_SESSION['casenum']=$casenumber;
$_SESSION['previous']=$previous;

}

因此,我希望變量$ casenumber對於我插入數據庫中的每個條目都增加。 這是我要插入的表的屏幕: 在此處輸入圖片說明

這是Im用於插入的查詢:

$query2 = "INSERT INTO `complaint_search` VALUES('','$identification_number','$casenumber')";
            $query_run2 = mysql_query($query2) or die(mysql_error());

添加apokryfos代碼后:

添加apokryfos代碼后

您可以將代碼簡化為:

<?php

function getNextCaseNumberId() {
    $date = date('Y-m-d');
    $time = strtotime($date);
    $month = date("m", $time);
    $year = date("Y", $time);
    $sql = "select * from `complaint_search` WHERE casenumber LIKE '%_{$month}_{$year}' order by cs_id desc limit 1"; //Assuming your CS_ID is autoincrement
    $query_result = mysql_query($sql) or die(mysql_error());

    if (mysql_num_rows($query_result) == 0) {
        return "1_{$month}_{$year}";
    } else {
        $row = mysql_fetch_assoc($query_result);        
        $lastId=explode("_",$row["casenumber"])[0];
        return ($lastId+1)."_".$month."_".$year; //Missed an underscore here
    }
}

然后,您插入新的投訴,例如:

// Probably best to lock the complaint_search table here
$query2 = "INSERT INTO `complaint_search` VALUES('','$identification_number','".getNextCaseNumberId()."')";        
$query_run2 = mysql_query($query2) or die(mysql_error());
//But don't forget to unlock it here

只是另一個潛在的解決方案,而不是您當前的系統,您可能無法實現以下內容:

活動
@ id,event_name,event_date

CREATE TABLE Events (
  `id` int,
  `event_name` varchar(64),
  `event_date` timestamp
);

然后,您可以通過以下查詢獲得每月的事件數量:

SELECT count(event_name) as event_count,
       MONTH(event_date) as month
FROM Events
WHERE MONTH(event_date) = 3
GROUP BY LEFT(event_date, 7);

因此,如果我們有以下測試數據:

INSERT INTO Events (
  id, event_name, event_date
)
VALUES 
('1', 'Some Event', '2016-03-01'),
('2', 'Another Event', '2016-03-06'),
('3', 'Event Three', '2016-03-12'),
('4', 'Event Four', '2016-03-18'),
('5', 'Event Five', '2016-03-21')

該查詢將返回以下內容:

| event_count | month |
|-------------|-------|
|           5 |     3 |

你可以在這里找到小提琴

在PHP方面,如果您希望每月從數據庫中獲取事件數量,則可以執行以下操作:

$month = 3;
$sql = "SELECT count(event_name) as event_count
        FROM Events
        WHERE MONTH(event_date) = '". mysql_real_escape_string($month) ."'
        GROUP BY LEFT(event_date, 7);";

$eventCount = mysql_result(mysql_query($sql), 0);
echo $eventCount; // Outputs 5

沒有測試過所有這些,只是想着一個沉思,我正要下班回家,所以這有點趕到最后,但是希望另一種觀點可能會有所幫助。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM