表单提交后PHP更新会话值

时间:2015-09-15 20:56:22

标签: php session

我有一个带有文本框的表单,需要一个日期值(date1)。当date1更新并提交(发布到同一页面)时,它会更新会话值而没有任何问题,但不会更新date2 - 下面说明。

更新date1时,date2不会更新。 Date2将通过添加30天到达日期获得一个值1。

摘要: Date1 - 会话变量在提交表单后会更新。 Date2 - 提交表单后,会话变量不会更新。但是date1和amp; date2在数据库中更新。

我花了好几天试图找到问题。我想出了如何让date1更新会话变量但是date2我无法弄明白。

注意:我回显会话变量。这就是我知道它没有在页面上更新的方式。回声不在下面的代码中。

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 - 我为date2添加了一个隐藏值用于测试。以为我会尝试一下,看看试图让某些东西发挥作用会发生什么。

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

1 个答案:

答案 0 :(得分:1)

终于找到了一种方法来让这个工作,而不是依赖一群孩子。在更改我使用的代码的过程中的整个时间:

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

但那是错的。相反,它是:

$_POST['date2'] = $date2; 

代码:

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; 

       }

    }