前提・実現したいこと
掛け算をしてくれる入力フォームを作りたいです。
この時、
空欄ならば「数値を入力してください」
数値以外の文字列ならば「数値以外のものを入れないでください」
…という内容のメッセージを表示したくて以下のように記述したのです
発生している問題・エラーメッセージ
「0」を入力した際にエラーメッセージが出てきてしまうのです。
empty関数で「0」がどうやら空要素判定を受けてしまうようなのですが…。
「0」の場合、正常に動いてくれるようにしたいです。
該当のソースコード
PHP,HTML
1<?php 2//変数宣言を行います 3$msg1 = ""; 4$msg2 = ""; 5$flg1 = ""; 6$flg2 = ""; 7$number1 = ""; 8$number2 = ""; 9$error = ""; 10 11//エラー処理① 12 13var_dump($_GET['num1']); 14var_dump(isset($_GET['num1']) == true); 15 16if(isset($_GET['num1']) == true){ 17 if(empty($_GET['num1']) == true){ 18 $msg1 = "数字1:半角数字で値を入力して下さい"; 19 $flg1 = 2; 20 } 21 elseif(!is_numeric($_GET['num1']) == true){ 22 $msg1 = "数字1:入力できるのは数字のみです"; 23 $flg1 = 2; 24 } 25 else{ 26 $number1 = $_GET['num1']; 27 $flg1 = 1; 28 $msg1 = ""; 29 } 30} 31 32//エラー処理② 33 34if(isset($_GET['num2']) == true){ 35 if(empty($_GET['num2']) == true){ 36 $msg2 = "数字2:半角数字で値を入力して下さい"; 37 $flg2 = 2; 38 } 39 elseif(!is_numeric($_GET['num2']) == true){ 40 $msg2 = "数字2:入力できるのは数字のみです"; 41 $flg2 = 2; 42 } 43 else{ 44 $number2 = $_GET['num2']; 45 $flg2 = 1; 46 $msg2 = ""; 47 } 48} 49 50//リダイレクト処理 51if($flg1 == 1 && $flg2 == 1){ 52} 53else{ 54 $error = "入力に誤りがあります"; 55} 56 57if(empty($flg1) == true && empty($flg2) == true){ 58 $error = ""; 59} 60 61?> 62 63<!DOCTYPE html> 64<html lang = "ja"> 65 66<head> 67 <meta charset="UTF-8"> 68 <title>掛け算システム</title> 69</head> 70 71<body> 72 73 <h1>掛け算をしてくれるシステムです</h1> 74 <p>数字を半角で入力してください</p> 75 76 <form method="get" action="./ep17-task_input_improvement-2.php"> <!-- この書き方をすると同じファイルのphpに移ることが出来る--> 77 <table border="1"> 78 <tr> 79 <td>数字1</td><td><input type="text" name="num1" value="<?php echo $number1 ?>"></td> 80 <td>×</td> 81 <td>数字2</td><td><input type="text" name="num2" value="<?php echo $number2 ?>"></td> 82 </tr> 83 <tr> 84 <th colspan="5"> <button type="submit">表示</button></th> 85 </tr> 86 </table> 87 88 </form> 89 90 <?php echo $error; ?><br> 91 <?php echo $msg1; ?><br> 92 <?php echo $msg2; ?><br> 93 94</body> 95 96</html>
試したこと
0の場合のみを作ろうとしましたが、文字列の際、うまく動かなくなります。
右辺が数値であるので、文字列が0に代わっているのでしょうか?
if($_GET['num1'] == 0){
}
補足情報(FW/ツールのバージョンなど)
特にありません。
回答2件
あなたの回答
tips
プレビュー