勉強したことのメモ

Webエンジニア / プログラマが勉強したことのメモ。

体重管理をPHPで

   2014/07/02  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]+/

 - PHP

  関連記事

MySQLiでSELECT文

MySQLiでSELECT文 ■データ +--+------+ | id | p ...

PHPでファイル書き込み時に「failed to open stream: HTTP~~」エラー

PHPでファイルを書き込む際に「failed to open stream: H ...

CSVファイルを使って郵便番号から住所を抽出する

■ソース <? error_reporting(E_ALL & ~ ...

DTIのVPS(PHP5系環境)にCakePHPを導入する方法

他社さんと連携して仕事をする際に「フレームワーク何か使いますか?」と聞かれて「使 ...

PHPから他サーバのAPIに対してPOST送信する方法

PHPから他サーバのAPIに対してPOSTでリクエストしたかった。GETだったら ...