我使用php/html创建了一个表单,它允许用户输入数据,然后在提交之前审查和可选地编辑输入。一些输入是使用复选框完成的。使用堆栈溢出,一个很好的资源,我发现如何显示以前输入的数据,并允许用户进行更改。我的问题是与复选框。我使用会话变量来指示复选框是否先前已被选中。在编辑过程中,当用户检查一个以前未经检查的框时,它会更新,但是当用户取消选中一个被选中的框时,它将在Session变量和数据库中被检查。认识到在php/html表单中取消选中复选框编辑
这里是我使用了“更新”页面上显示先前输入的复选框代码:
<?php
session_start();
...
<input type="checkbox" name="Name1" <?php if($_SESSION['Name1']=="on"){echo 'checked';}?>/>
...
然后,当用户使他们的变化,点击更新按钮会话变量与此更新代码:
<?php
session_start();
foreach ($_POST as $key => $value) { $_SESSION[$key] = $value;}
文本字段更新完美。任何帮助,将不胜感激!我一直在这两天旋转我的轮子!
下面是代码的一些额外的摘录: 从显示更新的领域php文件:
<form method="post" action="UpdateVolunteerEnter.php">
/* example of text field */
Email Address
<input type="text" name="VolunteerEmail" id="VolunteerEmail" size="50" value="<?php echo $_SESSION['VolunteerEmail']; ?>"/>
<br />
/*example of checkbox field */
<input type="checkbox" name="AfterProm" id="AfterProm" <?php if($_SESSION['AfterProm']=="on"){echo "checked";}?>/>
<br />
<input type="submit" name="Update" id="Update" value="UPDATE" />
</form>
这里是从与你的建议的更新处理输入文件摘录代码:
<?php
session_start();
//Update Session Variables
foreach ($_POST as $key => $value) {
if($value == ''){
unset($_SESSION[$key]);
}
else {
$_SESSION[$key] = $value;
}
}
因此,在做了一些故障排除和更多挖掘之后,我发现如果复选框未被选中,它不在$ _POST中,因此$ _SESSION变量未被更新。我在我的php文件中添加了以下语句,它处理表单输入以检查这种情况并纠正它,使其现在可以正常工作!
foreach ($_POST as $key => $value) {$_SESSION[$key] = $value;}
//Check for unchecked checkboxes (one if statement per checkbox)
if (isset($_SESSION['checkbox1']) AND !isset($_POST['checkbox1'])){unset($_SESSION['checkbox1']);}}
感谢您的答复...但它没有工作; O(复选框是选中在编辑屏幕仍显示为检查检查画面上后,我插入的建议代码任何其他的想法 – user3188091
?您可以发布html代码吗? –
感谢您的持续关注!我已在原始问题陈述中添加了其他代码。 – user3188091