• 締切済み

シャッフルした変数を正しく表示するには?

多肢選択式試験問題のプログラムを作っています。 MySQLに格納されている各問題と選択肢をシャッフルして出題し、セッションを使って採点ページに進むと出題された問題と選択肢を表示させたいのです。 しかし下記のソースだと問題と選択肢が1題分しか表示されず、選択肢も出題ページに表示された順番には並んでくれません。 これはどうしたらいいのでしょうか?よろしくお願い致します。 //出題のページ ※選択肢Aを選ぶと正解になります。 <?php session_start(); ?> $arr = array(); while ($row = mysqli_fetch_array($result)){ $arr[] = $row; } shuffle($arr); $cnt = 0; foreach($arr as $row){ if($cnt >= 2){break;} print $row['question']; print "<BR>"; $choices = array(); $choices['a'] = "<INPUT type=radio name=radi_".$cnt." value=a>".$row['choices_a']."<BR>"; $choices['b'] = "<INPUT type=radio name=radi_".$cnt." value=b>".$row['choices_b']."<BR>"; $choices['c'] = "<INPUT type=radio name=radi_".$cnt." value=c>".$row['choices_c']."<BR>"; $choices['d'] = "<INPUT type=radio name=radi_".$cnt." value=d>".$row['choices_d']."<BR>"; session_register(sesdata_q); session_register(sesdata_a); session_register(sesdata_b); session_register(sesdata_c); session_register(sesdata_d); $_SESSION[sesdata_q] = $row['question']; $_SESSION[sesdata_a] = $row['choices_a']; $_SESSION[sesdata_b] = $row['choices_b']; $_SESSION[sesdata_c] = $row['choices_c']; $_SESSION[sesdata_d] = $row['choices_d']; shuffle($choices); foreach($choices as $val){ print $val; } print "<BR>"; $cnt++; } ?> //採点のページ <?php $score = 0; $answer = $_POST['radi_0']; if($answer == 'a'){ $score++; } $answer = $_POST['radi_1']; if($answer == 'a'){ $score++; } $answer = $_POST['radi_2']; if($answer == 'a'){ $score++; } $answer = $_POST['radi_3']; if($answer == 'a'){ $score++; } print "2問中" . $score . "問正解"; print "<br>"; print "<br>"; print $_SESSION[sesdata_q]; print "<br>"; print $_SESSION[sesdata_a]; print "<br>"; print $_SESSION[sesdata_b]; print "<br>"; print $_SESSION[sesdata_c]; print "<br>"; print $_SESSION[sesdata_d]; ?>

  • PHP
  • 回答数3
  • ありがとう数0

みんなの回答

  • yambejp
  • ベストアンサー率51% (3827/7415)
回答No.3

SQLからとってくる部分は省略します。 基本的にとってきた回答の0番目(最初のデータ)が正解とし、 question.phpを質問として、answer.phpが答え合わせだとします //question.php <?php session_start(); $q=array( array("q"=>"問題文1","a"=>array("a1","b1","c1","d1")) ,array("q"=>"問題文2","a"=>array("a2","b2","c2","d2")) ,array("q"=>"問題文3","a"=>array("a3","b3","c3","d2")) ,array("q"=>"問題文4","a"=>array("a4","b4","c4","d4")) ); ?> <form action="answer.php"> <?PHP $count=0; foreach($q as $key=>$array){ $_SESSION["a"][$key]=$array["a"][0]; shuffle($array["a"]); print "問題".($count+1).")".$array["q"]."<br>\n"; foreach($array["a"] as $key2=>$val){ print "<input type=\"radio\" name=\"q[".$count."]\" value=\"".$val."\">".$val; } print "<br>\n"; $count++; } ?> <input type="submit" value="go"> </form> //answer.php <?PHP session_start(); $a=$_SESSION["a"]; $q=$_REQUEST["q"]; $seikai=0; foreach($a as $key=>$val){ if($val===$q[$key]) $seikai++; } print "正解数は".$seikai."問です<br>\n"; ?> [ <a href="question.php">戻る</a>]

shenzongse
質問者

補足

すみません。私の質問の書き方が間違っていたようです。 問題用紙のページではきちんと表示されるのですが、採点ページに進むと正解数は分かるのですが、回答者がどの問題を間違えたのか知る必要があるため、問題用紙と同じ表示にしたいのです。

  • _if_
  • ベストアンサー率52% (26/50)
回答No.2

まず、1題しか出題されない件に関しては、shuffle後にresetしてないためです。 shuffle($arr); reset($arr); にすればよいです。 出題された順に表示されない とのことですが、これはちゃんと見るべきかと・・・。 Sessionにはシャッフル以前のデータが入っているので、 表示させたら、それは、そうなるでしょう・・。 foreach($choices as $val){  print $val;  // このあたりで$_SESSION[$cnt][]; などに入れないと、ですね。 }

  • yambejp
  • ベストアンサー率51% (3827/7415)
回答No.1

あまり真剣に読んでないのでなんですが (1)選択肢をよんでくる (2)シャッフルする (3)正解番号をセッションにうめこむ (4)表示 (5)ユーザーが選択してサブミット (6)セッションデータとサブミットされたデータのマッチングをおこなう でよいのでは? 1ページに複数の問題を置く場合でも基本的にロジックはかわりません。

shenzongse
質問者

補足

>>yambejpさん ご回答ありがとうございます。私も理屈では分かっているのですが、具体的にどのようにコードを書けば良いのかがわからないのです。

関連するQ&A

  • シャッフルしたデータを正確に引き継ぎたい

    試験問題のプログラムを作っています。 MySQLに格納されている問題文と選択肢をシャッフルして表示し、ユーザーからは見えない選択肢aを選ぶと正解で得点が1カウントされるものです。 問題用紙のページではきちんと問題と選択肢が表示されるのですが、セッションを使い採点のページに進むとMySQLに入っている問題文と選択肢が大量に表示されてしまいました。 ユーザーが採点のページに進むとどの問題を間違えたのか確認できるように問題用紙のページと同じように表示させたいのですが、これはどのようにコードを書けばよいのでしょうか? どうぞよろしくお願い致します。 //問題用紙のページ <?php session_start(); ?> <form method="post" action="grading.php"> <?php $arr = array(); while ($row = mysqli_fetch_array($result)){ $arr[] = $row; } shuffle($arr); $cnt = 0; foreach($arr as $row){ if($cnt >= 3){break;} print $row['question']; print "<BR>"; $choices = array(); $choices['a'] = "<INPUT type=radio name=radi_".$cnt." value=a>".$row['choices_a']."<BR>"; $choices['b'] = "<INPUT type=radio name=radi_".$cnt." value=b>".$row['choices_b']."<BR>"; shuffle($choices); foreach($choices as $val){ print $val; } session_register('sesdata_q'); session_register('sesdata_a'); session_register('sesdata_b'); $_SESSION['sesdata_q'][] = $row['question']; $_SESSION['sesdata_a'][] = $row['choices_a']; $_SESSION['sesdata_b'][] = $row['choices_b']; print "<BR>"; $cnt++; } ?> <INPUT type="submit" value=" 採点 " name="grading"> //採点のページ <?php session_start(); $score = 0; $answer = $_POST['radi_0']; if($answer == 'a'){ $score++; } $answer = $_POST['radi_1']; if($answer == 'a'){ $score++; }print "3問中" . $score . "問正解"; print "<br>"; foreach($_SESSION['sesdata_q'] as $val){ print $val."<BR><BR>"; } foreach($_SESSION['sesdata_a'] as $val){ print $val."<BR><BR>"; } foreach($_SESSION['sesdata_b'] as $val){ print $val."<BR><BR>"; } ?>

    • ベストアンサー
    • PHP
  • MySQLから取ってきた配列のデータを利用するには

    MySQLから取ってきた配列のデータをラジオボタンのフォームに入れて、別のPHPファイルでチェックを確認したいのですが、うまくいきません。 下記のソースが実際のものになります。radi_".$cnt." の値をどうやって取得するのでしょうか?$answer = $_POST("radi_1");では動いてくれませんでした。 どうぞよろしくお願い致します。 $choices['a'] = "<INPUT type=radio name=radi_".$cnt." value=a>".$row['choices_a']."<BR>";

    • 締切済み
    • PHP
  • シャッフルした後で最初の2項目だけを表示させたい

    小テストのプログラムなのですが、ソースには問題文を3題分用意して、ページを開くたびにランダムに2題だけを表示させるにはどうしたらいいのでしょうか? おそらくfor文で指定するのだと思いますが、うまく動いてくれません。 どうぞよろしくお願いいたします。 <? $QA[]=array( "Q"=>array("id"=>"q1","text"=>"質問A") ,"A"=>array( array("key"=>1,"text"=>"回答A-1") ,array("key"=>2,"text"=>"回答A-2") ,array("key"=>3,"text"=>"回答A-3") ,array("key"=>4,"text"=>"回答A-4") ) ); $QA[]=array( "Q"=>array("id"=>"q2","text"=>"質問B") ,"A"=>array( array("key"=>1,"text"=>"回答B-1") ,array("key"=>2,"text"=>"回答B-2") ,array("key"=>3,"text"=>"回答B-3") ,array("key"=>4,"text"=>"回答B-4") ) ); $QA[]=array( "Q"=>array("id"=>"q3","text"=>"質問C") ,"A"=>array( array("key"=>1,"text"=>"回答C-1") ,array("key"=>2,"text"=>"回答C-2") ,array("key"=>3,"text"=>"回答C-3") ,array("key"=>4,"text"=>"回答C-4") ) ); shuffle($QA); $q_no=1; foreach($QA as $arr1){ shuffle($arr1["A"]); print "問".$q_no.")".$arr1["Q"]["text"]."<br>\n"; foreach($arr1["A"] as $arr2){ $id=$arr1["Q"]["id"]."_".$arr2["key"]; print "<INPUT type=\"radio\" id=\"".$id."\" name=\"".$arr1["Q"]["id"]."\" value=\"".$arr2["key"]."\"><label for=\"".$id."\">".$arr2["text"]."</label><br>\n"; } $q_no++; } ?>

    • ベストアンサー
    • PHP
  • セッションについて教えてください。

    ラジオボタンを使った選択式の小テストのプログラムを作っています。テストのページを複数にしたいのですが、どのようにセッション関数を使えば良いのか分かりません。 下記のプログラムですと、1ページ目に答えた内容が2ページ目で上書きされてしまうようです。 どうぞよろしくお願いいたします。 1~2ページ目(テストのページ) <? $QA[]=array( "Q"=>array("id"=>"q1","text"=>"質問A") ,"A"=>array( array("key"=>1,"text"=>"回答A-1") ,array("key"=>2,"text"=>"回答A-2") ,array("key"=>3,"text"=>"回答A-3") ,array("key"=>4,"text"=>"回答A-4") ) ); $QA[]=array( "Q"=>array("id"=>"q2","text"=>"質問B") ,"A"=>array( array("key"=>1,"text"=>"回答B-1") ,array("key"=>2,"text"=>"回答B-2") ,array("key"=>3,"text"=>"回答B-3") ,array("key"=>4,"text"=>"回答B-4") ) ); shuffle($QA); $q_no=1; foreach($QA as $arr1){ shuffle($arr1["A"]); print "問".$q_no." ".$arr1["Q"]["text"]."<br>\n"; foreach($arr1["A"] as $arr2){ $id=$arr1["Q"]["id"]."_".$arr2["key"]; print "<INPUT type=\"radio\" id=\"".$id."\" name=\"".$arr1["Q"]["id"]."\" value=\"".$arr2["key"]."\"><label for=\"".$id."\">".$arr2["text"]."</label><br>\n"; } if($q_no >= 2){ break; } $q_no++; } ?> 3ページ目(採点ページ) <?php $tokuten = 0; $seikaisuu = 0; $answer = $_POST["q1"]; if($answer == "1"){ $tokuten = $tokuten+5; $seikaisuu = +1; } $answer = $_POST["q2"]; if($answer == "1"){ $tokuten = $tokuten+5; $seikaisuu = $seikaisuu+1; } $answer = $_POST["q3"]; if($answer == "1"){ $tokuten = $tokuten+5; $seikaisuu = $seikaisuu+1; } $answer = $_POST["q4"]; if($answer == "1"){ $tokuten = $tokuten+5; $seikaisuu = $seikaisuu+1; } print "正解数 " . $seikaisuu . "問"; print "<br>"; print "合計点 " . $tokuten . "点"; ?>

    • ベストアンサー
    • PHP
  • ランダム表示させたあとその結果を受け取るには?

    小テストのプログラムを作っています。6問ある問題の中からランダムに5問を出題させて、合計点と正解数を表示させることができました。 ただこのままでは回答者はどの問題を間違えたのかがわからないので、出題された問題と解説文を表示させたいのです。 解決のヒントをお願いいたします。 //問題文のページ <FORM method="POST" action="answer.php"> <?php $QA[]=array( "Q"=>array("id"=>"q1","text"=>"質問A") ,"A"=>array( array("key"=>1,"text"=>"回答A-1") ,array("key"=>2,"text"=>"回答A-2") ,array("key"=>3,"text"=>"回答A-3") ,array("key"=>4,"text"=>"回答A-4") ) ); . . . . $QA[]=array( "Q"=>array("id"=>"q6","text"=>"質問F") ,"A"=>array( array("key"=>1,"text"=>"回答F-1") ,array("key"=>2,"text"=>"回答F-2") ,array("key"=>3,"text"=>"回答F-3") ,array("key"=>4,"text"=>"回答F-4") ) ); shuffle($QA); $q_no=1; foreach($QA as $arr1){ shuffle($arr1["A"]); print "問".$q_no." ".$arr1["Q"]["text"]."<br>\n"; foreach($arr1["A"] as $arr2){ $id=$arr1["Q"]["id"]."_".$arr2["key"]; print "<INPUT type=\"radio\" id=\"".$id."\" name=\"".$arr1["Q"]["id"]."\" value=\"".$arr2["key"]."\"><label for=\"".$id."\">".$arr2["text"]."</label><br>\n"; } if($q_no >= 5){ break; } $q_no++; } ?> <INPUT type="submit" value=" OK " name=namae> //解答のページ <?php $tokuten = 0; $seikaisuu = 0; $answer = $_POST["q1"]; if($answer == "1"){ $tokuten = $tokuten+5; $seikaisuu = +1; } $answer = $_POST["q2"]; if($answer == "1"){ $tokuten = $tokuten+5; $seikaisuu = $seikaisuu+1; } $answer = $_POST["q3"]; if($answer == "1"){ $tokuten = $tokuten+5; $seikaisuu = $seikaisuu+1; } $answer = $_POST["q4"]; if($answer == "1"){ $tokuten = $tokuten+5; $seikaisuu = $seikaisuu+1; } $answer = $_POST["q5"]; if($answer == "1"){ $tokuten = $tokuten+5; $seikaisuu = $seikaisuu+1; } $answer = $_POST["q6"]; if($answer == "1"){ $tokuten = $tokuten+5; $seikaisuu = $seikaisuu+1; } print "正解数 " . $seikaisuu . "問"; print "<br>"; print "合計点 " . $tokuten . "点"; ?>

    • ベストアンサー
    • PHP
  • php5.2.9に変更後に不具合について

    php初心者です。 レンタルサバ―なのですが、php4.4.7からphp5.2.9に変更後うまくいかなくて困っています。 header("Location: http://○○○/top.php");がうまく飛びません。 ページを実行すると真っ白の画面になってしまいます。 以前のバージョンですと、問題なく動いていました。 下記を見てください。 どうしたらよいのでしょうか? <?php mysql_query('SET NAMES ujis'); require_once( "function.php" ); session_start(); if ( $_REQUEST[ "SUBMIT" ] != "" ) { if ( ( $_POST[ "VALUE_ID" ] != "" ) && ( $_POST[ "VALUE_PW" ] != "" ) ) { $k_id = $_POST[ "VALUE_ID" ]; $k_pw = $_POST[ "VALUE_PW" ]; $con=mysql_connect('aaa','aaa','aaa') or die("MySQL接続エラー: ".mysql_error()); mysql_select_db('aaa',$con); $sql= "select * from あああ where id='$k_id' and pw='$k_pw'"; $result=mysql_query($sql); $rows=mysql_num_rows($result); if($rows==1){ while($row=mysql_fetch_array($result)){ $d_id = $row["id"]; $d_pw = $row["pw"]; } } } } if ( !isset( $_SESSION[ "D_ID" ] ) ) { $_SESSION[ "D_ID" ] = ""; } $_SESSION[ "D_ID" ] = $d_id; if ( !isset( $_SESSION[ "D_PW" ] ) ) { $_SESSION[ "D_PW" ] = ""; } $_SESSION[ "D_PW" ] = $d_pw; if ( !isset( $_SESSION[ "K_ID" ] ) ) { $_SESSION[ "K_ID" ] = ""; } $_SESSION[ "K_ID" ] = $k_id; if ( !isset( $_SESSION[ "K_PW" ] ) ) { $_SESSION[ "K_PW" ] = ""; } $_SESSION[ "K_PW" ] = $k_pw; if ( ( $_SESSION[ "D_ID" ] == "" ) || ( $_SESSION[ "D_PW" ] == "" ) ) { print( "<br><center>○○○○○○○○<br>" ); print( "<br>○○○○○○○○○○○○○○○○<br>" ); print( "<br>○○○○○○○○<br>" ); print( "<br><a href=\"index.html\">[ BACK ]</a></center>" ); exit(); }elseif( CheckID_PW( $_SESSION[ "K_ID" ], $_SESSION[ "K_PW" ], $_SESSION[ "D_ID" ], $_SESSION[ "D_PW" ] ) == false ) { print( "<br><center>○○○○○○○○<br>" ); print( "<br><center>○○○○○○○○○○○○○○○○<br>" ); print( "<br><center>○○○○○○○○" ); print( "<br><br><a href=\"index.html\">[ BACK ]</a></center></body>" ); } else {header("Location: http://○○○/top.php");} ?>

    • 締切済み
    • PHP
  • 上手くエラー表示がされないのと計算ができない

    PHP初心者です。 開発環境 apache2.0.59 PHP5.2.9 Eclipse3.3 以下のソースコードを見て下さい。 <?php session_start(); ?> <html> <head> <title>test3_2.php</title> </head> <body> <?php //kadai3_3.phpにて、氏名、商品それぞれに未入力の場合はセッション変数に「NG」が設定されます if ($_SESSION["name"]=="NG") { unset($_SESSION["name"]); print("氏名を入力して下さい。"."<br>"); } if ($_SESSION["shohin"]=="NG") { unset($_SESSION["shohin"]); print("商品の何れかをチェックして下さい。"."<br>"); } ?> <form action="./test3_3.php" method=post> 氏名:<input type="text" name="name" <?php print("value='".$_SESSION["name"]."'")?>> <br><br> 商品一覧<br> <!-- 全てのcheckboxの名称をshohin[商品名]として連想配列化する事により test3_3.phpではcheckboxが扱いやすくなります --> <input type="checkbox" name="shohin[A]" <?php print($_SESSION["shohin"]["A"]=="on" ? "checked":"") ?> >A商品  \\1,000<br> <input type="checkbox" name="shohin[B]" <?php print($_SESSION["shohin"]["B"]=="on" ? "checked":"") ?> >B商品 \\2,000<br> <input type="checkbox" name="shohin[C]" <?php print($_SESSION["shohin"]["C"]=="on" ? "checked":"") ?> >C商品 \\3,000<br> <input type="checkbox" name="shohin[D]" <?php print($_SESSION["shohin"]["D"]=="on" ? "checked":"")?> >D商品 \\4,000<br> <input type="checkbox" name="shohin[E]" <?php print($_SESSION["shohin"]["E"]=="on" ? "checked":"")?> >E商品 \\5,000<br><br> <input type="submit" value="送信"> </form> </body> </html> で次のtest3_3.phpのソースコードです。 <?php session_start(); /* * 氏名にデータが入っていない場合はセッション変数を「NG」を入っていた場合はセッション変数に氏名をセットする */ if (strlen($_POST["name"]==0)) { $_SESSION["name"] = "NG"; }else{ $_SESSION["name"] = $_POST["name"]; } if (isset($_POST["shohin"])) { $_SESSION["shohin"]=$_POST["shohin"]; }else{ $_SESSION["shohin"]="NG"; } /* * 氏名か商品の何れかが未入力(未チェック)の場合はtest3_2.phpに遷移します。 */ if ($_SESSION["name"]=="NG" or $_SESSION["shohin"]=="NG") { header("Location: test3_2.php?".SID); exit; } ?> <html> <head> <title>test3_3.php</title> </head> <body> <?php $fp = fopen("C:\Apache2\htdocs\test3_1.txt", "r"); while (!feof($fp)) { $buffer = fgets($fp); $ans = explode(",", $buffer); $shohin[$ans[0]] = $ans[1]; } fclose($fp); $sum = 0; while(list($key, $val)=each($shohin)) { if ($_POST[$key]=="on") { print($key."商品:\\".number_format($val)."<br>"); $sum += $val; $shohizei = $sum * 0.05; $goukei = $sum + $shohizei; } } print("---------------------------<br>"); print("合計金額:\\".number_format($sum)."<br>"); print("消費税  :\\".number_format($shohizei)."<br>"); print("税込金額:\\".number_format($goukei)); ?> </body> </html> 分からないのは氏名欄に何も書かない場合もしくは商品を1つも選択しない場合、それぞれエラー表示されるのですが、何故か氏名欄にはMGと言う値が入力されてリダイレクトされます。 なので、まずはその原因を探しているのですが、いくら見ても分かりません。 なので、氏名欄が空白のときにエラー表示されるのかどうかも分かりません。 もう1つは商品購入の際の計算式が表示されない事です。 その前に連想配列$_SESSION["shohin"]["A"]についても疑問点があります。 これは2次元連想配列と解釈するのでしょうか。 ちなみにtest3_1.txtには以下のような文章が書かれています。 A,1000 B,2000 C,3000 D,4000 E,5000 何か延々とソースコードを書き連ねただけみたいに見えますね。 読み辛いようでしたら、本当に申し訳ありません。 以上の疑問について回答を頂きたいと思い書き込みました。 どうぞ宜しくお願い致します。

    • 締切済み
    • PHP
  • selectを利用して1つだけ表示したいのですが

    はじめましてphp初心者です 計算をしたphp3つのデーターを計算し、 html側からのserect選択で1つだけ答えをphp側に表示させたいのですが うまくprint表示してくれません 以下の内容で行っております HTML側 <form action="http://localhost/test/**/**.php" method="post"> <select name="d" size=1> <option value = "d1">データー1の答え</option> <option value = "d2">データー2の答え</option> <option value = "d3">データー3の答え</option> <option value = "d4">データー4の答え</option> </select> <input type = "submit" value = "表示"> php側 <?php $a = 5; $b = 2; $c = 4; $d = $_POST["d"] ?> <?php //値を取得 $a = $a; $b = $b; $c = $c; $d = $_POST['d']; //セレクトボックスによって処理を変える switch ($d) { case "d1": $answer = $a + $b - $c; break; case "d2": $answer = $a + $b + $c; break; case "d3": $answer = $a - $b - $c; break; case "d4": $answer = $a - $b + $c; break; default: break; } //計算結果を表示 //print ($a." ".$b." ".$c.".$answer."\n"); ?> 計算を表示の部分でおかしくなっていると思うのですが、 根本的に間違えている可能性もあります。 数日悩んでしまい、頭がこんがらがって何が間違っているのかすら 分からなくなってしまっています。 どなたかご教示ねがいませんでしょうか?

    • 締切済み
    • PHP
  • 2件一組の文章をランダムに表示する。

    お世話になっております。 早速ですが、A~Dの文章を2件ランダムに表示させたいです。 更新の度に表示される文章を変えたいのです。 ランダムに文字を並べ替えるコトは出来たのですが、 ソコから2件だけ抜き出すのができません。 <script language="javascript"> arr = ["ほげほげA","ほげほげB","ほげほげC","ほげほげD"]; function a(){ for(i=0; i<arr.length; i++){ k = i; k = Math.floor(Math.random()*arr.length); tmp = arr[i]; arr[i] = arr[k]; arr[k] = tmp; } } function b(){ a(); for(j=0; j<arr.length; j++){ document.write(arr[j]); } } b(); </script> ■1回目 ほげほげC ほげほげA ■2回目 ほげほげA ほげほげD のような感じです。 ご助力お願いいたします!

  • selectを利用して計算を一つだけ表示したい

    はじめましてphp初心者です 計算をしたphp3つのデーターを計算し、 html側からのserect選択し1つだけ答えをphp側に表示させたいのですが うまくprint表示してくれません 以下の内容で行っております HTML側 <form action="​http://localhost/test/**/**.php"​ method="post"> <select name="d" size=1> <option value = "d1">データー1の答え</option> <option value = "d2">データー2の答え</option> <option value = "d3">データー3の答え</option> <option value = "d4">データー4の答え</option> </select> <input type = "submit" value = "表示"> php側 <?php $a = 5; $b = 2; $c = 4; $d = $_POST["d"] ?> <?php //値を取得 $a = $a; $b = $b; $c = $c; $d = $_POST['d']; //セレクトボックスによって処理を変える switch ($d) { case "d1": $answer = $a + $b - $c; break; case "d2": $answer = $a + $b + $c; break; case "d3": $answer = $a - $b - $c; break; case "d4": $answer = $a - $b + $c; break; default: break; } //計算結果を表示 //print ($a." ".$b." ".$c.".$answer."\n"); ?> 計算を表示の部分でおかしくなっていると思うのですが、 根本的に間違えている可能性もあります。 数日悩んでしまい、頭がこんがらがって何が間違っているのかすら 分からなくなってしまっています。 どなたかご教示ねがいませんでしょうか?

専門家に質問してみよう