■PHP簡易入力ページの作成・・・クラスの作成
PHPとPostgreSQLを使ってデータの登録が出来るホームページを作成してみます。
そこでセッションとデータベースの処理を行うクラスを作成してみます。

<?php
//エントリー用クラス
include("../dbconnect.php"); //共通外部ファイル
class cls_ent {
    function get_id() {
        if(isset($_SESSION["id"])){
            return $_SESSION["id"];
        }else{
            return -1;
        }
    }
    function set_id($id) {
        $_SESSION["id"] = intval($id);
        return true;
    }

    function get_date() {
        if(isset($_SESSION["date"])){
            return $_SESSION["date"];
        }else{
            return "";
        }
    }
    function set_date($date) {
        if( strtotime($date) == -1 ){
            return false;
        }else{
            $_SESSION["date"] =$date;
            return true;
        }
    }

    // date 当日セット
    function set_date_today() {
        $_SESSION["date"] = date('Y-m-d',time());
        return true;
    }
    
    function get_code() {
        if(isset($_SESSION["code"])){
            return $_SESSION["code"];
        }else{
            return "";
        }
    }
    function set_code($code) {
        $_SESSION["code"] = $code;
        return true;
    }

    function get_name() {
        if(isset($_SESSION["name"])){
            return $_SESSION["name"];
        }else{
            return "";
        }
    }
    function set_name($name) {
        $_SESSION["name"] = $name;
        return true;
    }

    function get_quantity() {
        if(isset($_SESSION["quantity"])){
            return $_SESSION["quantity"];
        }else{
            return 0;
        }
    }
    function set_quantity($quantity) {
        $_SESSION["quantity"] = intval($quantity);
        return true;
    }

    function get_price() {
        if(isset($_SESSION["price"])){
            return $_SESSION["price"];
        }else{
            return 0;
        }
    }
    function set_price($price) {
        $_SESSION["price"] = intval($price);
        return true;
    }

    function get_money() {
        if(isset($_SESSION["quantity"]) AND isset($_SESSION["price"])){
            return $_SESSION["quantity"] * $_SESSION["price"];
        }else{
            return 0;
        }
    }

    // 初期化
    function data_clear() {
        $_SESSION["id"] = -1;
        $this->set_date_today();
        $_SESSION["code"] = "";
        $_SESSION["name"] = "";
        $_SESSION["quantity"] = 0;
        $_SESSION["price"] = 0;
        $_SESSION["money"] = 0;
    }

    // コード読み込み
    function code_read() {
        $db_con = pg_connect(db_connect());
        if(!$db_con){
            return false;
        }
        $result=pg_query($db_con,"SELECT * FROM cm_item ORDER BY code");
        if(!$result){
            return false;
        }
        return pg_fetch_all($result);
    }

    // データ登録
    function data_insert() {
        $db_con = pg_connect(db_connect());
        if(!$db_con){
            return "データベースに接続できません。";
        }
        $date = $_SESSION["date"];
        $code = $_SESSION["code"];
        $quantity = $_SESSION["quantity"];
        $price = $_SESSION["price"];
        $money = $this->get_money();
        $sql  = "INSERT INTO  ms_sales (date  ,code ,quantity ,price ,money ) ";
        $sql .= "VALUES ( '{$date}' , '{$code}' , '{$quantity}', '{$price}', '{$money}')";
        $result=pg_query($db_con,$sql);
        if(!$result){
            return "データの登録に失敗しました。";
        }else{
            return true;
        }
    }

    // データ更新
    function data_update() {
        $db_con = pg_connect(db_connect());
        if(!$db_con){
            return "データベースに接続できません。";
        }
        $id = $_SESSION["id"];
        $date = $_SESSION["date"];
        $code = $_SESSION["code"];
        $quantity = $_SESSION["quantity"];
        $price = $_SESSION["price"];
        $money = $this->get_money();
        $sql  = "UPDATE  ms_sales SET date = '{$date}' , code = '{$code}' ,";
        $sql .= " quantity = '{$quantity}', price = '{$price}' , money = '{$money}' ";
        $sql .= " WHERE id ='{$id}' ";
        $result=pg_query($db_con,$sql);
        if(!$result){
            return "データの更新に失敗しました。";
        }else{
            return true;
        }
    }

    // データ削除
    function data_delete() {
        $db_con = pg_connect(db_connect());
        if(!$db_con){
            return "データベースに接続できません。";
        }
        $id = $_SESSION["id"];
        $result=pg_query($db_con,"DELETE FROM ms_sales WHERE id ='{$id}'");
        if(!$result){
            return "データの削除に失敗しました。";
        }else{
            return true;
        }
    }

    // データ読み込み
    function data_select_all() {
        $db_con = pg_connect(db_connect());
        if(!$db_con){
            return false;
        }
        $sql  = "SELECT  sal.id AS id , sal.date AS date , sal.code AS code ";
        $sql .= ", itm.name AS name , sal.quantity AS quantity ";
        $sql .= ", sal.price AS price , sal.money AS money ";
        $sql .= "FROM ms_sales sal JOIN cm_item itm ON sal.code = itm.code ";
        $sql .= "ORDER BY id ";
        $result=pg_query($db_con,$sql);
        if(!$result){
            return false;
        }
        return pg_fetch_all($result);
    }

    // データ読み込み
    function data_select($id) {
        $db_con = pg_connect(db_connect());
        if(!$db_con){
            return false;
        }
        $sql  = "SELECT  sal.id AS id , sal.date AS date , sal.code AS code ";
        $sql .= ", itm.name AS name , sal.quantity AS quantity ";
        $sql .= ", sal.price AS price , sal.money AS money ";
        $sql .= "FROM ms_sales sal JOIN cm_item itm ON sal.code = itm.code ";
        $sql .= "WHERE sal.id = " . $id . " ";
        $sql .= "ORDER BY sal.id ";
        $result=pg_query($db_con,$sql);
        if(!$result){
            return false;
        }
        $rows =  pg_fetch_all($result);

        if($rows){
            foreach($rows as $r){ 
                $_SESSION["id"]=intval($r['id']);
                $_SESSION["date"]=$r['date'];
                $_SESSION["code"]=intval($r['code']);
                $_SESSION["name"]=$r['name'];
                $_SESSION["quantity"]=intval($r['quantity']);
                $_SESSION["price"]=intval($r['price']);
                $_SESSION["money"]=intval($r['money']);
            }
            return true;
        }else{
            return false;
        }
    }

}
?>

結構長くなってしまいました。
●ポイント
 ○data_clear
  セッション変数のクリアです。最初や入力したデータをクリアしたい時に使います。

 ○get_〜 set_〜
  セッション変数へデータをセット・又は取得します。
  セットされていない場合-1を返す、入力時に簡単なチェックや数字変換等行っています。

 ○set_date_today
  セッション変数の日付(date)に当日日付を入れます。
  登録時に今日の日付が先に入っていると便利かもしれません。

 ○get_money
  金額の取得です。金額は数量(quantity)×単価(price)で求められる事とするので
  セットする必要はありません。数量・単価をセットすれば後は計算で求められます。
  その為moneyにはsetがありません

 ○code_read
  データベースよりコードマスタを読み込みます。
  pg_fetch_allを使う事によって検索結果全てを返します。

 ○data_insert・data_update・data_delete
  データベースへデータを入力・変更・削除します。
  入力はセッションに保存した値を使って入力します。

 ○data_select_all
  データの読み込みを行います。
  こちらも pg_fetch_allを使い、検索結果全てを返します。

 ○data_select($id)
  こちらもデータを読み込みますが、idを指定し、1件だけ読み込みます。
  また読み込んだデータを返さず、読み込んだデータをセッション変数へ書き込みます。

 ※まだクラスに慣れておらず、試行錯誤しております。
  管理人は長い事COBOLやってた人だったりします。
  何かお気づきの事がありましたらブログへお願いします

トップへ戻る