php - 会话中的复选框表单无法正常工作
问题描述
我正在尝试为在线表单编写代码:
在第 1 页上,只有一些人口统计问题。在我开始会话的第一页上。当他们提交答案时,他们会被重定向到第 2 页,我在其中放置了一些声明,他们可以在其中选择他们的同意程度。- 如果他们想返回前一页的答案,由于会话而被记住。- 最终他们的答案将被转移到数据库中(还没有写)。
问题: 1) 我试图将第 2 页上的问题数量乘以 3 个问题,但是当我转到第 3 页并返回第 2 页时,没有记住答案?
2)如果我只检查一些问题(不是全部),我会得到“通知:未定义的索引:”与未回答的问题所在的行。这可以以某种方式解决吗?
这是第 2 页的代码:
<form action="page3.php" method="post">
<?php
$options = array(
'Good' => 'Good',
'Neutral' => 'Neutral',
'Bad' => 'Bad',
);
checkbox( 'Question_1', 'Question_1', 'How good is your health?', $options );
checkbox( 'Question_2', 'Question_2', 'How good is your math?', $options );
checkbox( 'Question_3', 'Question_3', 'How good is your knowledge of astrofysics?', $options );
?>
<?php submit('Go To Step 3 »'); ?>
</form>
这是第 3 页的代码(第 2 页的信息存储在 SESSION 变量中):
<?php
include_once('header.php');
// Store data from page 1 in session
if ( ! empty( $_POST ) ) {
$_SESSION['Question_1'] = $_POST['Question_1'];
$_SESSION['Question_2'] = $_POST['Question_2'];
$_SESSION['Question_3'] = $_POST['Question_3'];
}
?>
这是使用函数的代码(来自functions.php):
function checkbox( $name, $id, $label, $options = array() ) {?>
<div class="form-group">
<p><?php echo $label; ?></p>
<?php foreach ( $options as $value => $title ) : ?>
<label class="checkbox-inline" for="<?php echo $id; ?>">
<input type="checkbox" required name="<?php echo $name; ?>[]" value="<?php echo $value; ?>" <?php isset($_SESSION['Question_1'],$_SESSION['Question_2'],$_SESSION['Question_3']) ? checked="checked":; ?>>
<span class="checkbox-title"><?php echo $title; ?></span>
</label>
<?php endforeach; ?>
</div>
我究竟做错了什么?
解决方案
问题在于这一行:
<input type="checkbox" required name="<?php echo $name; ?>[]" value="<?php echo $value; ?>" <?php isset($_SESSION['Question_1'],$_SESSION['Question_2'],$_SESSION['Question_3']) ? checked="checked":; ?>>
它可能应该是这样的:
<input type="checkbox" required name="<?php echo $name; ?>[]" value="<?php echo $value; ?>" <?php isset($_SESSION[$id]) ? checked="checked":; ?>>
推荐阅读
- node.js - 无法在函数范围之外更改值
- python - 谁能解释一下 eval() 和 dict() 函数?
- python - 为什么这个混淆矩阵(matplotlib)在 Jupyter Notebook 中看起来被压扁了?
- tensorflow - 使用 fit_generator 和 dropout 层进行 Keras 验证
- google-apps-script - 如何访问共享(团队)云端硬盘中 Google Apps 脚本的 Stackdriver Logging?
- rust - actix_web 将配置传递给处理程序
- postgresql - 在 PostgreSQL 中,如何获得所有先前值都满足条件的最大值
- python - 如何在特定字符之外的指定位置拆分重复字符串?
- java - 如何在 Map 中进行迭代循环
, FlowRuleStats>? - ios - Firebase如何检查快照的孩子本身是否属于Datasnapshot类型