[英]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代碼后:
您可以將代碼簡化為:
<?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.