0

I have a form with a textbox that requires a date value (date1). When date1 is updated and submitted (posts to same page), it updates the session value with no issues but doesn't update date2 - Explained below.

When date1 is updated date2 doesn't update. Date2 will get a value by adding 30 days to date1.

In summary: Date1 - session variable gets updated after submitting the form. Date2 - session variable does not get updated after submitting the form. BUT both date1 & date2 updates in the database.

I have spent days trying to find the issue. I figured out how to get date1 to update the session variable but date2 I cannot figure it out.

Note: I echo the session variable. That's how I know it's not updating on the page. The echo isn't in the code below.

if(isset($_POST['submit'])){

$memberid = $_SESSION['memberid'];  
$date1 = $_POST['date1'];
$date2 = $_SESSION['date2'];    

if(empty($_POST['date1'])){
$errordate1[] = 'Select a Date';
$_SESSION['date1'];

} else {

echo $_SESSION['date1'] = $_POST['date1'];

}


if(empty($_POST['date2'])){

$_SESSION['date2'];

} else {

echo $_SESSION['date2'] = $_POST['date2'];

}



if(!isset($errordate1)){

$date1 = date('Y-m-d', strtotime($_POST['date1']));
$date2 = date('Y-m-d', strtotime($date1 . " +30 days"));
echo $date2; // I do not get the updated date.  
//die($date2); // if I uncomment this line I get the updated value for date2.


    try {

    $_SESSION['date2'] = $_POST['date2'];
    $stmt = $db->prepare('UPDATE theDates SET date1 = :date1, date2 = :date2, WHERE 
memberid=:memberid');
    $stmt->execute(array(':date1'=>$date1, ':date2'=>$date2, ':memberid'=>$memberid));

    header('Location: profile.php');
    exit;

     } catch(PDOException $e) {
        $errordate1[] = $e->getMessage();
     }

    }

    } 

HTML - I added a hidden value for date2 for testing. Thought I would try it and see what happens to trying to get something to work.

<form method="post" action="prof.php">
<input name="date1" type="text" value="<?php if(isset($errordate1)){ echo $_POST['date1']; } ?>" />
<input name="date2" type="hidden" value="<?php echo $_SESSION['date2']; ?>" />
<input type="submit" name="submit" value="Submit">
</form>
7
  • Has the session been started for all files using sessions? If not; do. It's required. Error reporting will tell you php.net/manual/en/function.error-reporting.php Commented Sep 15, 2015 at 21:01
  • did you call session_start() EVERYWHERE you use session data, BEFORE you use the session data? I'm guessing not... Commented Sep 15, 2015 at 21:05
  • ...just you watch and have them come back and say "Yes it has". Commented Sep 15, 2015 at 21:06
  • If session_start() wasn't there how would date1 update? I would think you would be smarter than that. But here's the answer for you ... yes session_start() does exist. Thought Fred ii would know that also. Commented Sep 15, 2015 at 21:11
  • see what I said @MarcB ? ^ - knew it. As per comment numero tre. Commented Sep 15, 2015 at 21:15

1 Answer 1

1

Finally found a way to get this to work rather than relying on a bunch of kids. The whole time during the process of changing the code I used:

$_SESSION['date2'] = $_POST['date2'];

But that was wrong. Instead it's:

$_POST['date2'] = $date2; 

The code:

if(!isset($errordate1)){

    $date1 = date('Y-m-d', strtotime($_POST['date1']));
    $date2 = date('Y-m-d', strtotime($date1 . " +30 days"));

    if(isset($_POST['date2'])) { 
       $_POST['date2'] = $date2; 

       }

    }
Sign up to request clarification or add additional context in comments.

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.