みんなの「教えて(疑問・質問)」にみんなで「答える」Q&Aコミュニティ

こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

締切り済みの質問

.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 "

"; ?>
お金を入れなおす

投稿日時 - 2018-07-24 18:05:28

QNo.9521482

困ってます

このQ&Aは役に立ちましたか?

0人が「このQ&Aが役に立った」と投票しています

回答(2)

ANo.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円を
投入することもありますが、そういうの考慮しないのですか

投稿日時 - 2018-07-25 10:09:44

ANo.1

} elseif($m > 1000){
この部分がよくわからない

} elseif($r > 1000){
とか
} elseif($m >= 1000){
とか
} elseif($r >= 1000){
でないですかね?

投稿日時 - 2018-07-24 19:10:08

補足

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

投稿日時 - 2018-07-24 20:02:46

あなたにオススメの質問