0

Scrabbleなどの物理的なゲームのスコアを追加する単純なWebアプリケーションを作成しようとしています。ほとんどのコードはHTMLフォームであり、フォーム要素ごとに1つの入力を要求します。次に、フォームから生成されたデータを配置し、適切な変数を初期化します。私が理解できない部分は、新しいスコアを最後のスコアに追加する方法です。$ 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>

2番目のフォームでも同じことを行います->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 に答える