
CSSすら理解してない私が見よう見まねでphpを使ってみたのですが、エラーが起こって困ってます。
Warning: Division by zero
<?php
$a = $_POST["a"];
$b = $_POST["b"];
$c = $a + $b;
$d = $a / $c;
$e = $d *5;
echo $e;
?>
<form action="test.php" method="post">
<input type="text" name="a">
<input type="text" name="b">
<input type="submit" name="bottun1" value="計算">
</form>
自己流で勝手に書いたので変なことになっていると思います。
エラーの原因は「$d = $a / $c;」でしょうか?
調べてみたら、どうやらゼロ除算というのが問題らしいです。
どうすれば解決できるでしょうか?
それともしよろしければ、この様な計算をする場合の正しい書き方を教えてください。
よろしくお願いします。
No.5ベストアンサー
- 回答日時:
PHP5以上をお使いであれば例外処理でエラーを
回避する方法があります。
PHP5以上でない場合はエラー判定した後、計算処理を
するようにすればどうでしょうか?
●例↓
<?php
$numA = $_POST["numA"];
$numB = $_POST["numB"];
$result = "";
$err_msg = "";
if ($numA != "" || $numB != "") {
// error判定
switch (true) {
case (!is_numeric($numA)):
case (!is_numeric($numB)):
$err_msg = 'error:数値を入力して下さい。';
break;
case ($numA + $numB == 0):
$err_msg = 'error:ゼロ除算はできません。';
break;
}
// 計算
if (!$err_msg) {
$result = ($numA / ($numA + $numB)) * 5;
}
}
/************* html ここから↓ *****************/
echo $err_msg;
print <<<EOD
<hr>
(数値A ÷ (数値A + 数値B)) × 5 = $result
<form action="test.php" method="post">
数値A:<input type="text" style="text-align:right" name="numA" value="$numA"><br>
数値B:<input type="text" style="text-align:right" name="numB" value="$numB"><br>
<input type="submit" name="" value="計算">
</form>
EOD;
/************* html ここまで↑ *****************/
?>
参考URL:http://www.phppro.jp/phptips/archives/vol45/2
No.4
- 回答日時:
>No.2はいろんな意味でありえんから、やめたほうがいい。
わかりましたすみません。まじめに書きます。
<?php
error_reporting( E_ALL | E_STRICT );
$a = isset($_POST["a"])?(int) $_POST["a"]:0;
$b = isset($_POST["b"])?(int) $_POST["b"]:0;
$c = $a + $b;
if($c!==0){
$d = $a / $c;
$e = $d *5;
echo $e;
}
?>
<form method="post">
<p>
<input type="text" name="a" />
<input type="text" name="b" />
<input type="submit" name="bottun1" value="cal" />
</p>
</form>
No.3
- 回答日時:
回答というわけではないんですが、
HTML 5 から、pattern 属性が導入されていますし、ブラウザによってはすでにサポートされていますので、この属性を利用するのもありだと思います。データ型を指定できるよな属性があるとありがたかったりしますが、、、(この属性は値のチェックではなく、ユーザーへのヘルプくらいに捕らえてください)
[HTML]
<!-- 整数値の場合 -->
<input type="text" name="b" pattern="[1-9][0-9]*">
[/HTML]
http://www.whatwg.org/specs/web-apps/current-wor …
J(ava)Script でチェックに飾りを付けてもいいでしょう。
一応
http://www.asahi-net.or.jp/~wv7y-kmr/memo/php_se …
この辺にも目を通しておいてください。
No.2はいろんな意味でありえんから、やめたほうがいい。動きゃいいってもんでもねーだろ。
# これ言うために現れた。
# ネチケットに引っかかるかな。まあいいや。
No.2
- 回答日時:
初期値が設定してないので、0で割っちゃっているんですね
まぁ最低限のエラー回避はつけておかないといけませんね
<?php
do{
$a = $_POST["a"];
$b = $_POST["b"];
$c = $a + $b;
if(!$c) break;
$d = $a / $c;
$e = $d *5;
echo $e;
}while(false);
?>
<form method="post">
<input type="text" name="a">
<input type="text" name="b">
<input type="submit" name="bottun1" value="cal">
</form>
No.1
- 回答日時:
お察しの通り、エラーの原因はは「$d = $a / $c;」の部分で、$c = $a +$b の結果がゼロになっている、つまり、フォームで A と B に足すとゼロになるような数値を入れたということです。
回避策は、PHP スクリプトを以下のように書きます。
--------------------------------------------
<?php
$a = $_POST["a"];
$b = $_POST["b"];
$c = $a + $b;
if ($c == 0) {
echo 'ゼロで割り算しようとしました';
} else {
$d = $a / $c;
$e = $d * 5;
echo $e;
}
?>
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- PHP PHPで画像の渡しが上手く行きません。 1 2023/02/02 09:39
- PHP 入力した部分を表示させたまま(保持)するにはどうすれば良いでしょうか? 1 2023/01/25 11:14
- PHP PHPでCookieを使った訪問回数について 1 2023/05/28 14:10
- PHP PHPでユーザー情報を入力して簡易ログイン機能をつくってみたのですが 1 2023/05/29 08:51
- HTML・CSS ただいま勉強始めたての初心者です。フォームを縦並べにしたいです。 2 2022/11/20 17:18
- JavaScript ①入力フォーム→②確認表示画面→③送信完了画面のコードを書いているのです、 入力フォームから受け取っ 2 2022/05/10 16:45
- PHP PHPのエラーの解消法について教えて下さい。 1 2023/02/06 10:48
- HTML・CSS CSSが効かずどのように指定すれば良いか分からないのでアドバイスお願い致します 2 2023/06/07 12:25
- JavaScript sessionStorageを調べています。 1 2023/06/20 12:41
- HTML・CSS 私の能力からして間違っていないような気がします。 4 2022/09/30 13:24
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
PHPでじゃんけん勝負
-
PHP・MYSQLで複数のチェックボ...
-
フォームでのリセットを使う方法
-
画面が更新されてもチェックボ...
-
ラジオボタンをsessionで使いたい
-
PHPでユーザー情報を入力して簡...
-
$_SESSIONについて教えて下さい。
-
サーバへのアップロードが出来...
-
同じページでフォームデータを...
-
ラジオボタンを押すと、表示が...
-
PHP ボタンが押されたら処理を...
-
チェックボックスの内容が送信...
-
チェックボックスでの送信
-
POSTデータのNAME属性をVALUEに...
-
PHPでクリックするたびに変数を...
-
PHPの初心者です。現在チェック...
-
コードの何が間違っているのか...
-
複数のラジオボタングループを...
-
HTMLのリンクをクリックするこ...
-
PHPでMP3サーバを作るには
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
HTMLで前の画面に戻る時、入力...
-
検索時の選択内容を保持する方法
-
<input type="hidden" >で配列...
-
フォームへの前回入力値をクリ...
-
PHP ボタンが押されたら処理を...
-
DBの値をチェックボックスに反...
-
パラメーターを隠す
-
【PHPチェック】ラジオボタンが...
-
PHPで画像の渡しが上手く行きま...
-
テキストボックスに初期値を入れる
-
ラジオボタンをsessionで使いたい
-
ラジオボタンを押すと、表示が...
-
入力フォーム→確認画面→送信画...
-
PHPの関数実行
-
PHPで、ボタンを押すと同じペー...
-
画面が更新されてもチェックボ...
-
HTMLフォームで複数選択のチェ...
-
<input type='checkbox'>要素で...
-
同じページでフォームデータを...
-
$_SESSIONについて教えて下さい。
おすすめ情報