スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

Access ユーザーのためのWeb アプリ開発まとめ - データ送受信

$_POST 変数による、データ送受信。

修行を開始した当初の「フォームの入力と結果表示」について手さぐりで悪銭苦闘していた時期。
ちょっと古い参考書から始めて、そこにはPHPしかなったため当初はこの方法しか知らなかったのだが・・・一応まとめておく。

検索処理まとめ01
ヒィヒィ嘆きながら何とかMySQLのデータを取得する方法が分かり、いそいそと簡単な検索処理に挑んでみた。

もう捨ててしまったが、最初に書いたPHPファイルはこんな感じ。
<?php
$商品名="";
if(isset($_POST["商品番号"])){
$DBHOST="mysql:host=localhost;dbname=sakila;charset=UTF8";
$DB=new PDO($DBHOST,"access","pass1234");
$SQL="Select * from film_list Where FID =".$_POST["商品番号"];
$DATA=$DB->query($SQL);
$ROW = $DATA->fetch(PDO::FETCH_ASSOC);
$商品名=$ROW["タイトル"];
}
Print "<h1>商品検索</h1>";
Print "<form method='POST'>";
Print "商品番号 : <input name='商品番号'>";
Print "<input type='submit' value='検索'>";
Print "商品名 : <input type='text' value=".$商品名.">";
Print "</form>";

?>
たったこれだけのスクリプトにさんざん試行錯誤しながら、しかし、無事にデータが表示された時には感動だった。(´∀`)

検索処理まとめ02しかし・・・数秒後には嘆息。「入力した商品番号」が消えてる・・・こんなのアカン !! (´д`)
しばし悩んで気がついた。POST送信すると全部再描画となるのだから、検索結果だけではなく、入力した値もすべてPOSt変数として処理しなければならないという事か !! ( ;´・ω・`)

検索処理まとめ03
またまた試行錯誤しつつ、何とか目的が達成出来た。
<?php
$商品名="";$商品番号="";
if(isset($_POST["商品番号"])){
$DBHOST="mysql:host=localhost;dbname=sakila;charset=UTF8";
$DB=new PDO($DBHOST,"access","pass1234");
$SQL="Select * from film_list Where FID =".$_POST["商品番号"];
$DATA=$DB->query($SQL);
$ROW = $DATA->fetch(PDO::FETCH_ASSOC);
$商品名=$ROW["タイトル"];$商品番号=$ROW["FID"];
}

Print "<h1>商品検索</h1>";
Print "<form method='POST'>";
Print "商品番号 : <input name='商品番号' value=".$商品番号.">";
Print "<input type='submit' value='検索'>";
Print "商品名 : <input type='text' value=".$商品名.">";
Print "</form>";

?>
赤文字が追加した処理だが、入力綱目や表示項目が増えるとかなり面倒くさくなりそう・・・( ;´・ω・`)
が、しかし更に問題が !
別の商品番号をテストしようと、キーボードの[F5(更新)キー]を押してもテキストボックスがクリアされない !!
こんなの参考書にも書かれてないし、何とか見つけたネットの情報で Firefox 特有の問題と判明した。
たしかに、クロームなど他のブラウザでは問題なくクリアされるのだった。
しかし、欠陥ではなくて、これはこれで親切な仕様という場合もありそうだ・・・Firefox 捨てたくないし、どうする ??( ;´・ω・`)

ネット情報でかなり面倒くさい方法がいくつか紹介されていたが、どれも一長一短で確実にクリアされる方法は見つけられなかった。
ctrl + F5 キーというのは有効そうだが、現在の最新版(たしか58以降くらい)では効かないのだった。※ESR版では効果があった
そうだ、手を抜いてフォームの Action に何も書いてなかったではないか !! と、気がついた。
$ファイル名=pathinfo(__FILE__, PATHINFO_BASENAME);
Print "<h1>商品検索</h1>";
Print "<form method='POST' action=".$ファイル名." >";
Print "商品番号 : <input name='商品番号' value=".$商品番号.">";
Print "<input type='submit' value='検索'>";
Print "商品名 : <input type='text' value=".$商品名.">";
Print "</form>";
PHPの完全ファイル名は __FILE__ プロパティ、じゃなかった定数で取得出来るので、pathinfo 関数と組み合わせてやれば、実行中のファイル名を取得出来る事も覚えた。
・・・が、きっちりコードを書いても効果はなかった・・・残るはRESETか・・・( ;´・ω・`)
Print "<input type='reset' value='クリア'>";
とりあえず"クリア"ボタンを置いてリセットとする事にしてから・・・って、何とこれまた効果なし !! (;´Д`)

Fifefox で完全リロードする

あきらめて他のあれこれに取り組みつつ、ある日ふとしたはずみで解決方法を発見した。何と、コードに自身のURLをきちんと書いてやるだけで良かったのだ !!
ただし、フォームとPOSTではなくボタンのクリックイベントで。
Print "<input type='button' value='リロード' 
onclick='location.href="."\"".$ファイル名."\""."'>";
何度もエラーに悩まされながら、慎重にエスケープ文字で変数を組み立ててと。
検索処理まとめ04ゾンビのような入力文字がようやく消えてくれた。
javaScript で自在に要素をコントロール出来る事を知るまでは、こんなつまらない苦労が耐えなかった・・・
まとめになってないが、今回はここまで。( ;´・ω・`)
スポンサーサイト

Access ユーザーのためのWeb アプリ開発まとめ - データベース処理

これまでに分かった事のまとめ。
Webアプリ開発には基本的なHTMLとCSSタグ以外に最低でも MySQL・PHP・JavaScript の三種のソフトウエアのコマンドや関数の理解と使い分けが必要なためいったん整理する事にした。
不特定多数ユーザー対象ではなくあくまで小規模企業の社内システム前提につき緻密なエラー処理は省略しているし、日本語の変数名や関数名も遠慮なく使用している。
PHPとJavaScriptの文法やコマンドは共通している部分も少なくないので、その場合は説明文の末尾に [JS] と記述。

MySQLデータベースへの接続

[PHP]
$DBHOST="mysql:host=localhost;dbname=sakila;charset=UTF8";
$DB=new PDO($DBHOST,"access","pass1234");
  • 赤色部分はデータベース運用内容に応じて変更※$DBHOST$DBという変数名は任意
  • 別サーバーのDBを指定する場合はそのIPアドレスを書く(引用符は不要 ex: host=192.168.0.50)
  • ページ内での同一データベースの使用であれば接続処理は一度だけで良い

SQL実行

[PHP]※二重スラッシュはPHPやJavaScriptでのコメント文
$SQL = "Select * from film_list Where FID=100 Order by FID ";
$DATA=$DB->query($SQL); // クエリの実行
$件数 = $DATA->rowcount(); // 結果行数の取得
$ROW = $DATA->fetch(PDO::FETCH_ASSOC); // 先頭行の取得
  • SQL文は単なるサンプル
  • オブジェクト変数のプロパティやメソッドは、VBAのようなドットではなく"->"で結ぶ
  • クエリの結果行数をカウントする場合は rowcount() 関数を使用。該当データがなければ値は 0 になる
  • 1行目の取得だけで良い場合は fetch() 関数を使用
  • Select 文以外のSQLでは3行目以降は不要

結果による条件分岐

[PHP][JS]
if($件数 == 0){ exit; }
  • データが存在しなかった場合の処理※実際にはメッセージ表示等の注意喚起が必要だがここでは省略
  • if 文の条件判定部分は必ず ( ) で囲む事
  • 実行部分は中カッコで囲むがこの例のように単純な1コマンドだけの場合は省略可
  • 値の比較は等号(イコール)記号を二重にしないと動作しない※等号記号1個でもエラーは発生しないので注意が必要
  • スクリプトを中断して以降のスクリプトを実行させない場合は exit; とする
  • 変数名は必ず $ で始まる語句とする[PHPのみ]
  • スクリプトコードの末尾には必ずセミコロンが必要

データ(カラム値)の取得

[PHP]
$ROW["カラム名"]  // ex:$ROW["タイトル"]

複数カラム値の連結

[PHP]
Print "タイトル =".$ROW["FID"].":".$ROW["タイトル"];
  • 出力結果は タイトル =1:ACADEMY DINOSAUR
  • 値の連結にはドットを使う

ループ処理

[PHP]
Foreach ($DATA as $ROW){
Print文による出力など
:
:
}

ユーザー定義関数の作成

[PHP]ではすべて function であり、Access VBAのような Subプロシージャは存在しない[JS]
function 削除実行($RECID){
global $DB;
$SQL="Delete from テーブル名 Where RECID =".$RECID;
$DB->query($SQL);
}
  • function 関数名(引数) とし、{ } (中カッコ)内に処理を書く{JS}
  • 呼び出し側の変数を参照する場合は関数側で global としなければ未定義エラーとなる
  • Where 条件のカラム名と変数名は単なるサンプル

関数の利用方法

[PHP][JS]
関数名($引数名);
ex.
削除実行(155);   // または
$REC=155;
削除実行($REC); // とする
  • 関数本体にも引数にも文字列型や数値型といった型指定はない
  • 処理内容によっては引数なしも可
  • 関数内で既定値を定義しておけば、呼び出し側での引数省略が可能
    function TEST($A=50){
    Print $A;
    }
    TEST();
    ブラウザに読み込むと 50 と表示される。
    JavaScript では変数名と出力コマンドが異なるので注意
    <script>
    function TEST2(A=550){
    document.write(A);
    }
    TEST2();
    </script>

    外部ファイルによるデータベース処理

    [PHP]
    • 本記事冒頭のDB接続部分を専用のPHPファイルに記述しておけば、include 文で外部参照とするだけで接続が完了する
    • 呼び出し側のコード
    • include("DB_LIST_SHOUHIN.php");
    • include文はDB接続を使用するスクリプトコードよりも前になければならない
    • include を実行すると、そのファイルに記述されているすべてのスクリプトを読み込んで実行するため、文字出力するようなコードをユーザー定義関数以外の場所に書いてはならない
    • ユーザー定義関数も、同一ページ内で記述したのとまったく同様に利用可能となる
    • よほどの小規模アプリでなければ、当然この形態が基本となる
    • 複数のデータベースを使い分ける場合は接続処理も関数化する必要があるだろう

    PHPからJavaScript 関数への引き数渡しにおける注意点

    [PHP]
    $ROW関数による文字列変数渡しを行うには この記事 を参照。

コード入力でマスタの情報を表示 2

コードに対応する商品名をテキストボックスに転記する処理だが、前回の方法では一度に 1項目しか転記出来ない。
Ajax 活用とはいってもデータベース処理自体はPHPスクリプトによる処理のため、JavaScriptやAccessのVBAのようにフォーム上の任意のテキストボックスに自由自在に値を転記というわけにはいかないので発想を変えるしかない。
解決策のひとつとしては、Ajax の $.post メソッドで得られるのは呼び出されたPHP側で作成されたhtmlの内容そのものなので、マスタテーブルにある多くのカラムの情報を表示するには、PHP側で情報表示ブロックを生成してしまえば良いだろう。

DB検索基本06
今回の用途では商品名表示用のテキストボックスは必要ないので省略した。黄色のマーカー部分には意味はないが、フォームを差し込んだらどうなるか見てみたくて試してみようとしているだけである。( ´ー`)

DB検索基本07
商品番号を入力してマスタの情報がテーブル形式で表示された。全然クールではないが、お化粧は二の次なもので・・・
当然だが、マーカー部分は無事に下側に押し出されている。( ´ー`)
勝手に移動するのが気持ち悪ければあらかじめ高さを確保しておいてやれば良い。
<div id="商品概要" style="height:200px"></div>
当然位置が固定されるので、気分(仕様変更)で想定よりも商品情報の高さが増加した場合はその影に隠れてしまう事になる。(*´・ω・)
<head>
<script type = "text/javaScript" src ="JS/jquery-3.3.1.min.js"></script>
<title>検索サンプル ( ´ー`)</title>
<h1>検索の基本</h1>
</head>

商品番号 :
<input id="商品番号" type="text" style="width:60px" onchange="詳細情報()">
<input type="button" value="商品リスト" onclick="リスト()">

<br>商品概要
<div id="商品概要"></div>
<br><mark>ここはどうなるのかな(*´・ω・)</mark>

<script>
function 詳細情報(){
var ID=商品番号.value; // テキストボックスの値
if(ID=="")return;
$.post("DB_LIST_SHOUHIN.php",{商品番号:ID,MODE:"詳細情報"},
function(data){商品概要.innerHTML=data;}) //$("#商品概要").html(data);でも同じ
}
function リスト(){
window.open("DB_LIST_SHOUHIN.php");
alert("詳細情報を表示します"); // 実行を止める処理を入れないと検索後の情報にならない
詳細情報(商品番号.value);
}
</script>
今回の「検索の基本」画面のスクリプトコードはこれだけ。( ´ー`)
ひとつのPHPファイルを使い回すので、分岐処理の判断用に MODE というキーを追加してある。
データベース処理用の"DB_LIST_SHOUHIN.php"ファイルには冒頭に処理分岐用コードを追加しておく。
これにより、POSTメソッドで "MODE"というキーが送信されて来た場合に 商品情報() 関数に分岐する。
<?php
$DBHOST="mysql:host=localhost;dbname=sakila;charset=UTF8";
$DB=new PDO($DBHOST,"access","pass1234");
if(isset($_POST["MODE"])){商品情報($_POST["商品番号"]);exit;}
if(isset($_POST["商品番号"])){商品検索($_POST["商品番号"]);exit;}
// exitしないと後のスクリプトが実行されてしまう

"DB_LIST_SHOUHIN.php"内で商品情報を表示する関数ブロック。
function 商品情報($FID){
global $DB;
$SQL = "Select * from film_list Where FID=".$FID;
$DATA=$DB->query($SQL); // クエリの実行
$件数 = $DATA->rowcount(); // 結果行数の取得
if($件数 == 0){ Print "<font color=red>該当なし (´д`)</font>";exit;}
$ROW = $DATA->fetch(PDO::FETCH_ASSOC); // 先頭行の取得
Print "<table border='1' width='800'>";
Print "<td width='100'>商品番号</td><td>".$ROW["FID"]."</td><tr>";
Print "<td>タイトル</td><td>".$ROW["タイトル"]."<tr>";
Print "<td>概要説明</td><td>".$ROW["概要"]."</td><tr>";
Print "<td>出演者</td><td >".$ROW["出演者"]."<tr>";
Print "<td>カテゴリ</td><td>".$ROW["カテゴリ"]."<tr>";
Print "</table>";
}
少し行数が多いのはテーブル形式でデータを表示してるためであり、スクリプト自体では大した事はしていない。
ここで生成したテーブルは商品概要.innerHTML=data; により、「検索の基本」画面の"商品概要"要素内に表示される。
このようにページ更新なしで自由自在に表示内容が変更出来るのは、innerHTML という有用なプロパティのおかげ。( ´ー`)

検索用ダイアログフォームはムリか

さて。「検索の基本」画面で"商品リスト"ボタンを押すと、前回同様検索用ページを表示するのだが、ここで問題発生・・・
DB検索基本08a
window.open メソッドでは、ウィンドウを開く時のサイズ指定も可能なのだが、Accessのフォームオプションで"dialog"を指定した場合のようにモーダルウィンドウにはならないので、JavaScript であってもポップアップの検索用ウィンドウというのはカンタンには実現出来ない事が分かった。しかも、今回のように検索ウィンドウで選択操作をして戻ってきても「検索の基本」画面では元の商品番号の情報が再度表示されるだけで、情報更新にならないのである。(*´・ω・)
これは、新しいウィンドウを開いてからも後に続くコードが実行されるため("商品番号.value"の値が元のまま)であり、サンプルコードのように処理が停止されてユーザーの操作待ちとなるような処理を入れてやれば無事に更新される。つまり実用にはならない。

function リスト(){
window.open("DB_LIST_SHOUHIN.php");
alert("詳細情報を表示します"); // 実行を止める処理を入れないと検索後の情報にならない
詳細情報(商品番号.value);
}
jQuery UI の"Widgets"を利用すると実現出来そうなのだが、後の楽しみにしておく事にしよう。( ´ー`)

コード入力でマスタの情報を表示

"検索の基本画面"で商品番号を入力したら対応する商品名を表示するようにしてみよう。

"DB_LIST_SHOUHIN.php"では1つのPHPファイルで複数の処理を兼用するので、データベース処理はすべて関数化してある。
$_POST 関数の内容によって目的の関数を呼び出すようにするためである。

まず、処理分岐用の $_POST 変数を調べて分岐させるコードとユーザー定義関数を追加する。
分岐のコードは出来るだけスクリプトの最初の方、データベース接続の直後くらいに書かないと不具合の元になる。
ただし、関数側ではここで定義したデータベース接続情報を利用するので、このように $DB 変数定義の後にしないと実行時に変数未定義エラーとなる。
$DBHOST="mysql:host=localhost;dbname=sakila;charset=UTF8";
$DB=new PDO($DBHOST,"access","pass1234");
if(isset($_POST["商品番号"])){商品検索($_POST["商品番号"]);exit;} // exit しないと後のスクリプトが実行されてしまう
商品番号が POST送信されて来た場合は 商品検索() 関数を実行しているが、直後に exit を書いておいて、以降のスクリプトを実行しないようにしている。
function 商品検索($商品番号){
global $DB;
$SQL="Select * from film_list Where FID =".$商品番号;
$DATA=$DB->query($SQL);
$ROW = $DATA->fetch(PDO::FETCH_ASSOC); // 先頭行を取得
if(isset($ROW["FID"])) // 該当データの有無をチェック
Print $ROW["タイトル"];
else Print "該当なし (´д`)";
}
商品検索() 関数では、引数で受け取った商品番号を抽出条件とするSQL文を生成し、該当レコードがあれば"タイトル"カラムの値を出力、なければメッセージ文を出力するようにしている。とりあえずデータベース関係はこれで完了。

<input ID="商品番号" type="text" style="width:60px" onchange="DB商品検索()">
呼び出し元の"検索の基本"画面では、商品番号テキストボックスに onchange イベントを追加する。これにより、テキストボックスへの入力後に Enter キーを押すと JavaScript 関数が実行されるようになる。※PHP関数は呼び出せない
このイベントで実行する DB商品検索() は Ajax を使ったユーザー定義関数。
function DB商品検索(){
var ID=商品番号.value; // テキストボックスの値
$.post("DB_LIST_SHOUHIN.php",{商品番号:ID},
function(data){商品名.value=data; }
)
}
ID 変数にテキストボックスの値を格納し、POST送信を内部実行する $.post メソッドの引数とする。中括弧でくくる二番目の引数には POST変数名 : 値または変数名 とする。複数セットを送信するには、カンまで区切って同形式で羅列すれば良い。第一引数のPHPファイルのスクリプトでは、POST送信されたものとして処理すれば良いのである。"DB_LIST_SHOUHIN.php"では、結果をカラムの値またはメッセージ文字列が出力されるので、単純に {商品名.value=data;} とするだけで、"商品名"テキストボックスに結果が表示される。

2018-05-27_DB検索基本04
商品番号に"1000"と入力してEnterキーを押して、無事に商品名が表示されたところ。( ´ー`)

上記で分かるように、これらの処理に関して難しい問題は特にないのだが注意点がひとつある。
Ajaxの $.post メソッドでは、指定した PHPファイルの内容がそのまま実行されるので、exit とする前に文字列などが出力されるようなコードが書かれていた場合、関数実行結果の文字列としてそのまま付加されてしまうのだ。

例えば・・・
こんな事に !!
$DBHOST="mysql:host=localhost;dbname=sakila;charset=UTF8";
$DB=new PDO($DBHOST,"access","pass1234");
if(isset($_POST["商品番号"])){商品検索($_POST["商品番号"]);exit;}
などという文字列が存在した場合に、

2018-05-27_DB検索基本05
こうなってしまう。( ≧Д≦)
本記事の冒頭で、POST変数による分岐処理をスクリプトの先頭の方に書くべきとしたのはこれが理由だが、このように PHPスクリプトの外側に文字列が存在するとお手上げなのだった。<style> ~ </style> のようなスタイル指定タグなどでも同様である。
余計な文字が表示されてしまう原因がなかなか理解出来ず散々失敗したので忘れないうちに。(;`ー´)

検索画面から呼び出し元の画面にマスタの情報を転記

「コード番号を入力したら品名を表示」という、データベースアプリとして基本中の基本である。
まずは、検索画面を表示して、目的の行を選択したら元の画面の品名項目に転記するというこれもド定番の機能。
理解しやすいよう、今回もあえてエラーチェックやセキュリティ関係の処理を省略して必要最小限のコードとしている。

2018-05-26_DB検索基本01
まずはほとんどHTMLタグだけのカンタンな登録画面を作成。以降は便宜上"検索の基本画面"と称する事にする。
<head>
<script type = "text/javaScript" src ="JS/jquery-3.3.1.min.js"></script>
<title>検索サンプル ( ´ー`)</title>
<h1>検索の基本</h1>
</head>

<form name="検索メニュー" method="POST">商品番号 :
<input ID="商品番号" type="text" style="width:60px">
<input type="button" value="商品リスト" onclick="DB処理()">
<input id="商品名" style="width:400px">
<br>商品概要
<div id="商品概要" style="width:600"></div>
</form>

<script>
function DB処理(){
window.open("DB_LIST_SHOUHIN.php");
}
</script>
検索画面での処理に JavaScript を使用するので、操作対象要素に id 名を付加している。
"商品番号"に何も入力せずに"商品リスト"ボタンをクリックすると、onclick イベントによって"DB_LIST_SHOUHIN.php"という検索用PHPファイルを開く。window.open メソッドによって、基本的には新規タブになるのだが、Fifefox ではオプションメニューの"新しいウィンドウではなく新しいタブに開く"項目がオフだと、そのまま新規ウィンドウを開いてしまうので注意が必要。

2018-05-26_DB検索基本02
今回の"DB_LIST_SHOUHIN.php"には最低限の機能しかないので実用的ではなくあくまでサンプルだが、商品のリンクをクリックすると呼び出し元の画面の要素項目に値を転記してウィンドウを閉じるという基本動作を備えている。
<?php
$DBHOST="mysql:host=localhost;dbname=sakila;charset=UTF8";
$DB=new PDO($DBHOST,"access","pass1234");

$開始位置=0;

商品リスト($開始位置);

function 商品リスト($開始位置){
global $DB;
$SQL = "Select * from film_list Order by FID ";
$SQL = $SQL." limit $開始位置,20";
$DATA=$DB->query($SQL); // クエリの実行
$件数 = $DATA->rowcount(); // 結果行数の取得
if($件数 == 0){ Print "<font color=red>該当なし (´д`)</font>";exit;}

Print "<form >";
Print "<table>";
Print "<th width=40>番号</th><th width=300>タイトル</th><th>ジャンル</th><th>概要</th><tr>";
Foreach ($DATA as $ROW){
$ID=$ROW["FID"];$TITLE=$ROW["タイトル"];$概要=$ROW["概要"];
Print "<td>".$ROW["FID"]."</td>";
Print "<td><a href ='' onclick='商品名転記(".$ID.",\"$TITLE\",\"$概要\")'>"
.$ROW["タイトル"]."</a></td>";
Print "<td>".$ROW["カテゴリ"]."</td>";
Print "<td style='font-size:small'>".mb_substr($ROW["概要"],0,50)."</td>";
Print "</tr>";
}
Print "</table>";
Print "</form>";
}
?>

<script>
function 商品名転記(ID,商品名,概要){
var A=window.opener;
A.document.getElementById("商品番号").value=ID;
A.document.getElementById("商品名").value=商品名;
A.document.getElementById("商品概要").innerHTML=概要;
window.close();
}

</script>
PHPスクリプトでは、"film_list"ビューを使用してSQLを組み立てている。$開始位置 変数を使っているのは以後の機能改良に備えての事である。
for each ループの中では、前回の記事で取り上げたように PHP から JavaScript 関数を呼び出すため、文字列型のカラム値を変数に格納してから、エスケープ文字でくくって表示させている。
ここで最も重要なのは、"タイトル"カラムのリンククリックによって動作する JavaScript の 商品名転記() 関数なのだが、前回同様呆気ないくらいにカンタンに済ます事が出来る。
今回は子画面ではなく新しいウィンドウなので、呼び出し元画面を参照するために使用するのが opener プロパティに変わるだけ。
処理が完了した後に自分自身を閉じるのも window.close() メソッドのみ。分かってみたらこんなにカンタンだったのだ。( ´ー`)

オブジェクトとプロパティの表記いろいろ

ちなみに、上のように教科書的な 商品名転記() 関数のコードを下記のように書いても得られる結果はまったく同じである。
function 商品名転記(ID,商品名,概要){
var A=window.opener.document;
A.getElementById("商品番号").value=ID;
A.getElementById("商品名").value=商品名;
A.getElementById("商品概要").innerHTML=概要;
window.close();
}
オブジェクト変数に document オブジェクトまで含めた例。
function 商品名転記(ID,商品名,概要){
opener.document.getElementById("商品番号").value=ID;
opener.document.getElementById("商品名").value=商品名;
opener.document.getElementById("商品概要").innerHTML=概要;
close();
}
変数への代入を省略し、更にwindow.opener 等の window オブジェクトも省略。
そして、jQuery ライブラリが組み込まれているとここまでカンタンになる。( ´ー`)
function 商品名転記(ID,商品名,概要){
opener.商品番号.value=ID;
opener.商品名.value=商品名;
opener.商品概要.innerHTML=概要;
close();
}
横着派にとっては、これだけでも jQuery 利用の価値はあるな。( ´ー`)

2018-05-26_DB検索基本03
商品番号20番のタイトルをクリックすると検索画面が閉じて"検索の基本画面"が表示される。
画面はそのままの状態で、更新が必要な要素のみが書き換わっている。( ´ー`)

実際に実用とするには機能拡張が必要なのはいうまでもないが、それらはちょっと後回しにして・・・

次回は、検索ウィンドウを使わずに品番入力で即商品名を表示させるというもうひとつの命題に取り組む。( ´ー`)
アクセス数
カレンダー
06 | 2018/07 | 08
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30 31 - - - -
最新記事
カテゴリ
PHP (5)
最新コメント
月別アーカイブ
全記事表示リンク

全ての記事を表示する

リンク
検索フォーム
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。