首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >PHP计数器变量停止递增

PHP计数器变量停止递增
EN

Stack Overflow用户
提问于 2015-07-17 18:16:31
回答 4查看 216关注 0票数 0

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

这就是我到目前为止所能做的。

代码语言:javascript
复制
<?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仍然留在页面上。

我以为使用会话变量就可以解决这个问题,但我显然做错了什么。

EN

回答 4

Stack Overflow用户

发布于 2015-07-17 18:22:24

您总是将计数器设置为2

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

代码语言:javascript
复制
if(isset($_SESSION['count'])){

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

然后在获取POST时将其递增:

代码语言:javascript
复制
if ($_SERVER["REQUEST_METHOD"] == "POST") {

++$_SESSION['count'];  

echo $_SESSION['count'];

}

如我们所知的1 + 1 = 2

我认为您希望在计数器未设置时初始化它,因此请更改

代码语言:javascript
复制
if(!isset($_SESSION['count'])){
  $_SESSION['count'] = 1;  
} 

echo $_SESSION['count'];

如果在POST上,则递增

代码语言:javascript
复制
if ($_SERVER["REQUEST_METHOD"] == "POST") {
  $_SESSION['count']++;  
}

echo $_SESSION['count'];
票数 1
EN

Stack Overflow用户

发布于 2015-07-17 18:22:42

你弄乱了这段代码:

代码语言:javascript
复制
<?php
if (isset($_SESSION['count'])){
  $_SESSION['count'] = 1;
 echo $_SESSION['count'];
}

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

这应该是:

代码语言:javascript
复制
<?php
if (! isset($_SESSION['count'])){
  $_SESSION['count'] = 1;
  echo $_SESSION['count'];
}

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

如果不是,则将其设置为1

如果是,则什么也不做。

票数 0
EN

Stack Overflow用户

发布于 2015-07-17 18:23:59

这部分

代码语言:javascript
复制
if (isset($_SESSION['count'])){

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

使计数器为1,每次你重新加载页面。你应该使用!isset (所以!在设置之前),以使其在计数器尚未设置时将计数设置为1。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/31473523

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档