• 締切済み

.htmlで.phpの動作について(xサーバ)

何故かif文の処理がされなくて困っています。なぜ制御部分が動作しないのでしょうか?原因がわからないので、わかる方お願いします。 ファイル1 kounyuu.html <!DOCTYPE html> <html lang ="ja"> <head> <meta charset="UTF-8"> <title>ジュースの購入 </title> </head> <body> <form action ="result.php" method='post'> <p>120円のジュースを販売<br> 1000円までのお金をいれてください。<p> <p>お金を<input type="text" name="money" size="5">円入れます。</p> <p><input type='submit' value="購入"></p> </form> </body> </html> ファイル2 result.php <!DOCTYPE html> <html lang ="ja"> <head> <meta charset="UTF-8"> <title>おつり</title> </head> <body> <?php $m = $_POST['money']; $r = $m -120; $kouka = array{500,100,50,10,0}; if($r < 0){ print "<P>お金がありません</p>\n"; } elseif($m > 1000){ print "<p>1000円お願いします</p>\n"; } elseif($r == 0){ print "<p>ちょうどお預かりします。ありがとうございました。<p>\n"; } else{ print "<p>ありがとうございました。おつりは &r 円になります。</p>\n"; print "<p>硬貨の枚数は次のとおりです。<br>\n"; $i = 0; while($kouka[$i]>0){ print $kouka[$i]."円玉".(int)($r / $kouka[$i])."枚<br>"; $r = $r % $kouka[i]; $i++; } } print "</p>"; ?> <p><a href="kounyuu.html">お金を入れなおす</a> </p> </body> </html> フォームに1000と入力した結果↓ お金がありません \n"; } elseif($m > 1000){ print " 1000円お願いします \n"; } elseif($r == 0){ print " ちょうどお預かりします。ありがとうございました。 \n"; } else{ print " ありがとうございました。おつりは &r 円になります。 \n"; print " 硬貨の枚数は次のとおりです。 \n"; $i = 0; while($kouka[$i]>0){ print $kouka[$i]."円玉".(int)($r / $kouka[$i])."枚 "; $r = $r % $kouka[i]; $i++; } } print " "; ?> お金を入れなおす

みんなの回答

回答No.2

(1) 12行目 $kouka = array{500,100,50,10,0}; は $kouka = array(500,100,50,10,0); の誤りです。  (2) 21行目 おつりは &r 円になります。 は おつりは $r 円になります。 の間違いです。( &r でなく $r ) (3) 27行目 $r = $r % $kouka[i]; は $r = $r % $kouka[$i]; の誤りです。( [i]でなく [$i] ) (4) "1000"と入力したのに 「お金がありません」 が出るのは、フォームで、"1000"のように全角(漢字)で入力していませんか。 全角に対応するなら、intとの比較に使う前に 全角→半角変換が必要です。 (5) 「お金がありません」でprint文が終わるはずなのに その後の 「\n"; } elseif($m > 1000){ print " 1000円お願いします ~」 とその後のプログラム命令がそのままprintされてしまっているのは 入力したコード中のprint "~"; の閉じる"が 全角になっていて  閉じ損ねていてその後に継続する行は、まだ" "のなかだと認識させていませんか。 また、表示されないはずの \n(改行コード)がそのまま表示されるのは \n を 全角で入力してしまっていませんか。 (6) 自動販売機で 120円の商品を買うときに 小銭が増えるのを嫌がって 1020円を 投入することもありますが、そういうの考慮しないのですか

noname#263248
noname#263248
回答No.1

} elseif($m > 1000){ この部分がよくわからない } elseif($r > 1000){ とか } elseif($m >= 1000){ とか } elseif($r >= 1000){ でないですかね?

ayukkkkk
質問者

補足

elseif($m>1000){}の部分は、1000円以下の入力のみ受け付けます という意味です。記述では 1000円お願いします ってなっている点は申し訳ないです。なので1000円以上の時にこの処理がされるようにするためにこの記述にしています。

関連するQ&A