体重管理をPHPで
体重とBMIを管理する画面をPHPで作ってみようと思った。
ソースは下記の通り。
<?
error_reporting(E_ALL & ~E_NOTICE);
if ($_POST['my_tall'] && $_POST['my_weight']) { //POSTでデータが届いたらテキストファイルに書き込み
$diet_date = '@' . $_POST['my_tall'] . ',' . $_POST['my_weight'] . ',' . date('Y-m-d H:i:s');
file_put_contents("./logs/diet.txt", $diet_date, FILE_APPEND | LOCK_EX);
header("Location:./index.php?mode=update");
}
$diet_date = file_get_contents("./logs/diet.txt");
if ($diet_date) { //テキストファイルにデータがあった場合は呼び出し
$diet_date = explode('@', $diet_date);
for ($i = 1; $i < count($diet_date); $i++) {
$d = explode(',', $diet_date[$i]);
$diet_dates[$i]['tall'] = $d[0];
$diet_dates[$i]['weight'] = $d[1];
$diet_dates[$i]['time'] = $d[2];
$diet_dates[$i]['bmi'] = round*1 {
$("#error_div").css({'display' : 'block'}).html('半角数字のみ入力可能です。');
return false;
} else {
document.diet_form.submit();
}
}
$(function () {
$('#container').highcharts({
chart: {
type: 'line',
marginRight: 100,
marginBottom: 25
},
title: {
text: '体重推移',
x: -20
},
xAxis: {
categories: [
<?
echo "'" . $diet_dates[1]['time'] . "'";
for ($i = 2; $i < count($diet_date); $i++) {
echo ",'" . $diet_dates[$i]['time'] . "'";
}
?>
]
},
yAxis: {
title: { text: 'kg' },
plotLines: [{
value: 0,
width: 1,
color: '#808080'
}]
},
legend: {
layout: 'vertical',
align: 'right',
verticalAlign: 'top',
x: -10,
y: 100,
borderWidth: 0
},
series: [{
name: '体重',
data: [
<?
echo $diet_dates[1]['weight'];
for ($i = 2; $i < count($diet_date); $i++) {
echo ',' . $diet_dates[$i]['weight'];;
}
?>
]}, {
name: 'BMI',
data: [
<?
echo $diet_dates[1]['bmi'];
for ($i = 2; $i < count($diet_date); $i++) {
echo ',' . $diet_dates[$i]['bmi'];;
}
?>
]
}]
});
});
</script>
<head>
<title>体重管理</title>
</head>
<body>
<!--表示部分-->
<div id="container" style="width:800px; height:300px;"></div>
<!--入力部分-->
<span style="color:#F00"><? if ($_GET['mode'] == 'update') echo 'データを更新しました!';?></span>
<form action="./index.php" method="post" name="diet_form">
身長:<input type="text" name="my_tall" id="my_tall" maxlength="3" value="<? if($diet_date) echo $new_tall;?>">cm<br>
体重:<input type="text" class="" name="my_weight" id="my_weight" maxlength="3" value="<? if($diet_date) echo $new_weight;?>">kg<br>
<div id="error_div" class="alert alert-error" style="width:200px; display:none;"></div>
<input type="button" class="btn" value="更新する" onClick="return validate();">
</form>
</body>
</html>
■サンプル
http://sample.taitan916.info/diet/
※更新は出来ないようにしてます
■その他
収穫として、
$diet_dates[$i]['bmi'] = round(($d[1] / ($d[0] * $d[0]) * 10000),1);
があった。round,ceilは無条件で小数点以下を丸めるものと思っていたが、
引数で設定できるみたい。
勉強する項目がすぐに見つからない時は、適当に作ってみたいものを
作ってみるのもありだと思った。
*1:$d[1] / ($d[0] * $d[0]) * 10000),1);
}
$new_tall = $diet_dates[$i - 1]['tall'];
$new_weight = $diet_dates[$i - 1]['weight'];
}
?>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transtional//EN" "http://www.w3c.org/TR/html4/loose.dtd">
<html lang="ja">
<meta http-equiv="content-type" content="text/html"/>
<meta cherset = "UTF-8">
<link href="//netdna.bootstrapcdn.com/twitter-bootstrap/2.3.2/css/bootstrap-combined.min.css" rel="stylesheet">
<script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/jquery/1.7.2/jquery.min.js"></script>
<script type="text/javascript" src="./highcharts.js"></script>
<script>
function validate(){
var my_tall = $("#my_tall").val();
var my_weight = $("#my_weight").val();
if (my_tall == '' || my_weight == '') {
$("#error_div").css({'display' : 'block'}).html('未入力項目があります');
return false;
} else if (my_tall.match(/[^0-9]+/) || my_weight.match(/[^0-9]+/
関連記事
-
-
ランダム表示のページング
MySQLからデータを持ってくる際に、 ランダムな表示を行ってほしいと言われた。 ...
-
-
数値を3桁とかでカンマ区切りにする
見たこと無い関数が業務中にあったのでメモ。 number_format ■参考サ ...
-
-
includeした内容を変数に入れる
includeした内容を変数に入れる際に嵌ったのでメモ。 下記サイト様を参考にさ ...
-
-
mPDFで「The /e modifier is …」エラー
pdf関連のPHPライブラリ「mPDF」を使っているページがエラーログにのってお ...
-
-
preg_matchについて
PHPでのpreg_matchについて教わることがあったのでメモ。 ■参考サイト ...
-
-
画像削除用function
ファイルパス、拡張子、seq番号、画像番号を渡してあげるだけ。 拡張子部分があれ ...
-
-
PHPで土日祝を避ける
広告物を土日祝だけ非表示にしたいと言われ、 できたらPHPで行いたかった。 調べ ...
-
-
joinとimplode
PHPで配列を結合する時に使う関数。joinとimplode。 元々はなんかのマ ...
-
-
前置インクリメントと後置インクリメント
何かの検索している時に見つけたもの。 前置インクリメントの方が高速とのこと。 ■ ...
-
-
PHPで月末日を取得
PHPファイルを触っている際に日付処理時、 date('t')というものがあって ...
- PREV
- 要素の点滅
- NEXT
- 画像アップロード前の時点で画像が選択されているか確認