■Apache+PHP(実績表の作成 ※DB読み込み)
DBのデータを読み込んで実績表を作成します。
●result.php
<?php
include("../dbconnect.php"); //共通外部ファイル
date_default_timezone_set('Asia/Tokyo');
//*** 変数定義 ********************************
$sel_list_syu_cd = array(); // 選択From用 集計
$sel_list_syu_na = array(); // 選択From用 集計
$sel_syu=''; //集計区分
$sel_syu_na=''; //集計区分名
//*** 集計区分選択用 **************************
$sel_list_syu_cd[] = 'item';
$sel_list_syu_na[] = '商品計';
$sel_list_syu_cd[] = 'group';
$sel_list_syu_na[] = 'グループ計';
//*** DBへの接続 ******************************
$db_con = pg_connect(db_connect());
if(!$db_con){
echo "接続NG";
exit('接続できません');
}
//*** 集計区分設定。POST優先、無ければ集計 *****
if(isset($_POST["sel_syu"])){
$sel_syu = $_POST["sel_syu"];
}else{
$sel_syu = 'group';
}
//*** 区分によってSQL切り替え ********************
if($sel_syu == 'item'){
//*** 商品集計 ***
$sql = "SELECT sal.code AS code , MAX(item.name) AS name , SUM(sal.money) AS money ";
$sql .= "FROM ms_sales sal JOIN cm_item item ON sal.code = item.code ";
$sql .= "GROUP BY sal.code ORDER BY sal.code ";
}else{
//*** グループ計 ***
$sql = "SELECT item.group_code AS code , MAX(item.group_name) AS name , SUM(sal.money) AS money ";
$sql .= "FROM ms_sales sal JOIN cm_item item ON sal.code = item.code ";
$sql .= "GROUP BY item.group_code ORDER BY item.group_code ";
}
//*** sql発行 ***********************************
$result=pg_query($db_con,$sql);
if(!$result){
exit("{$sql}データを取得出来ません!");
}
//*** sql結果取得 ********************************
$rows=pg_fetch_all($result);
//*** tableの作成 ********************************
$w_html="";
if($rows){
$w_html= "<table><tr><th class='code'>コード</th><th>商品</th><th class='money'>金額</th></tr>";
foreach($rows as $r){
$w_html .= "<tr><th class='code'>" . $r['code'] . "</th><th>" . $r['name'] . "</th><td class='money'>" . $r['money'] . "</td></te>";
}
$w_html .= "</table><p>";
}
?>
<!doctype html>
<html>
<head>
<title>実績表</title>
<link rel="stylesheet" type="text/css" href="result.css">
</head>
<body>
<form action="result.php" method="post">
集計<select name="sel_syu">
<?php //売仕入セレクト
for($i=0 ; $i < count($sel_list_syu_cd) ; $i++){
if ($sel_list_syu_cd[$i] == $sel_syu){
echo "<option value='{$sel_list_syu_cd[$i]}' selected >{$sel_list_syu_na[$i]}</option>";
$sel_syu_na=$sel_list_syu_na[$i];
}else{
echo "<option value='{$sel_list_syu_cd[$i]}'>{$sel_list_syu_na[$i]}</option>";
}
}
?>
</select>
<input type="submit" name="submit" value="表示"></form>
<?php
echo "{$w_html} <br>";
?>
</body>
</html>
●result.css
@charset "utf-8";
/* 表題のスタイル */
table {
font-family: sans-serif;
border-width: 1px;
border-color: #808080;
border-style: solid;
border-collapse:collapse;
margin: 0px;
padding: 0px;
}
/* */
th{
text-align:left;
background-color: #eee;
border-width: 1px;
border-color: #808080;
border-style: solid;
width: 170px;
}
/* 金額のスタイル */
.money{
text-align:right;
border-width: 1px;
border-color: #808080;
border-style: solid ;
width: 100px;
margin: 0px;
padding: 0px;
}
/* コードのスタイル */
.code{
text-align:left;
border-width: 1px;
border-color: #808080;
border-style: solid ;
width: 60px;
margin: 0px;
padding: 0px;
}
form {
margin: 0px;
padding: 0px;
}
■動作
このページにアクセスするとグループ計の実績が表示されます。
後は集計方法を変更し、「表示」ボタンをクリックする事によって表示が変わります。
■ポイント
■include("../dbconnect.php"); //共通外部ファイル
※最初に接続用のphpをincludeしています。名前の前に../を入れる事によって上のフォルダを参照しています。
■if(isset($_POST["sel_syu"])){
POSTされたデータによって区分を設定し、商品集計・グループ集計のsqlを実行するかを切り替えています。
最初は何も設定されていないのでグループ計にするようにしています。
■$result=pg_query($db_con,$sql);
ここでsqlを実行しています。
戻り値でsqlの実行が失敗したか調べる事が出来ます
■$rows=pg_fetch_all($result);
ここでsqlの実行結果を$rowに代入しています。
■foreach($rows as $r){
データを1行づつ読み込み、HTMLのテーブルを作成しています。
■<form action="result.php" method="post">
フォームを作成し、自分自身を呼び出しています。
またセレクトボックスで集計方法を選択し、POSTする事で集計方法を選べるようにしています。
※出力サンプルをここに置きます。
(PHPの実行環境やDBがある訳ではないので表示のみ、ボタンをクリックしても反応しません)
このようにDBを利用して常に最新のデータを表示させる事が出来ます。
後は日付を選択する等改造して行けば良くなると思います。
良い作り方か分からない所もあるので何かあればブログまでお願いします。
トップへ戻る