如何在php中更改会话值

时间:2017-11-15 12:36:55

标签: php

我试图在php中更改会话var的值。

<?php 
session_start();

if(isset($_POST["submit"])) {
    $_SESSION["registratie_data"]["straat"] = $_POST["straat"];
    $_SESSION["registratie_data"]["nummer"] = $_POST["nummer"];
    $_SESSION["registratie_data"]["gemeente"] = $_POST["gemeente"];
    $_SESSION["registratie_data"]["postcode"] = $_POST["postcode"];
}
$registratie_data    =   $_SESSION['registratie_data'];

if(isset($_POST["edit_button"])) {
    foreach($registratie_data as $key => $value) {
        if($key == $_GET["focus"]) {
            $value = $_POST["edit_value"];
            echo $value;
        }
    }
}
?>

如您所见,我正在尝试更改foreach循环中的值。这实际上有效,当我回显值时,我看到我想要的结果......但是然后在html中显示这个值,不起作用。

任何可以告诉我这里我做错了什么的人?

这是我的HTML代码,如果有人需要这个来帮助我。

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>test</title>
    <style>
        li {
            display: block;
        }
    </style>
</head>
<body>
    <a href="?session=destroy">Vernietig sessie</a>
    <h1>Registratiegegevens</h1>
    <?php if(isset($_POST["submit"]) || isset($_POST["edit_button"]) ): ?>
    <ul>
    <?php foreach($registratie_data as $key => $value): ?>
        <li>
            <?php echo $value . " | "  ?> 
            <a href="?focus=<?php echo $key ?>">wijzig</a>
        </li>
    <?php endforeach ?>
    </ul>
    <?php elseif(isset($_GET["focus"])): ?>


            <form action="#" method=POST>
              <ul>
               <li> 
                <?php echo $_GET["focus"] ?>
                <input type="text" name="edit_value" ?>
                <input type="submit" name="edit_button" value="Opslaan">
                </li>
              </ul>
            </form>

    <?php else: ?>
    <form action="#" method=POST>
        <ul>
            <li>
                <label for="straat">Straat</label>
                <input type="text" name="straat">
            </li>
            <li>
                <label for="nummer">Nummer</label>
                <input type="text" name="nummer">
            </li>
            <li>
                <label for="gemeente">Gemeente</label>
                <input type="text" name="gemeente">
            </li>
            <li>
                <label for="postcode">postcode</label>
                <input type="text" name="postcode">
            </li>
            <input class="el" type="submit" name="submit" value="Volgende">
        </ul>
    </form>
    <?php endif ?>
</body>
</html>

3 个答案:

答案 0 :(得分:0)

1.在PHP文件中,您将会话值分配给$ registratie_data变量,使用foreach循环进行打印。    这里$ registratie_data作为会话数据

  1. 在HTML文件中,您没有将任何数据分配给$ registratie_data变量,因此它有空数据。 这里$ registratie_data空数据

    因此您需要将数据分配给$ registratie_data,如下所示

       //你需要确定会话值

         
      <?php foreach($registratie_data as $key => $value): ?>
          <li>
              <?php echo $value . " | "  ?> 
              <a href="?focus=<?php echo $key ?>">wijzig</a>
          </li>
      <?php endforeach ?>
      

答案 1 :(得分:0)

您不会在foreach循环中更改registration_data的值。我认为它应该是这样的:

foreach($registratie_data as $key => $value) {
    if($key == $_GET["focus"]) {
        $registratie_data[$key] = $_POST["edit_value"];
    }
}

答案 2 :(得分:-1)

您忘记了HTML示例中第一个示例的这行代码:

$registratie_data    =   $_SESSION['registratie_data'];