我试图在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>
答案 0 :(得分:0)
1.在PHP文件中,您将会话值分配给$ registratie_data变量,使用foreach循环进行打印。 这里$ registratie_data作为会话数据
在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'];