0

我正在尝试制作一个简单的网络应用程序,它可以从诸如拼字游戏之类的物理游戏中添加分数。大部分代码是一个 HTML 表单,要求每个表单元素输入一个。然后,它将表单生成的数据放入并初始化适当的变量。我无法弄清楚的一个部分是如何将新分数添加到最后一个分数。我尝试添加变量,例如 $lastScore,但这似乎也不起作用。有没有人有什么建议?

<?php
//Gets data from HTML form
$addScore1 = $_REQUEST['addScore1'];
$addScore2 = $_REQUEST['addScore2'];

//Generates HTML form
echo "<!DOCTYPE html>

<html>

<head>
<title>Score Add</title>
</head>

<body>
<div id=\"displayNames\">

    <p>
    $player1
        <form method=\"post\" action=\"\">
            <label for=\"addScore1\">Enter your score:</label>
            <input type=\"text\" name=\"addScore1\" id=\"addScore1\" />


            <input type=\"submit\" />
        </form>
    </p>

    <p>
    $player2
        <form method=\"post\" action=\"\">
            <label for=\"addScore2\">Enter your score:</label>
            <input type=\"text\" name=\"addScore2\" id=\"addScore2\" />

            <input type=\"submit\"/>
        </form>
    </p>
</div>
</body>

</html>";


?>
4

2 回答 2

0

提交时,脚本会调用自身并丢失所有变量。您需要存储他们当前的分数,例如在会话中、在数据库中或在表单中的隐藏字段中。

在表单中使用隐藏字段:

<form method="post" action="">
    <label for="addScore1">Enter your score:</label>
    <input type="text" name="addScore1" id="addScore1" />
    <--! the addition is done in the next line in value-->
    <input type="hidden" name="oldScore1" id="oldScore1" value="<?=($oldscore1 + $addScore1)?>" />
    <input type="submit" />
</form>

对您的第二种形式执行相同的操作->oldScore2等...
在脚本的顶部,阅读 oldscore$_REQUEST

//Gets data from HTML form
$addScore1 = $_REQUEST['addScore1'];
$addScore2 = $_REQUEST['addScore2'];
$oldScore1 = $_REQUEST['oldScore1'];
$oldScore2 = $_REQUEST['oldScore2'];

// as alternative, do the addition here:
$oldScore1 += $addScore1;
$oldScore2 += $addScore2;
于 2013-03-03T22:32:47.420 回答
0

整体重写你的代码,试试看:

我编辑了所有这些<?php=$somevalue?>,因为它们似乎不适用于您的 PHP 设置,并将它们替换为<?php echo $somevalue> ?>......让我知道它是如何工作的......

<?php
// Get data from HTML form. $_POST is fine, because form method is set to POST.
$addScore1 = $_POST['addScore1'];
$addScore2 = $_POST['addScore2'];
$oldScore1 = $_POST['oldScore1'];
$oldScore2 = $_POST['oldScore2'];

// if these are numeric values, add them up
if (is_numeric($addScore1) && is_numeric($oldScore1)) $oldScore1 += $addScore1;
if (is_numeric($addScore2) && is_numeric($oldScore2)) $oldScore2 += $addScore2;

// Generate HTML form -- in HTML, much to complicated in PHP, unless it is necessary for sth else
?>
<html>
    <head>
        <title>Score Add</title>
    </head>

    <body>
        <div id="displayNames">   
            <p><?php echo $player1; ?> current score: <?php echo $oldScore1; ?>
            <form method="post" action="">
                <label for="addScore1">Enter your score:</label>
                <input type="text" name="addScore1" id="addScore1" />
                <input type="hidden" name="oldScore1" id="oldScore1" value="<?php echo $oldscore1; ?>" />
                <input type="submit" />
            </p>

            <p><?php echo $player2; ?> current score: <?php echo $oldScore2; ?>
                <label for="addScore2">Enter your score:</label>
                <input type="text" name="addScore2" id="addScore2" />
                <input type="hidden" name="oldScore2" id="oldScore2" value="<?php echo $oldscore2; ?>" />
                <input type=\"submit\"/>
            </form>
            </p>
        </div>
    </body>
</html>
于 2013-03-04T00:28:10.167 回答