我正在通过创建一个简单的测验网页来练习使用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 !)
错误如下:
<?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。