PHPで計算結果が表示されない。


HTMLにPHPを書いて計算結果を表示したいのですがうまくいきません。
どこが間違っているかご教授願います。
ちなみに「form action="index.html"」としているのは、このページ(index.html)にそのまま表示させたいからです。
また、当方プログラミング初心者のため一般的な書き方に詳しくありません。こうしたほうがいい、などのご意見もいただけると幸いです。

````index.html
<!DOCTYPE html>
<html lang="ja">
<head>
  <meta charset="utf-8">
  <title>BMI測定器</title>
</head>
<body>
  <h1>BMI測定器</h1>
<form action="index.html" method="post">
  <p>
    身長<input type="text" name="sintyou"><br>
    体重<input type="text" name="taijuu"><br>
  </p>
<?php $bmi = $_POST['sintyou'] / $_POST['taijuu'] / $_POST['taijuu']; ?>
  <p>
    BMI:<?php echo $bmi; ?><br>
  </p>
<hr>
</form>
</body>
</html>
````

回答の条件
  • 1人5回まで
  • 13歳以上
  • 登録:2016/04/17 19:57:44
  • 終了:2016/04/24 20:00:04
id:pocapontas

書き忘れが見つかりました。申し訳ありません。
````
「体重
の下に以下のコードを追加してください。

````
↑HTMLが表示されませんが、input type にsubmit。valueに送信する というコードが書いてあるということです。

回答(1件)

id:pogpi No.1

pogpi回答回数348ベストアンサー獲得回数462016/04/18 11:52:51

割る演算をする前に、intval(「POSTされたパラメータ」)がいりますね。

数値以外の文字が入っていないかも、必要ならチェックしてからですね。「バリデーション」とかで検索されるといいでしょう。

他1件のコメントを見る
id:pocapontas

ご返信ありがとうございます。
お教えいただいた通りintval();でやりましたが、出力されませんでした。
PHPが動く環境にはできています。

また、HTMLとPHPの同居のさせ方がイマイチ理解できていません。
phpの計算式は、必ずしもformタグの内側にまとめて書いておかなければならないのでしょうか?
外部ファイルから読み込むことができればスマートかなと思いましたが、「転送(送信)する」というやり方は見つけられても、topページとして読み込み時にphpファイル(この場合は計算式の書いてあるphpファイル)も読み込むというやり方は見つけられませんでした。

2016/04/18 20:24:43
id:pogpi

計算式は、どこでも大丈夫です。

index.phpで動くなら.htaccessの設定で、index.htmlよりindex.phpを、優先でルートに出るようにすればいいかも知れません。

表示するだけなら、Javascriptを使ってもいいですね。

2016/04/19 11:49:38
  • id:rouge_2008
    どのようにうまくいかないのでしょう?
    BMIの計算式は以下のようになっています。
    計算結果が違う場合は、計算式を見直してみてください。

    ・BMIと適正体重
    http://keisan.casio.jp/exec/system/1161228732
    ------------------------------------------
    BMI= 体重kg ÷ (身長m)2
    ------------------------------------------


    $bmi = $_POST['sintyou'] / $_POST['taijuu'] / $_POST['taijuu'];

    上記の箇所は、以下のようにすると正しい値が表示されませんか?

    $bmi = $_POST['taijuu'] / $_POST['sintyou'] / $_POST['sintyou'];

    または以下のようにしてもいいと思います。

    $bmi = $_POST['taijuu'] / pow($_POST['sintyou'], 2);

    ※PHP 5.6 以降でしたら、次のようにも書けます。

    $bmi = $_POST['taijuu'] / $_POST['sintyou'] ** 2;


    ・PHP: pow - Manual
    http://php.net/manual/ja/function.pow.php

    ※他には、単位が間違ってないか確認してみてください。
  • id:rouge_2008
    ※PHP 5.6 以降の書き方ですが、括弧が必要かもしれません。

    $bmi = $_POST['taijuu'] / ($_POST['sintyou'] ** 2);
  • id:pocapontas
    コメントありがとうございます。
    計算式は単純に間違えていました……申し訳ありません。

    >>どのようにうまくいかないのでしょう?
    計算した結果が表示されない、ということです。
    本来ならechoしたところに表示されるはずなのですが、何もでてきません。
    例えば、このサイトのようにしたいと思っています。
    http://bmi.nobody.jp/
  • id:a-kuma3
    質問を読んでて気になったんですけど、index.html に書いてるんですか?
    index.php じゃなくて。

    よくある手順で php が動く環境を作ると、.php で終わるファイルしか解釈してくれない(普通の HTML と解釈される)と思いますけど。
  • id:pocapontas
    >> a-kuma3 様
    ご返信ありがとうございます。
    おっしゃる通りでした。普通に拡張子htmlのファイルにそのままphpを書いていました……。

    しかし、拡張子をphpに変更したところ、ファイルそのものが表示されなくなってしまいました。
    これは、phpを記述したファイルは読み込み専用として使用しなければならない、ということでしょうか?

    htmlで記述したテキストボックスや出力欄にphpの計算結果を出力したいのですが、その場合のファイルの読み込み方がわかりません。もしご存知でしたらご教授いただけると幸いです。
  • id:pocapontas
    立て続けての書き込み大変申し訳ありません。
    先ほどのphpファイルですが、開くことができました。
    単純な打ち間違いでした。
  • id:a-kuma3
    >先ほどのphpファイルですが、開くことができました。
    数字さえ入っていれば、計算した結果は表示されますよね?

    rouge_2008 さんが書いているように、BMI の式としては分子と分母が逆になってますが。

    ちょっと本物っぽくするためには、$_POST['taijuu'] と $_POST['sintyou'] に数字が入っていたら $bmi を計算する、とした方が良い感じ。

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

絞り込み :
はてなココの「ともだち」を表示します。
回答リクエストを送信したユーザーはいません