为什么num_tries计数器不起作用?

时间:2016-03-14 17:02:22

标签: php html

您好,我正在清除我的基本知识,我有点坚持实现这个猜猜游戏。我的问题是,我希望$ num_tries作为计数器工作,每当用户回答不正确时,它每次都会增加1。

<?php
$target=58;
$message="";
$num_tries=0;
if(isset($_POST["num_tries"])) {
    print "set";
    ++$num_tries;
} else {
    print "not set";
    $num_tries=0;
}

if (!isset($_POST["guess"])) {
    $message="Welcome to the game of Guess!!!!!!";
} elseif($_POST["guess"]> $target) {
    $message= "Try a smaller Number";
} elseif($_POST["guess"] < $target) {
    $message= "Try a larger Number";
} else {
    $message= "congrats....You got it.";
}
?>
<HTML>
<HEAD><TITLE>Guess Game</TITLE>
</HEAD>
<BODY>
<H1><?php print $message ?></H1>
Guess Number:<?php print $num_tries ?>

<FORM action="<?php print $_SERVER['PHP_SELF'];?>" method="POST">
    <INPUT type="text" name="guess">
    <INPUT type="hidden" name="num_tries" value="<?php $num_tries?>">
</FORM>
</BODY>
</HTML>

3 个答案:

答案 0 :(得分:2)

您可以在第一行解决它:

$target=58;
$message="";
$num_tries = (!empty($_POST['num_tries']) ? $_POST['num_tries'] : 0);

这意味着如果之前未提交表单,$num_tries将为零,否则,该值将是最后提交的值。

然后你需要在隐藏元素中打印

<INPUT type="hidden" name="num_tries" value="<?php echo $num_tries?>">
---------------------------------------------------^^^^

答案 1 :(得分:1)

$message="";
$num_tries=0;

将上述声明更改为$num_tries=isset($_POST["num_tries"]) ? $_POST["num_tries"] : 0;,这意味着如果设置了post var值,则指定post var value,否则指定0。

然后改变你需要做的是在隐藏元素下打印值。 您可以使用printprint_recho

<INPUT type="hidden" name="num_tries" value="<?php echo $num_tries; ?>">

答案 2 :(得分:0)

您正在使用<?php $num_tries ?>,它实际上什么都不做。

您需要使用<?php echo $num_tries ?>print也可以,但对于您的用例,echo更有效),以便将值实际放入表单中。

此外,$num_tries = 0;不会费心阅读现有值。您可以使用$num_tries = $_POST['num_tries'] | 0;虽然它会在未设置字段时生成PHP通知,如果您关心这一点,请使用isset和三元运算符或if / else。