前提・実現したいこと
ここに質問の内容を詳しく書いてください。
PHPでフォーム画面を使用した四則演算を行えるプログラムを組んでいますがここからうまくいきません。
問題としてはフォームに数字以外を打ち込んだ際にエラーになるのでその結果をエラーメッセージで表示したい。
■■な機能を実装中に以下のエラーメッセージが発生しました。
発生している問題・エラーメッセージ
エラーメッセージ
該当のソースコード
コード```ここに言語を入力 php
```ここに言語名を入力 <?php /*var_dump($_POST["n1"]); exit;*/ /*if(strlen($n1)){ echo "数値を入力してください"; }*/ /*if(isset($_POST["n1"] && $_POST["n2"])){ if(preg_match($_POST["n1"] && $_POST["n2"])){ echo "入力エラー"; }else { echo "入力エラー"; } }*/ if (isset($_POST["operator"])) { switch ($_POST["operator"]) { case "2": $answer = $_POST["n1"] - $_POST["n2"]; break; case "3": $answer = $_POST["n1"] * $_POST["n2"]; break; case "4": $answer = $_POST["n1"] / $_POST["n2"]; break; case "1": $answer = $_POST["n1"] + $_POST["n2"]; break; } } else{ $answer = "計算結果なし"; } ?> <!DOCTYPE html> <html> <head> <title>2</title> </head> <body> <form action="index2.php" method="POST"> <input type="text" name="n1" required > <select name="operator"> <option value="1">+</option> <option value="2">-</option> <option value="3">*</option> <option value="4">/</option> </select> <input type="text" name="n2" required/> <input type="submit" value="計算"> </form> <p><?php echo $answer; ?></p> </body> </html>
試したこと
ここに問題に対して試したことを記載してください。
if(isset($_POST["n1"]) && isset($_POST["n2"])){
if(!is_numeric($_POST["n1"]) || !is_numeric($_POST["n2"])){
echo "数値を入力してください";
}
}
/*if (!is_numeric($_POST["n1"]) || !is_numeric($_POST["n2"])){
echo "エラー"; }
*/
if(isset($_POST["operator"])){
if(is_numeric($_POST["n1"] )&& is_numeric($_POST["n2"])){
switch($_POST["operator"]){
case "1":
$answer=$_POST["n1"] + $_POST["n2"];
break;
case "2":
$answer=$_POST["n1"] - $_POST["n2"];
break;
case "3":
$answer=$_POST["n1"] * $_POST["n2"];
break;
case "4":
if($_POST["n1"] == 0 || $_POST["n2"] == 0){
echo "0での計算はできません。";
} else{
$answer=$_POST["n1"] / $_POST["n2"];
}
}
}
}
?>
</form> <p>答え:<?php if(isset($answer)) echo $answer; ?></p> </body> </html> ### 補足情報(FW/ツールのバージョンなど)</select> <input type="text" name="n2" required/> <input type="submit" value="計算">
ここにより詳細な情報を記載してください。
回答4件
あなたの回答
tips
プレビュー