■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しています。
受け取り側では/(スラッシュ)で文字を分け、それぞれの値を
利用しています。
こちらでは入力画面と自由に行き来する為、入力画面で入力
した値をクラスを使ってセッション変数にセットしています。
このように作る事によって入力とコードを自由に行き来し、
コードを手で入力しなくても良いようにしています。
トップへ戻る