dポイントプレゼントキャンペーン実施中!

PHP初心者です。
今、診断テストをPHPで作っているのですが、
外部ファイルから受けとった変数を保持している方法が分かりません。。

質問が5問あるので、それぞれ5つのshitumon1.php~shitsumon5.phpがあります。


■shitsumon1.php
------
$no = $_GET["no"];
$counts = $_GET["counts"];
$countssub = $_GET["countssub"];

$question = "質問文1";
$answer1 = "答えの選択肢1";
$answer2 = "答えの選択肢2";
$answer3 = "答えの選択肢3";


//(↓どこの選択肢を押したかによって、countssubに点数を加算していく)
if($no == 1){
$countssub = $countssub + $counts;
}else if($no == 2){
$countssub = $countssub + $counts;
}else{
$countssub = $countssub + $counts;
}

?>
<center>
<div id="main_contentsbox">
<h1>診断テスト</h1>
<div id="contents_bak">
<div class="text_catch"><? echo $question; ?></div>
<ul>
<li id="list1"><a href='shindan2.php?no=1&counts=100&countssub='><?php echo $answer1 ?></a></li>
<li id="list2"><a href='shindan2.php?no=2&counts=200&countssub='><?php echo $answer2 ?></a></li>
<li id="list3"><a href='shindan2.php?no=3&counts=300&countssub='><?php echo $answer3 ?></a></li>
</ul>
</div>
</div>
</center>
-----


■shitsumon2.php
------
$no = $_GET["no"];
$counts = $_GET["counts"];
$countssub = $_GET["countssub"];

$question = "質問文2";
$answer1 = "答えの選択肢1";
$answer2 = "答えの選択肢2";
$answer3 = "答えの選択肢3";


//(↓どこの選択肢を押したかによって、countssubに点数を加算していく)
if($no == 1){
$countssub = $countssub + $counts;
}else if($no == 2){
$countssub = $countssub + $counts;
}else{
$countssub = $countssub + $counts;
}

?>
<center>
<div id="main_contentsbox">
<h1>診断テスト</h1>
<div id="contents_bak">
<div class="text_catch"><? echo $question; ?></div>
<ul>
<li id="list1"><a href='shindan2.php?no=1&counts=100&countssub='><?php echo $answer1 ?></a></li>
<li id="list2"><a href='shindan2.php?no=2&counts=200&countssub='><?php echo $answer2 ?></a></li>
<li id="list3"><a href='shindan2.php?no=3&counts=300&countssub='><?php echo $answer3 ?></a></li>
</ul>
</div>
</div>
</center>
-----

本当はcountssubにどんどんポイントが加算されていきたいので、
質問1と質問2、両方選択肢1を選んだ場合は、
100+100で200の結果をcountssubに入れたいのですが、
なんだか上書きされているようで、どんどんポイントを加算していくことが出来ません、

どうやったら、違うファイルで受け取った変数を保存していくことが出来るのか
ご教授ください。

よろしくお願いします。

A 回答 (1件)

通るすがると申します。


ソース良く見たわけではないのですが、多分サーバー側(PHP)とクライアント側の仕組みを勘違い
してませんか?PHPで生成したHTMLは出力オンリーで、HTMLを生成するだけで通信しているわ
けではありません。
PHPの処理を一通り実行するとそのAPはは終了してしまします。
また、HTMLでPHPを起動した場合、新たにサーバー側でそのプログラムが起動され、新規にメモ
リ-上に展開し動くことになります。ですので前に受け取った情報は初期状態となり情報を維持できま
せん。もし、情報を維持したければセッション機能を使います。これはサーバーのメモリに一旦退避し
て新たに受け取った情報をセッション機能を介して受け取りデータの引き渡しを行います。

この方法以外に、最初に起動したサーバープログラム(PHP)からHTMLを起動するとき、HTML側
に保持したい情報も一緒にコードとして生成し、HTML上でSBMIT発行時に、その情報をPHP側に
受け取る方法もあります。

ほかにも、クライアントへの情報保持方法としてクッキーを利用するという手もあります。

どのような方法で実施するかはインフラの条件などにより決定するかと思います。

少し文章では解りずらいかもしれません。キーワードとして、PHP、クッキー、セッションなどを組み合
わせて調査してみてください。



   
    • good
    • 0
この回答へのお礼

セッションで管理したらうまくいきました!


■最初のページにセッションを開始するものを書く
// セッションの開始
session_start();
// セッション変数に値を代入
$_SESSION["count"] = 0;


■条件分岐のところで数値を足していく
$_SESSION["count"] = $_SESSION["count"] + 1;


■セッションを維持するファイルには以下の行を追加
session_start();

■セッションを終了する場合は以下の行を追加
session_start();
//セッション変数の初期化
$_SESSION = array();
//セッションファイルの削除
session_destroy();


これで
<p>$_SESSION["count"]に代入した値は「<?php echo $_SESSION["count"] ?>」です。</p>

ここのcountのところの数字を変化させていくことが出来ました!


ありがとうございました!

お礼日時:2012/04/17 08:57

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