三つのページからなる計算機プログラムを作成中です。
問題作成ページ・計算入力ページ・計算結果ページ
前2つのページまでは作成できたのですが、入力ページでmt_randメソッドを使用して取得した値を計算結果ページで同じ値を使いたいのですが、詰まっています。
試みたことは、requireを使って再利用しようとしましたが、不必要な部分まで読み込まれてしまう&ランダムメソッドが再実行されるため、前ページと同じ値が取得できません。
php
1<!doctype html> 2<html lang="ja"> 3<head> 4<meta charset="utf-8"> 5<meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no"> 6<!-- Bootstrap CSS --> 7 8 9<title>範囲選択ページ</title> 10</head> 11<body> 12<header> 13<h1>どの範囲で問題を出題しますか?</h1> 14</header> 15 16<main> 17<h2>問題桁数</h2> 18 19<form action="submit.php" method="post"> 20</br> 21<input type="radio" name="number" value="0-9" checked>0-9まで 22</br> 23<input type="radio" name="number" value="0-99">0-99まで 24</br> 25<h2>演算指定(指定がないときは足し算のみ行われます。)</h2> 26</br> 27<input type="checkbox" name="operator" value="add" checked>足し算 28</br> 29<input type="checkbox" name="operator2" value="min">引き算 30</br> 31</br> 32<input type="submit" value="送信する"> 33<input type="reset" value="リセット"> 34</form> 35 36<pre> 37 38</pre> 39</main> 40</body> 41</html>
php
1<!doctype html> 2<html lang="ja"> 3<head> 4<meta charset="utf-8"> 5<meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no"> 6<!-- Bootstrap CSS --> 7 8 9<title>計算練習ページ</title> 10</head> 11<body> 12<header> 13<h1>計算練習</h1> 14</header> 15 16<main> 17<h2>選択したのは 18 <?php 19 print(htmlspecialchars($_POST['number'], ENT_QUOTES)); 20 ?>までの問題です。 21</br>全部で5問出題します。 22<pre> 23</h2> 24</pre> 25 26<?php 27if(htmlspecialchars($_POST['number'], ENT_QUOTES) == "0-9"){ 28 $number_1 = mt_rand(1, 9); 29 $number_2 = mt_rand(1, 9); 30 $number_3 = mt_rand(1, 9); 31 $number_4 = mt_rand(1, 9); 32 $number_5 = mt_rand(1, 9); 33 $number_6 = mt_rand(1, 9); 34 $number_7 = mt_rand(1, 9); 35 $number_8 = mt_rand(1, 9); 36 $number_9 = mt_rand(1, 9); 37 $number_10 = mt_rand(1, 9); 38}else{ 39 $number_1 = mt_rand(1, 99); 40 $number_2 = mt_rand(1, 99); 41 $number_3 = mt_rand(1, 99); 42 $number_4 = mt_rand(1, 99); 43 $number_5 = mt_rand(1, 99); 44 $number_6 = mt_rand(1, 99); 45 $number_7 = mt_rand(1, 99); 46 $number_8 = mt_rand(1, 99); 47 $number_9 = mt_rand(1, 99); 48 $number_10 = mt_rand(1, 99); 49} 50 51if(htmlspecialchars($_POST['operator'], ENT_QUOTES) == "add" && htmlspecialchars($_POST['operator2'], ENT_QUOTES) == "min"){ 52 // 演算子を均等に配列に入れておく 53 $enz = array("+", "+", "+", "-", "-", "-"); 54 // ランダムに複数のキーを5つ抽出 55 $key = array_rand($enz, 5); 56} 57elseif(htmlspecialchars($_POST['operator2'], ENT_QUOTES) == "min"){ 58 $enz = ['-', '-', '-', '-', '-']; 59 $key = array_rand($enz, 5); 60} 61else{ 62 $enz = ['+', '+', '+', '+', '+']; 63 $key = array_rand($enz, 5); 64} 65 66$question_sentenses = [ 67 ["1問目". $number_1 . $enz[$key[0]] . $number_2 . "="], 68 ["2問目". $number_3 . $enz[$key[1]] . $number_4 . "="], 69 ["3問目". $number_5 . $enz[$key[2]] . $number_6 . "="], 70 ["4問目". $number_7 . $enz[$key[3]] . $number_8 . "="], 71 ["5問目". $number_9 . $enz[$key[4]] . $number_10 . "="], 72 73]; 74 75?> 76 77 78 79<form action="answer.php" method="post"> 80</br> 81 <?php echo $question_sentenses[0][0]?><input type = “text” name ="answer_1"><br/> 82</br> 83 <?php echo $question_sentenses[1][0]?><input type = “text” name ="answer_1"><br/> 84</br> 85 <?php echo $question_sentenses[2][0]?><input type = “text” name ="answer_1"><br/> 86</br> 87 <?php echo $question_sentenses[3][0]?><input type = “text” name ="answer_1"><br/> 88</br> 89 <?php echo $question_sentenses[4][0]?><input type = “text” name ="answer_1"><br/> 90</br> 91<input type="submit" value="送信する"> 92<input type="reset" value="リセット"> 93</form> 94 95</pre> 96</main> 97</body> 98</html>
php
1<!doctype html> 2<html lang="ja"> 3<head> 4<meta charset="utf-8"> 5<meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no"> 6<!-- Bootstrap CSS --> 7 8 9<title>解答確認ページ</title> 10</head> 11<body> 12<header> 13<h1>解答確認結果</h1> 14</header> 15 16<main> 17<pre> 18</h2> 19</pre> 20<?php 21 require("submit.php") 22?> 23 24</div> 25</pre> 26</main> 27</body> 28</html>
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。