2016-08-17 16 views
0

私はフォームを持っています。このフォームはquestion1.phpというページにあり、送信ボタンを押したときにquestion2.phpをロードします。PHPコードを実行した後に新しいページを読み込んでいますか?

<form action="question2.php" method="post"> 
    <input type="radio" name="ans" value="cuboid"> 
    <input type="radio" name="ans" value="cone"> 
    <input type="radio" name="ans" value="cylinder"> 
    <input type="radio" name="ans" value="sphere"> 
    <input type="submit" value="submit" name="submit"> 
</form> 

しかし、私はまた、このPHPコード

<?php 
    if(isset($_POST['submit'])) { 
     if(isset($_POST['ans'])) { 
      $selected_answer = $_POST['ans']; 
      if($selected_answer == "cuboid") { 
       $_SESSION["cuboid"] = ((int)$_SESSION["cuboid"]) + 1; 
      } 
     } 
    } 
?> 

EDITを持っている:私はより良い自分自身を試してみて、説明するシンプルなデモを行っている、私は3つのページを持っています。

page1.php

<?php 
session_start(); 
?> 
<!DOCTYPE html> 
<html> 
<body> 

<form action="page2.php"> 
    <input type="submit" value="submit" name="submit"> 
</form> 
<?php 
// Set session variables 
$_SESSION["favcolor"] = "green"; 
?> 
</body> 
</html> 

page2.php

<?php 
session_start(); 
?> 
<!DOCTYPE html> 
<html> 
<body> 
    <form action="page3.php" method="post"> 
     <input type="radio" name="ans" value="color"> 
     <input type="submit" value="submit" name="submit"> 
    </form> 
<?php 
// Echo session variables that were set on previous page 
if(isset($_POST['submit'])) { 
    if(isset($_POST['ans'])) { 
     $selected_answer = $_POST['ans']; 
     if($selected_answer == "color") { 
      $_SESSION["favcolor"] = "red"; 
     } 
    } 
} 
?> 
</body> 
</html> 

そして、最初のページにそう

<?php 
session_start(); 
?> 
<!DOCTYPE html> 
<html> 
<body> 

<?php 
    echo "Favorite color is " . $_SESSION["favcolor"] . "."; 
?> 

</body> 
</html> 

をpage3.php私はその後、セッション変数 "favcolor" を宣言2番目のページで、ユーザーがラジオボタンを選択した場合、色を赤色に更新したいと思いますが、 3番目のページはまだ緑色に印刷されています

+0

あなたはおそらく忘れ 'のsession_start()'。セッションが開始されておらず、保存された/伝達されたデータがありません –

+0

何ですか?あなたは本当にPHPが本当にhttp:// phpにあるかについてもっと読むべきです。net –

+0

私はsession_start()を持っています。私のクイズ(5つの質問)の最後に、セッション変数を表示することができますが、 – Dfarrelly

答えて

1

page3.phpにフォームを送信していて、page2.phpの投稿依頼を処理しているため、page2.phpに問題がありました。だから私はあなたのために以下を修正しました。

page1.php

<?php session_start(); ?> 
<!DOCTYPE html> 
<html> 
    <body> 
    <form action="page2.php" method="post"> 
     <input type="submit" value="submit" name="submit"> 
    </form> 
    <?php 
    // Set session variables 
    $_SESSION["favcolor"] = "green"; 
    ?> 
    </body> 
</html> 

page2.php

<?php session_start(); ?> 
<!DOCTYPE html> 
<html> 
<body> 
    <form action="page3.php" method="post"> 
     <input type="radio" name="ans" value="color"> 
     <input type="submit" value="submit" name="submit"> 
    </form>   
</body> 
</html> 

page3.php

<?php session_start(); ?> 
<!DOCTYPE html> 
<html> 
<body> 
    <?php 
    // Echo session variables that were set on previous page 
    if (isset($_POST['submit'])) { 
     if (isset($_POST['ans'])) { 
      $selected_answer = $_POST['ans']; 
      if ($selected_answer == "color") { 
       $_SESSION["favcolor"] = "red"; 
      } 
     } 
    } 
    echo "Favorite color is " . $_SESSION["favcolor"] . "."; 
    ?> 
</body> 
</html> 
0

これがうまくいけばいいですね。

$_SESSION["cuboid"] = isset($_SESSION["cuboid"]) ? $_SESSION["cuboid"] : 0; 
$_SESSION["cuboid"] = ((int)$_SESSION["cuboid"]) + 1; 
+0

なぜあなただ​​け望んでいるだろうか? –

+0

あなたは私の編集を見てください。私は自分自身をより良く説明しようとしました:) – Dfarrelly

+0

私の最新の答えを見てください –

0

私が知る限り、別のウェブページにリダイレクトしようとしています。

header()機能を使用してHTTPヘッダーを送信してみます。 HTTPヘッダが最初に動作しない場合

header('Location: http://example.com/page3.php'); 
exit(); 

ob_start()を用いて出力バッファをオン。

0

間違ったページで$ _POST ['ans']を確認しています。

現在、ユーザーがpage2.phpを入力したときに 'ans'がチェックされています。これは、ユーザーが入力要素を含むフォームを送信する前です。

page2.phpでフォームを送信すると、アクションによってpage3.phpにリクエストが送信されるので、実際には、ページ3の上部(セッション開始より下)に緑色に設定されたifステートメントを移動します。 .php

関連する問題