教えて! goo のコンテンツに対する取り組みについて

PHPでクリックするたびに変数を10ずつ増やすには?

HTML、PHPの初心者です。
画面に作ったボタンをクリックするたびに、変数$maxの値が10ずつ増えるような
プログラムを作りたいと思っています。
非常に簡略化していますが、下記のようなソースを書いてみました。

<html>
<body>
<?php

$max = 0;

?>

---------中略----------

<form method="post" action="">
<input type="submit" name="max_1" value="10増やす">
</form>
<?php

---------中略----------

if (isset($_POST["max_1"])) {
$max += 10;
}

---------中略----------

?>
</body>
</html>

これだと、「10増やす」というボタンを1回クリックすると、
変数$maxの値が、0から10になりますが、
2回、3回、4回とクリックしても、$maxの値は10のままです。

これを、「10増やす」ボタンを2回クリックしたら、$maxの値が20になり、
3回クリックしたら、$maxの値が30になり、4回クリックしたら、$maxが40になる・・・・
という風にしたいのですが、どう書き換えたらよいでしょうか?

どなたか教えていただけると幸いです。
よろしくお願い致します。

gooドクター

A 回答 (3件)

できましたww がプログラムが強引かもですが、ご参考までに。

。。。

ようするに、値を自分自身のファイルからから自分自身に投げればいいんですよ。
で、初回はどのphpのフォームからも何も投げてこられてないんで、
POST[]でGETした値はnullなんでmaxもnullって思います。

ネット上には、そんなものできねーよ。とか知ったかぶり男する人が多いですが、
できないのは確定じゃないので、人を信用しないほうがいいですよ。


************* test01.php (このファイルだけでできる)*****************************
<html>
<body>

<?php
$max=$_POST["result"];
if($max==null){
$max=0;
}else{
$max+=10;
}
?>

<form method="post" action="test01.php">
<input type="submit" name="max_1" value="10増やす">
<input type="button" value="リセット" onclick="location.href='test01.php'">
<input type="hidden" name="result" value="<?=$max ?>">
</form>

<?
echo $max;
?>

</body>
</html>
*******************************************************************





***** 以下、無理やりな説明 ****************************************************
<?php
$max=$_POST["result"]; ←test.phpが初回呼び出されたとき
          (test.phpが初回表示されたとき)は$_POST[]で取得した値はNULL。
if($max==null){
$max=0;←初回はnullなので$maxは0(以下echoでその値を表示(1回目))
}else{ ←「10増やす」ボタンを押すとactionで自分自身test.phpを指定しているのでPOST[]でGETした値(2回目)は+10し(以下のechoでその値を表示)
$max+=10;
}
?>

<form method="post" action="test.php">
<input type="submit" name="max_1" value="10増やす">
<input type="button" value="リセット" onclick="location.href='test01.php'">←初回呼び出し時と同じ状態(0)にする。
<input type="hidden" name="result" value="<?=$max ?>">←隠しパラメータhiddenで表示されている値をactionで指定したファイル(自分自身)へ送信。
</form>

<?
echo $max;
?>
</body>
</html>
*****************************************************************************
    • good
    • 0
この回答へのお礼

test01.phpはそのままではうまく動きませんでしたが、
value="<?=$max ?>" を、value="<?php print $max ?>" と、
書き換えたら、うまく動くようになりました。
どうもありがとうございました。

お礼日時:2010/07/16 20:51

一般的にはセッションを使うのがスマートです。


クッキーを止めているブラウザでは無理ですが(-_-メ)

session_start();
if (isset($_POST["max_1"])) {
$max = $_SESSION["max"];
$max += 10;
$_SESSION["max"] = $max;
}
    • good
    • 0
この回答へのお礼

ご回答ありがとうございました。
大変参考になりました。

お礼日時:2010/07/16 20:52

とりあえず、今の値をファイルとかに保存して、


読み込み>値更新>書き込み
とか言うやり方をしないと値は保持できません。
    • good
    • 0
この回答へのお礼

それを具体的にどうやるのでしょうか?
初心者なのでそれがよくわかりません。
「具体的に」どういう風にやるのでしょうか。
簡単でも良いですから、ソースを書いていただけるとありがたいのですが。
更新しても値が変わらないファイルとはどうやって作るのですか。

ご回答どうもありがとうございました。

お礼日時:2010/07/12 02:23

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています

gooドクター

人気Q&Aランキング