【问题标题】:checkbox form in a session doesn't work properly会话中的复选框表单无法正常工作
【发布时间】:2019-10-18 12:54:23
【问题描述】:

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

在第 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 &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>

我做错了什么?

【问题讨论】:

  • 您尝试设置 checked 属性的方式毫无意义 - 您正在检查这三个会话变量中的任何一个是否已一次性设置,这样所有三个会话变量都会产生相同的结果复选框。

标签: php function session input


【解决方案1】:

问题在于这一行:

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

【讨论】:

  • 我怎样才能使名称'Question_1'、'Question_2'等(来自$_SESSION ['Question_1']等)自动成为$id的值?
  • 当您在“第 3 页”中设置它们时应该已经发生了
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2020-04-04
  • 2017-04-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多