前提・実現したいこと
PHP初心者です。
PHPでBMIを画面遷移せずに測定するアプリを作っています。
入力した身長と体重の計算結果をBMIにセットし、測定ボタンを押した際に
測定日時、身長、体重、BMIをデータベースに登録させる
アプリを作ろうと思っています。フォームに値が入力されて
いない場合のみエラーメッセージを出力させたいです。
アドバイス等あれば教えていただきたいです。宜しくお願い致します。
発生している問題・エラーメッセージ
・データベースにデータが登録されない。 ・値に何も入力されていない場合警告が出る。 ・フォームに値が入力されていない場合だけエラーメッセージがを表示させたい。
該当のソースコード
PHP
1<?php 2if ($_SERVER['REQUEST_METHOD'] === 'POST') { 3 $height = $_POST['height']; 4} 5 6if ($_SERVER['REQUEST_METHOD'] === 'POST') { 7 $weight = $_POST['weight']; 8} 9 10if ($_SERVER['REQUEST_METHOD'] === 'POST') { 11 $bmi = $_POST['bmi']; 12} 13$date = date('Y-m-d H:i:s'); 14 15try { 16 // DBへ接続 17 $dbh = new PDO("mysql:host=localhost; dbname=measuredb; charset=utf8", 'root', ''); 18 19 // SQL作成 20 if(isset($sql)){ 21 $sql = "INSERT INTO measurement_history ( 22 height, weight, measurement_day, bmi 23 ) VALUES ( 24 '$height', '$weight', '$date', '$bmi' 25 )"; 26 }else { 27 ''; 28 } 29 30 // SQL実行 31 if(isset($res)){ 32 $res = $dbh->query($sql); 33 }else{ 34 ''; 35 } 36} catch(PDOException $e) { 37 echo $e->getMessage(); 38 die(); 39} 40 41// 接続を閉じる 42$dbh = null; 43 44?> 45<!DOCTYPE html> 46<html lang = "ja"> 47<head> 48<meta charset = "UFT-8"> 49<link rel="stylesheet" href="style.css"> 50<title>測定画面</title> 51</head> 52<body> 53<h1>測定</h1> 54<?php 55 //測定日時出力 56 echo date('令和I年m月d日 H時i分s秒'); 57?> 58<form action = "get.php" method = "post"> 59 <!-- エラーメッセージ --> 60 <label><?php 61 if(isset($height)){ 62 echo ''; 63 }else{ 64 echo'<span style="color:red;">身長を入力してください 必須</span>'; 65 } 66 ?> 67 <!-- フォーム入力 --> 68 </label><br> 69 身長 <input type = "text" name ="height" size="6" value="<?php 70 if(isset($height)){ 71 echo round($height, 3); 72 } else{ 73 echo ''; 74 } 75 ?>"> cm<br/><br/> 76 <label><?php if(isset($weight)){ 77 echo ''; 78 } else { 79 echo '<span style="color:red;">体重を入力してください 必須</span>'; 80 } 81 ?></label><br> 82 体重 <input type = "text" name ="weight" size="6" value="<?php 83 if(isset($weight)){ 84 echo round($weight,3); 85 } else{ 86 echo ''; 87 } 88 ?>"> kg<br/><br/><br> 89 BMI <input type = "text" name ="bmi" size="4" value ="<?php 90 if(isset($bmi)){ 91 echo round($weight/(($height/100)*($height/100)),1); 92 } else{ 93 echo ""; 94 } 95 ?>"><br/><br/> 96 <input class="btn1" type="submit" value="測定する"><br><br> 97 <input class="btn1" type="button" onclick="location.href='measurement_history.php'" value="測定履歴"> 98</form> 99</body> 100</html>
試したこと
フォームに変数がセットされていない状況の時にエラーメッセージ表示
画面遷移をせずに値をセットする
補足情報(FW/ツールのバージョンなど)
XAMPP環境でMySQLを使っています。
回答1件
あなたの回答
tips
プレビュー