简体   繁体   English

表单提交后的PHP更新会话值

[英]PHP Update session values after form submit

I have a form with a textbox that requires a date value (date1). 我有一个带有文本框的表单,该表单需要日期值(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. 更新并提交date1后(发布到同一页面),它会毫无问题地更新会话值,但不会更新date2-下文解释。

When date1 is updated date2 doesn't update. 当date1更新时,date2不会更新。 Date2 will get a value by adding 30 days to date1. 通过将date1加30天,Date2将获得一个值。

In summary: Date1 - session variable gets updated after submitting the form. 总结: Date1-会话变量在提交表单后得到更新。 Date2 - session variable does not get updated after submitting the form. Date2-提交表单后,会话变量不会更新。 BUT both date1 & date2 updates in the database. 但是date1和date2都将在数据库中更新。

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. 我想出了如何获取date1来更新会话变量,但是date2却无法解决。

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. HTML-我为date2添加了一个隐藏值进行测试。 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>

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; 

       }

    }

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM