計算結果を表示するやつを作ってみた。
先ずは、フォーム側(答えが出ているのと、ソースを覗くとformの中に正解の値が入っている点はご愛嬌w)
[CountApp.php]
<html>
<head>
<title>計算アプリを作ってみるコトハジメ</title>
</head>
<body>
<?php
/*数式の決定*/
$CountValue = rand(0,3);
/*表示する数字の決定*/
$LeftTen = rand(0,9);
$LeftOne = rand(0,9);
$RightTen = rand(0,9);
$RightOne = rand(0,9);
/*両辺の値*/
$LeftTotal = ($LeftTen * 10) + $LeftOne;
$RightTotal = ($RightTen * 10) + $RightOne;
/*計算式と回答*/
$AddTotal = $LeftTotal + $RightTotal;
$SubstractTotal = $LeftTotal - $RightTotal;
$MultiplyTotal = $LeftTotal * $RightTotal;
$DivideTotal = $LeftTotal / $RightTotal;
/*数式に応じた処理*/
switch($CountValue){
/*足し算の場合*/
case 0:
$CountDispA = '+';
$CountDispB = '<img src="/image/add.png">';
$AnsMe = $AddTotal;
break;
/*引き算の場合*/
case 1:
$CountDispA = '-';
$CountDispB = '<img src="/image/subt.png">';
$AnsMe = $SubstractTotal;
break;
/*掛け算の場合*/
case 2:
$CountDispA = '*';
$CountDispB = '<img src="/image/multi.png">';
$AnsMe = $MultiplyTotal;
break;
/*割り算の場合*/
case 3:
$CountDispA = '/';
$CountDispB = '<img src="/image/div.png">';
$AnsMe = $DivideTotal;
break;
}
/*メモ $CountDispA が記号を表示 $CountDispB が画像を表示 $AnsMe が数式の答え */
?>
<?php
/*数字の表示部分*/
echo $LeftTotal.$CountDispA.$RightTotal.'='.$AnsMe;
?>
<br/>
<p>回答を入力</p>
<!--回答入力フォームを作ってみる-->
<form method="post" action="CountAppForm.php">
<input type="text" name="AnserA">
<input type= "hidden" name="AnserB" value="<?php echo $AnsMe ?>">
<input type="submit" value="Send">
</form>
</body>
</html>
んで結果表示用のPHP
[CountAppForm.php]
<html>
<head>
<title>答え合わせ用のPHPスクリプト</title>
</head>
<body>
<p>
あなたの答えは「
<?php
/* <input type="text" name="AnserA"> の入力値。入力した答え*/
echo $_POST['AnserA'];
?>
」です!
</p>
<p>問題の答えは...「
<?php
/* <input type="text" name="AnserB"> の入力値。要は答え。*/
echo $_POST['AnserB'];
/*答え合わせ用の値の代入*/
$AnserA = $_POST['AnserA'];
$AnserB = $_POST['AnserB'];
?>
」でした!!</p>
<p>
<?php
/*実際の答え合わせ処理部分*/
$FinalAnser = $AnserA-$AnserB;
if ($FinalAnser == 0){
echo 'おめでとう!! 正解です!! ';
}else{
echo '不正解...orz';
}
?>
</p>
<p><a href="CountApp.php">次の問題へ</a></p>
<!--答え合わせの動作確認<?php echo $FinalAnser; ?>-->
</body>
</html>
ちゃんと動いた!!
文中に
$CountDispB = '<img src="/image/div.png">';<
とあるのは、画像で数式を表示したいなというので書いてますw
非常に満足!
サンプルソース無しで書いた初めてのPHPアプリだ。
------不具合追記-----
・両辺どちらかが"0"になった場合に不具合発生する。
・右辺が"0"の時の割り算に不具合発生する。
対策内容:以下の記述を/*両辺の値*/の下に追記
/*ゼロにならないように再取得処理左辺*/
while($LeftTotal==0){
$LeftTen = rand(0,9);
$LeftOne = rand(0,9);
$LeftTotal = ($LeftTen * 10) + $LeftOne;
}
/*ゼロにならないように再取得処理左辺*/
while($RightTotal==0){
$RightTen = rand(0,9);
$RightOne = rand(0,9);
$RightTotal = ($RightTen * 10) + $RightOne;




