■PHP簡易入力ページの作成・・・入力画面とコード選択画面
●入力画面
<?php
require_once("cls_entry.php");
date_default_timezone_set('Asia/Tokyo');

if(empty($_POST["submit"]) AND empty($_POST["submit_input"]) AND 
   empty($_POST["submit_update"]) AND empty($_POST["submit_delete"]) AND
   empty($_POST["submit_code"]) AND empty($_GET["id"])  ){
    echo 'このページは直接アクセス出来ません。';
    echo '<a href="index.html">フォームへお戻り下さい。</a>';
    exit('ERR');
}

$id       = ""; //id
$date     = ""; //日付
$code     = ""; //コード
$name     = ""; //名前
$quantity = ""; //数量
$price    = ""; //単価
$money    = ""; //金額
$syori_ku = ""; //処理区分
$message  = ""; //メッセージ
$message_top  = ""; //メッセージ
$fl_err   = false; //エラーフラグ
$cls_entry = new cls_ent;//クラス変数定義

session_start(); //セッション開始

//処理区分
if(isset($_POST["syori_ku"])){
    $syori_ku = $_POST["syori_ku"];
}
if(isset($_GET["id"])){
    $syori_ku = "INPUT";
    $id = $_GET["id"];
}

//初回処理 NEW
if($syori_ku=="NEW"){
    $cls_entry->data_clear();//データ初期化
}

//読み込み処理
if($syori_ku=="INPUT"){
    if(!$cls_entry->data_select($id)){
         $message="読み込めません";
         $fl_err   = true;
    }
}

//新規でも読み込みでも無い場合、POSTされていたらデータを取得し、セッションへセット
if($syori_ku<>"NEW" AND $syori_ku<>"INPUT"){
    if(isset($_POST["date"])){
        if ($cls_entry->set_date($_POST["date"]) == false){//日付
             $message  = "日付がおかしいです。";
             $fl_err   = true;
        }
    }
    if(isset($_POST["code"])){
        $cls_entry->set_code($_POST["code"]);//コード
    }
    if(isset($_POST["name"])){
        $cls_entry->set_name($_POST["name"]);//名前
    }
    if(isset($_POST["quantity"])){
        $cls_entry->set_quantity($_POST["quantity"]);//数量
    }
    if(isset($_POST["price"])){
        $cls_entry->set_price($_POST["price"]);//単価
    }
    if(isset($_POST["radi"])){
        $cd_tbl = explode("/", $_POST["radi"]);
        $cls_entry->set_code($cd_tbl[0]);//コード
        $cls_entry->set_name($cd_tbl[1]);//名前
        $cls_entry->set_price($cd_tbl[2]);//単価
    }
}

//登録
if(isset($_POST["submit_input"])){
    if($cls_entry->get_money() == 0){
         $message="金額が0です";
         $fl_err   = true;
    }
    if($cls_entry->get_code() == ""){
         $message="コードがセットされていません";
         $fl_err   = true;
    }
    if($fl_err == false){
        //データ登録
        //問題無いなら新規登録
        if($cls_entry->data_insert()){
            $message="登録しました。";
            $cls_entry->data_clear();//データ初期化
        }else{
            $message="登録できませんでした。";
        }
        $cls_entry->data_clear();//データ初期化
    }
}
//変更
if(isset($_POST["submit_update"])){
    if($fl_err == false){
        //データ変更
        if($cls_entry->data_update()){
            $message="変更しました。";
            $cls_entry->data_clear();//データ初期化
        }else{
            $message="変更できませんでした。";
        }
    }
}
//削除
if(isset($_POST["submit_delete"])){
    if($fl_err == false){
        //データ登録
        if($cls_entry->data_delete()){
            $message="削除しました。";
            $cls_entry->data_clear();//データ初期化
        }else{
            $message="削除できませんでした。";
        }
    }
}

//セッションから取得
$id       = $cls_entry->get_id();//id
$date     = $cls_entry->get_date();//日付
$code     = $cls_entry->get_code(); //コード
$name     = $cls_entry->get_name(); //名前
$quantity = $cls_entry->get_quantity(); //数量
$price    = $cls_entry->get_price(); //単価
$money    = $cls_entry->get_money(); //金額

if($id == -1 ){
    $message_top="新規登録";
}else{
    $message_top="訂正・削除";
}


?>
<!doctype html>
<html>
  <head>
    <title>登録</title>
    <script>
    function go_code(){
        document.getElementById('form').action = 'code.php';
    }
    </script>
  </head>
  <body>
     <?php
        if($message != ""){
            echo $message . "<br>";
        }
        echo $message_top . "<br>";
        echo "<form id='form' action='entry.php' method='post' enctype='multipart/form-data'>";
        echo "<input type='hidden' name='syori_ku' value='RNEW' / >";
        echo "日付<input type='text' name='date' size='10' value='{$date}'><br>";
        echo "コード<input type='text' name='code' size='10' value='{$code}'><br>";
        $w_name=htmlspecialchars($name, ENT_QUOTES , "UTF-8");
        echo "名前<input type='text' name='name' size='30' value='{$w_name}'><br>";
        echo "数量<input type='text' name='quantity' size='10' value='{$quantity}' style='text-align: right;' ><br>";
        echo "単価<input type='text' name='pricee' size='10' value='{$price}' style='text-align: right;' ><br>";
        echo "金額<input type='text' name='money' size='10' value='{$money}' style='text-align: right;' ><br>";
        echo "<input type='submit' name='submit_code' value='コード変更' onclick=\"go_code();\" ><br>";
        if($id== -1){
            echo "<input type='submit' name='submit_input' value='登録'>";
        }else{
            echo "<input type='submit' name='submit_update' value='変更'>";
            echo "<input type='submit' name='submit_delete' value='削除'>";
        }
        echo "</form><br>";
     ?>
     <a href="index.html">トップページに戻る。</a>
  </body>
</html>

○処理区分
 POST、又はGETの内容から処理方法を設定します。
 自分自身から呼び出された場合、メインから呼び出された場合、
 一覧から呼び出された場合によって処理が変わります。

○新規でも読み込みでもない
 登録やコードの変更になります。
 POSTされていた場合、クラスを利用してセッション変数へ書き込みます
 コードからは少し特殊な事をしていますが後述します

○登録
 簡単なデータチェック後、登録を行います。
 クラスでセッション変数を利用してデータを登録するので
 ここの命令は少ないです。

○削除
 こちらもクラスで処理を記載しているので
 idを渡してクラスを実行するだけです

※後はセッションから値を取り出し、画面を表示するだけです。
 HTMLではjavascriptを利用し、2つのボタンのとび先を分けています。



●コード選択画面
<?php
//コード選択画面
require_once("cls_entry.php");
date_default_timezone_set('Asia/Tokyo');

if(empty($_POST["submit_code"])){
    echo 'このページは直接アクセス出来ません。';
    echo '<a href="index.html">フォームへお戻り下さい。</a>';
    exit('データを取得出来ません!');
}

$id       = ""; //id
$date     = ""; //日付
$code     = ""; //コード
$name     = ""; //名前
$quantity = ""; //数量
$price    = ""; //単価
$money    = ""; //金額
$syori_ku = ""; //処理区分
$message  = ""; //メッセージ
$message_top  = ""; //メッセージ
$fl_err   = false; //エラーフラグ
$cls_entry = new cls_ent;//クラス変数定義

session_start(); //セッション開始

//POSTされていたらデータをセット
if(isset($_POST["date"])){
    if ($cls_entry->set_date($_POST["date"]) == false){//日付
         $message  = "";
         $fl_err   = true;
    }
}
if(isset($_POST["code"])){
    $cls_entry->set_code($_POST["code"]);//コード
}
if(isset($_POST["name"])){
    $cls_entry->set_name($_POST["name"]);//名前
}
if(isset($_POST["quantity"])){
    $cls_entry->set_quantity($_POST["quantity"]);//数量
}
if(isset($_POST["price"])){
    $cls_entry->set_price($_POST["price"]);//単価
}

$rows= $cls_entry->code_read();
$naiyo = "";
$checked = "checked";
if($rows <> false){
    if($rows){
        foreach($rows as $r){ 
            $code=intval($r['code']);
            $name=$r['name'];
            $price=intval($r['price']);
            $name_work=htmlspecialchars($name, ENT_QUOTES , "UTF-8");
            $naiyo = $naiyo . "<input type='radio' name='radi' value='" 
                            . $code . "/" . $name_work . "/" . $price . "' " . $checked . " >" .  $code . ":" . $name_work . "<br>";
            $checked = "";
         }
    }
}
?>
<!doctype html>
<html>
  <head>
    <title>コード一覧</title>
  </head>
  <body>
     <?php
        if($message != ""){
            echo $message . "<br>";
        }else{
            echo $message_top . "<br>";
            echo "<form id='form' action='entry.php' method='post' enctype='multipart/form-data'>";
            echo "<input type='hidden' name='syori_ku' value='RNEW' >";
            echo $naiyo;
            echo "<input type='submit' name='submit_code' value='選択'>";
            echo "</form><br>";
        }
     ?>
     <a href="index.html">トップページに戻る。</a>
  </body>
</html>


○コードの選択
 コードの一覧を表示し、ラジオボタンで選択、選択ボタンを
 クリックすると登録画面に戻ります。
 戻ったらコード・名前・単価が入力されます。

 この画面ではコード一覧を表示
 POST出来るのは1つの文字列なのでコード・名前・単価
 3つを同時に送る為、3つを/(スラッシュ)で区切り、1つの
 文字列としてPOSTしています。

 受け取り側では/(スラッシュ)で文字を分け、それぞれの値を
 利用しています。

 こちらでは入力画面と自由に行き来する為、入力画面で入力
 した値をクラスを使ってセッション変数にセットしています。

 このように作る事によって入力とコードを自由に行き来し、
 コードを手で入力しなくても良いようにしています。

トップへ戻る