hafizy Baharudin
hafizy Baharudin

Reputation: 87

Adding months to a date and insert into database

i'm trying to add X month to a date taken from my database

$sql_batch = "SELECT * FROM mgm_subscription WHERE status = '1'"
$query_batch = mysql_query($sql_batch);
$row_batch = mysql_fetch_array($query_batch);

$addMonth = 3;
$startDate = $row_batch['start_month'];
$endDate = strtotime('+'.$addMonth.' month', $startMonth);  // add number of days from form
$endDate = date('m/d/y H:i:s', $endDate );  

$sql_date = "INSERT INTO user_subscription (user_id, start_month, end_month, sub_status) VALUES ('".$usercode2."','".$startDate."','".$endDate."', '')";
$query_date = mysql_query($sql_date);

NULL was inserted into the end_month. start_month and end_month is DATE type in the mysql

how do i fix this? tq.

Upvotes: 0

Views: 1332

Answers (3)

asprin
asprin

Reputation: 9823

If I understood your question, your $endDate should be

$endDate = date('Y-m-d', strtotime($startDate.' +'.$addMonth.' months'));  

So this will equate to:

$endDate = $startDate + 3 months /* in Y-m-d format */

EDIT: Just saw that your column datatype is Date. This would mean that you can't store timestamp in your date. It has to be Y-m-d format only as that is the valid mysql format supported.

Upvotes: 2

You only mention adding X months. Maybe I misunderstood your question, but if all you care about is the month, I would do the following:

if ($startMonth === 'January') {
    $monthNumber = 1;
} else if ($startMonth === 'February') {
    $monthNumber = 2;
} //Up to November then finish with {
else {
    $monthNumber = 12;//December
}

$newMonthNumber = $monthNumber + $addMonth;

if ($newMonthNumber % 12 == 1) {
    $endMonth = 'January';
} else if ($newMonthNumber % 12 == 1) {
    $endMonth = 'February';
} //Up to November then finish with {
  else {
    $endMonth = 'December';
}

$sql_date = "INSERT INTO user_subscription (user_id, start_month, end_month, sub_status) VALUES ('".$usercode2."','".$startMonth."','".$endMonth."', '')";
$query_date = mysql_query($sql_date);

Upvotes: 0

Mohd Dhiyaulhaq
Mohd Dhiyaulhaq

Reputation: 89

You insert $endMonth a value(number of days from form) then you try to replace it ($endMonth) and you call back your replaced variable..

$endMonth = strtotime('+'.$addMonth.' month', $startMonth); // add number of days from form $endMonth = date('m/d/y H:i:s', $endMonth);

It will return null value.. My suggestion, try to put other variable to prevent duplicate value or missing data

Upvotes: 0

Related Questions