会话中的复选框表单无法正常工作

时间:2019-10-18 12:54:23

标签: php function session input

我正在尝试编写在线表单的代码:

在第1页上,只有一些人口统计问题。我在第一个页面上开始会话。当他们提交答案时,他们将被重定向到第2页,在该页上我放置了一些陈述,供他们选择同意级别。  -如果他们想返回上一页的答案,则要感谢这次会议。  -最终他们的答案将被传输到数据库中(尚未编写)。

问题: 1)我试图将问题的数量乘以第2页上的3个问题,但是当我转到第3页并返回到第2页时,答案不记得了吗?

2)如果我只检查了一些问题(不是全部),则会出现“ Notice:Undefined index:”(通知:未定义的索引:),且该行未回答。可以通过某种方式解决吗?

这是第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 &raquo;'); ?>
</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>

我在做什么错了?

1 个答案:

答案 0 :(得分:0)

问题出在这一行:

    <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":; ?>>