PHP计数器变量停止递增


PHP counter variable stops incrementing

我正在通过创建一个简单的测验网页来练习使用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保留在页面上。
我认为使用会话变量会阻止这一点,我显然做错了。

您总是将计数器设置为2

在这一行中,检查是否设置了反变量。如果YES设置为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'];

你把这段代码弄乱了:

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

上面的代码意味着如果我们有一个会话变量的值,将其覆盖为1

应该是:

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

这段代码检查会话变量是否有值。

如果不是,设置为1

这部分

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

使计数器在每次重新加载页面时为1。您应该使用!isset (so a !)

在isset之前),以便在计数器尚未设置时将count设置为1。

错误如下:

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

isset检查变量是否设置。如果设置了,则计算为true并执行If部分。

所以改成如下:

    if (empty($_SESSION['count']))
    {
    }

empty检查变量是否被赋值,也检查值是否为0,'0',' '和空

如果您希望混淆使用isset或empty,请考虑以下操作:

isset只检查变量是否声明。如果变量声明值为0,则isset求值为true并执行If部分。

为空时,检查其声明和值。如果变量的值为0,那么它的值为true并执行If部分。如果变量没有声明,那么它也返回true。