【问题标题】:How to pass form value to multiple pages using PHP?如何使用 PHP 将表单值传递给多个页面?
【发布时间】:2014-03-06 02:04:07
【问题描述】:

我对 php 的了解非常有限,如果有任何帮助,我将不胜感激。

我正在尝试创建一个 php 测验,其中每个问题都在不同的页面上。在第三页上,对第一页和第二页的答案进行评分和计算。问题是我只得到最后一个答案的分数(来自第 2 页)

我尝试使用 Sessions,但可能搞砸了。我也不为此使用数据库。

在第一页 (q1.php) 我有这个表格

 <form action="q2.php" method="post"><li>
    <h3>Koji ste pol?</h3>

    <div>
    <input type='radio' name='answer1' id='answer1' value='A' />
    <label for='answer1A'>Muško</label>
    </div>

    <div>
    <input type='radio' name='answer1' id='answer1' value='B' />
    <label for='answer1B'>Žensko</label>
    </div>
  </li><input type="submit" value="posalji" /></form>

在第二页 (q2.php) 我有这段代码

 <?php
 session_start();
 $_SESSION['answer1'] = $_POST['answer1'];
 ?>

 <form action="rezultat.php" method="post"><li>
    <h3>Da li ste zaposleni?</h3>

    <div>
    <input type='radio' name='answer2' id='answer2' value='A' />
    <label for='answer2A'>Da</label>
    </div>

    <div>
    <input type='radio' name='answer2' id='answer2' value='B' />
    <label for='answer2B'>Ne</label>
    </div>
  </li><input type="submit" value="posalji" /></form>

在第三页(rezultat.php)需要计算第一页和第二页的答案

<?php
 session_start();
 $_SESSION['answer1'] = $_POST['answer1'];
 $_SESSION['answer2'] = $_POST['answer2'];
 ?>

Vaš rezultat je: 

<?php
$answer1= $_POST['answer1'];
$answer2= $_POST['answer2'];

$score = 0;

if ($answer1 == "A"){$score += 5;}
if ($answer1 == "B"){$score += 4;}

if ($answer2 == "A"){$score += 1;}
if ($answer2 == "B"){$score += 5;}

echo "$score"; ?>

请帮忙,提前谢谢。

【问题讨论】:

    标签: php html forms session session-variables


    【解决方案1】:

    在您的第三页 (rezultat.php) 上,您应该删除此行:

    $_SESSION['answer1'] = $_POST['answer1'];

    不再需要它,因为您已经在 第二页 (q2.php) 上为 $_SESSION['answer1'] 分配了值。你目前正在做的是在$_SESSION['answer1'] 上分配一个 nullempty 值,因为$_POST['answer1'] 从未存在于 第二页 (q2.php)强>。

    然后替换这个:

    $answer1= $_POST['answer1'];
    $answer2= $_POST['answer2'];
    

    $answer1= $_SESSION['answer1'];
    $answer2= $_SESSION['answer2'];
    

    您可能希望在将$_POST 分配给$_SESSION 之前添加一些验证层。

    【讨论】:

      【解决方案2】:
      $_POST['answer1'];
      

      在 rezultat.php 上不可用,所以现在您正在用不存在的 POST 数据覆盖答案。 在读取 $_POST[] 字段之前,先快速检查一下它是否真的可用

       if(isset($_POST['answer1'])){}
      

      这会给你一个线索,即 answer1 在最后一页中不可用。

      【讨论】:

        【解决方案3】:

        “answer1”字段在第二页 (q2.php) 中不可用,因此您不能使用 $_POST['answer1']。

        使用下面更正的脚本!

             <?php
              session_start();
              $_SESSION['answer2'] = $_POST['answer2'];
             ?>
        
            Vaš rezultat je: 
        
            <?php
            $answer1= $_SESSION['answer1'];
            $answer2= $_SESSION['answer2'];
        
            $score = 0;
        
            if ($answer1 == "A"){$score += 5;}
            if ($answer1 == "B"){$score += 4;}
        
            if ($answer2 == "A"){$score += 1;}
            if ($answer2 == "B"){$score += 5;}
        
            echo "$score"; ?>
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2018-02-03
          • 1970-01-01
          • 1970-01-01
          • 2018-09-05
          • 2017-03-31
          • 2017-10-14
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多