■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やってた人だったりします。
何かお気づきの事がありましたらブログへお願いします
トップへ戻る