如何使用PHP中的日期在php中增加变量

时间:2016-03-30 14:00:17

标签: php mysql phpmyadmin

我正在开发一个页面,我希望使用日期记录事件。例如如果我们在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为我插入数据库的每个条目递增。这是我要插入的表格的屏幕: enter image description here

以下是我用来插入的查询:

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

添加apokryfos代码后:

after adding apokryfos code

2 个答案:

答案 0 :(得分:2)

您可以将代码简化为:

<?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

答案 1 :(得分:0)

只是另一种可能的解决方案,而不是您当前的系统,您可能无法实现以下内容:

活动
@ id,event_name,event_date

examplePanel.add(new JLabel("this is an example"));

然后您可以通过如下查询获得每月的事件数量:

examplePanel.setFont(.......);

所以,如果我们有这个测试数据:

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

您可以找到fiddle for it here

如果您希望数据库中每月发生的事件数量,那么在PHP方面就可以这样做:

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')

没有对所有这些进行测试,只是我的一次沉思,我即将下班回家,所以它有点匆匆走向终点,但希望另一个观点可能有所帮助。