前回の続き。
とりあえずやろうとしていること:
http://www.kitcometals.com/charts/nickel_historical_large.html#30days
の数字を記録する(ちなみに上司に提出する)。前回、
1:ページそのものを引っ張ってくる
2:中身をスクレイピングして欲しい数字を算出する
3:日付を添えてデータベースにぶち込む
のうち2までが出来たので、とりあえず手間なくデータベースにぶち込むようにするところまで。整備とかは後からゆっくり考える。
とりあえず何も考えずにfuelphp( http://fuelphp.com/ )を使って実装することにする。
昔はちいたん( http://php.cheetan.net/ )と使用してたし実際楽なんだけど、勉強も兼ねて後からゆっくり動作解析したいと思ったんで初採用。
自分の動作環境
・Windows7Pro
・Xampp 1.8.1(英語) apacheとmysqlを稼働させておく。
・fuelphp 1.5.3
とりあえずfuelphpをダウンロード・解凍して、"C:\xampp\htdocs\kitco"にdocs以外を設置。dosプロンプトで
php oil g scaffold kitco value:float(6,4) date:date
scaffoldは足場って意味なのね。とりあえず雛形を自動生成させる。次に使用データベースの設定、"C:\xampp\htdocs\kitco\fuel\app\config"に行って2ファイルいじる。
<?php
return array(
'always_load' => array(
'packages' => array(
'orm',
)
)
);
コレを入れないと表示時にデータベースにormがないよ的エラーが出る。詳細よくわかってないが多分必須なんだろう。
<?php
return array(
'default' => array(
'connection' => array(
'dsn' => 'mysql:host=localhost;dbname=kitco',
'username' => 'hoge',
'password' => 'fuga',
),
),
);
もちろんデータベース名とほげとふがは適当に。何もいじってない人は多分'root'と''。あとはデータベース作っておかないと行けないので作成しておく。面倒ならxamppのmysqladminに行って作成。作成後は
php oil r migrate
が通るので、これでデータベースのテーブル設定も終わり。最後に前回書いた実際のコードを置くために
1."C:\xampp\htdocs\kitco\public"にphpQueryフォルダ以下を設置(前回参照)
(requireできるなら別にここじゃなくてもいい)
2."C:\xampp\htdocs\kitco\fuel\app\views\kitco"に移動し、_form.phpを以下のように書き換える
<?php echo Form::open(); ?>
<?php
require_once('phpQuery/phpQuery.php');
$html = phpQuery::newDocumentFile('http://www.kitcometals.com/');
mb_language('Japanese');
$lists = $html['table:eq(15)']; //テーブル決め打ち
$hoge = $lists['tr:first td:eq(1)'];
$current = pq($hoge)->text();
$hoge = $lists['tr:eq(1) td:eq(1)'];
$change = pq($hoge)->text();
$value = $current - $change;
$date = date_create();
if($date->format("w")== 1) // 月曜日の時は金曜日を指示
$date->modify('-3 day');
else
$date->modify('-1 day');
$daybefore=$date->format("Y/m/d");
?>
<fieldset>
<div class="clearfix">
<?php echo Form::label('Value', 'value'); ?>
<div class="input">
<?php echo Form::input('value', Input::post('value', isset($kitco) ? $kitco->value : $value), array('class' => 'span4')); ?>
</div>
</div>
<div class="clearfix">
<?php echo Form::label('Date', 'date'); ?>
<div class="input">
<?php echo Form::input('date', Input::post('date', isset($kitco) ? $kitco->date : $daybefore), array('class' => 'span4')); ?>
</div>
</div>
(以下は同じ)
数値算出のために3行目からのブロックを追加し、空白時の値に算出した数字を出すようにする変更。営業日の計算はとりあえず適当に書いたものなんで、後で手を入れるかもしれないしほっとくかもしれない。
とりあえず目的達成のためのシンプルなアプリケーションはできたので、あとは適当に手を入れることがあったら更新かなぁ。