PHP计数器变量停止递增

时间:2015-07-17 10:16:31

标签: php html

我正在练习使用PHP创建一个简单的测验网页。我想一次显示一个问题(而不是一次显示)。我使用了一个计数器变量,它将跟踪当前的问题编号。将显示与计数器变量中保存的值相对应的问题。


这是我迄今为止所做的。

<?php
session_start();
?>
<html>
<head>
<title>game</title>
<link rel="stylesheet" type="text/css" href="stylesheet.css">
<link rel="shortcut icon" href="Untitled2.ico">
</head>
<body>
<div id="middle">
<div id="quiz">
<form id="quiz2" method="post" action="<?php echo htmlspecialchars($_SERVER["PHP_SELF"]);?>">
<fieldset>
<?php 
if (isset($_SESSION['count'])){

$_SESSION['count'] = 1;
echo $_SESSION['count'];
}

if ($_SERVER["REQUEST_METHOD"] == "POST") {

++$_SESSION['count'];  
echo $_SESSION['count'];
}
?>
<?php if ($_SESSION['count']==1) : ?>
    <p>Ok, we will start with a nice easy question first.</p>
    <p>What is your favourite colour?</p>
    <input type="radio" name="Q1" value="red" required="required">
    Red
    <br>
    <input type="radio" name="Q1" value="black" required="required">
    Black
    <br>
    <input type="radio" name="Q1" value="green" required="required">
    Green
    <br>
    <input type="radio" name="Q1" value="orange" required="required">
    Orange
    <br>
    <input type="radio" name="Q1" value="yellow" required="required">
    Yellow
    <br>
    <input type="radio" name="Q1" value="blue" required="required">
    Blue
    <br>
    <br>
    <input type="submit" name="submit" value="Next">
<?php endif; ?>
<?php if ($_SESSION['count']==2) : ?>
    <p>Ah...I see.</p>
    <p>Now try this one.</p>
    <p>What trait do you admire most in a person?</p>
    <input type="radio" name="Q2" value="intelligence" required="required">
    Intelligence
    <br>
    <input type="radio" name="Q2" value="ambition" required="required">
    Ambition
    <br>
    <input type="radio" name="Q2" value="kindness" required="required">
    Kindness
    <br>
    <input type="radio" name="Q2" value="determination" required="required">
    Determination
    <br>
    <input type="radio" name="Q2" value="self-preservation" required="required">
    Self-preservation
    <br>
    <input type="radio" name="Q2" value="hard-working" required="required">
    Hard-working
    <br>
    <input type="radio" name="Q2" value="creativity" required="required">
    Creativity
    <br>
    <br>
    <input type="submit" name="submit" value="Next">
 <?php endif; ?>
</fieldset> 
</form>
</div>
</div>
</body>
</html>


因此,每个html(显示问题)的块都是隐藏的或显示的,具体取决于计数器变量。
这可以正常工作,直到计数器变量达到2,此时它停止递增,问题2仍然在页面上。
我认为使用会话变量会阻止我显然做错了。

4 个答案:

答案 0 :(得分:1)

您始终将计数器设置为2

在此行中,检查是否设置了计数器变量。如果,则将其设置为1

if(isset($_SESSION['count'])){

  $_SESSION['count'] = 1;
  echo $_SESSION['count'];
}

然后在获得POST时增加它:

if ($_SERVER["REQUEST_METHOD"] == "POST") {

++$_SESSION['count'];  

echo $_SESSION['count'];

}

我们知道1 + 1 = 2

我认为你想在没有设置时启动计数器,所以改变

if(!isset($_SESSION['count'])){
  $_SESSION['count'] = 1;  
} 

echo $_SESSION['count'];

然后在POST

上增加
if ($_SERVER["REQUEST_METHOD"] == "POST") {
  $_SESSION['count']++;  
}

echo $_SESSION['count'];

答案 1 :(得分:0)

你搞砸了这段代码:

<?php
if (isset($_SESSION['count'])){
  $_SESSION['count'] = 1;
 echo $_SESSION['count'];
}

上述代码表示如果我们有会话变量的值,请将其覆盖为1

这应该是:

<?php
if (! isset($_SESSION['count'])){
  $_SESSION['count'] = 1;
  echo $_SESSION['count'];
}

此代码检查是否存在会话变量的值。

如果没有,请将其设置为1

如果是的话,什么也不做。

答案 2 :(得分:0)

这部分

if (isset($_SESSION['count'])){

$_SESSION['count'] = 1;
echo $_SESSION['count'];
}
每次重新加载页面时,

使计数器1成为可能。您应该使用!isset(在isset之前这样!),以便在计数器尚未设置时将count设置为1。

答案 3 :(得分:0)

错误在以下代码中:

BB
设置或不设置

isset检查变量。如果它被设置,那么它评估为真,如果是部分则可以使用。

所以将其更改为以下内容:

    <?php 
    if (isset($_SESSION['count'])){

    $_SESSION['count'] = 1;
    echo $_SESSION['count'];
   }

empty检查变量是否受到限制,并检查该值是否为0,'0',''并为空。

如果您因使用issetempty而感到困惑,请考虑以下事项:

isset仅检查是否声明了varible。 如果varible是decalred并且值为0,则''isset计算为true,如果是part,则为excutes。

当为空时检查其声明和值。 如果varible的值为0,那么它将评估为真并且如果是部分则为excutes。 如果varible未声明,则返回true。