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

如何使用php中的日期增加php中的变量,php,mysql,phpmyadmin,Php,Mysql,Phpmyadmin,我正在开发一个页面,希望在其中使用日期记录事件。e、 g.如果我们在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=""; $previo

我正在开发一个页面,希望在其中使用日期记录事件。e、 g.如果我们在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
    }
}
$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

您可以将代码简化为:

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

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

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

}
事件表格
@id、事件名称、事件日期

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方面,如果您希望从数据库中获得每月的事件数,可以执行以下操作:

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

所有这些都没有经过测试,只是我做了一个沉思,我即将下班回家,所以结尾有点匆忙,但希望另一个角度能有所帮助。

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

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

}
事件表格
@id、事件名称、事件日期

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方面,如果您希望从数据库中获得每月的事件数,可以执行以下操作:

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

没有测试所有这些,只是一个沉思,我即将下班回家,所以结尾有点仓促,但希望另一个视角能有所帮助。

顺便说一句,这个
2\u 03\u 2016
对我来说就像是2016年3月2日。可能不是问题,但如果我查看数据库中的这些值,我会认为您谈论的是d/m/y而不是/m/yAlso,按日期/时间顺序对事件进行排序将“不像可能的那么容易”?如果您已将日期/时间作为单独的属性存储在
事件中
,那么我真的建议您使用不同的id格式?您指定的格式“没有它可能的那么有用”?我使用@RyanVincent-只需添加一个“计数器”整数,然后您的查询将使用ORDER BY您的\u date\u变量,icount。更容易、更干净。祝你好运。请使用
mysqli.*
PDO
命令
mysql.*
已被弃用……如果有一个包含
事件
及其
日期
列表的表,然后从该表创建一个
视图
,该视图给出了给定月份的事件量,这不是更有意义吗。然后,您可以创建一个PHP函数来生成给定月份/年份的视图。顺便说一句,这个
2_03_2016
在我看来就像是2016年3月2日。可能不是问题,但如果我查看数据库中的这些值,我会认为您谈论的是d/m/y而不是/m/yAlso,按日期/时间顺序对事件进行排序将“不像可能的那么容易”?如果您已将日期/时间作为单独的属性存储在
事件中
,那么我真的建议您使用不同的id格式?您指定的格式“没有它可能的那么有用”?我使用@RyanVincent-只需添加一个“计数器”整数,然后您的查询将使用ORDER BY您的\u date\u变量,icount。更容易、更干净。祝你好运。请使用
mysqli.*
PDO
命令
mysql.*
已被弃用……如果有一个包含
事件
及其
日期
列表的表,然后从该表创建一个
视图
,该视图给出了给定月份的事件量,这不是更有意义吗。然后,您可以创建一个PHP函数来生成给定月份/年份的视图。谢谢!!!我一定会考虑到这一点,当我查询的总事件谢谢!!!当我查询总事件时,我一定会考虑到这一点。这正是我所寻找的…让我们尝试实现它在添加代码后,它现在每月递增,就像我在编辑中放置的图像一样,因此,与其递增
1
它递增和浓缩月份,这正是我想要的…让我们尝试实现它在添加代码后,它现在递增月份,就像我在编辑中放置的图像一样,因此与其递增
1
它递增和浓缩月份