N-BOX
TOP
新着情報
フォトギャラリー
デジモノ
おべんきょう
はまりもの
ひとりごと
カメラ
パソコン
掲示板
プロフィール
リンク
メール
afer_88_31.gif
リンクシェア アフィリエイト紹介プログラム
PSX_120_60
デル5_120x60
富士通ショッピングサイト WEB MART

管理プログラム作成3

 前回はマスターデータの登録及び更新が出来る画面を作成しましたが、今回は学科テーブルの登録画面を作成していきたいと思います。
 管理プログラム作成1で学科テーブルの役割については説明したのですが、簡単におさらいしたいと思います。
 学科テーブルは、学科に対してどの生徒がいるのかを関連付けするためのテーブルです。
 データの取り扱いとしては、学科マスターと生徒テーブルを関連付けするためのテーブルになります。
 学科テーブルでは、学科と生徒の関連を1件づつ登録することで、一人の生徒が複数の学科を持つことが出来、学科に対しての人数に制限がかかることを防いでいます。
生徒テーブル 学科マスター
ID 氏名 ID 学科名
1 A 1 福祉
2 B 2 介護
3 C
4 D
5 E
6 F
 学科テーブルのデータ登録の原理を簡単に表にしたいと思います。
左記のデータがあるとして、生徒テーブルのA、C、Dが学科マスターの福祉、B、E、Fが介護と言う風に分けたい場合に、学科テーブルに登録して、内容を分けていきます。










学科テーブル
ID 学科ID 生徒ID
1 1 1
2 1 3
3 1 4
4 2 2
5 2 5
6 2 6
学科テーブルには、左記のようなデータを登録することで、学科単位に生徒を分けることができるようになります。
 では、実際にプログラムの開発に入っていきたいと思います。
 まず、登録用の画面を作成していきます。
 登録画面では、学科マスターの一覧データと生徒テーブルの一覧データを取得し、それぞれのデータを選択して登録していきます。
 ただし、今回のプログラムでは、今までと違うところがあります。
 今までは、データを登録する際に1件のデータを取得し登録していましたが、今回は学科マスターはひとつですが、生徒テーブルの情報については、複数の情報を一度に取得し、一気に登録していきたいと思います。

 それぞれのデータは、データベースから取得して表示させ、生徒の情報については複数選択が出来るようにJSPファイルを作成しました。
<FORM action="study-add" method="POST">
<TABLE border="0">
<TBODY>
<TR>
<TD>学科マスター</TD>
<TD>生徒データ</TD>
<TD>授業年度</TD>
<TD>学期</TD>
<TD>
</TR>
<TR>
<TD>
<SELECT name="study_master">
<jsp:include page="studymasterselectlist" flush="true" />
</SELECT>
</TD>
<TD>
<SELECT size="10" name="student" multiple>
<jsp:include page="studentselectlist" flush="true" />
</SELECT>
</TD>
<TD>
<SELECT name="year">
<OPTION value="2004">2004</OPTION>
<OPTION value="2005">2005</OPTION>
<OPTION value="2006">2006</OPTION>
<OPTION value="2007">2007</OPTION>
<OPTION value="2008">2008</OPTION>
</SELECT>
</TD>
<TD>
<SELECT name="term">
<OPTION value="1">前期</OPTION>
<OPTION value="2">後期</OPTION>
</SELECT>
</TD>
</TR>
<TR>
<TD colspan="4" align="right">
<INPUT type="submit" name="login" value="登録">
</TD>
</TR>
</TBODY>
</TABLE>
</FORM>
学科マスターと生徒データは、それぞれリスト用のサーブレットを作り、表示されるようにしています。
 さらに生徒データについては、「 multiple」を指定することで、複数選択を可能にしています。

 次に上記のJSPファイルから送られてきた内容で学科テーブルを登録するためのプログラムを作成していきます。
 上記でも述べましたが、今回は複数の生徒情報を取得し、一気に登録する必要があるので、今までとは多少違う部分が出てきます。
 今回は、違うところを中心に説明していきたいと思います。
 まずはじめにパラメータの取得方法が若干変わってきます。
 今までであれば、「getParameter()」メソッドを使用して、JSPファイルからのパラメータを取得していました。
 「getParameter()」メソッドでは、ひとつのパラメータを取得するのは問題ないのですが、今回の生徒データのように複数のデータを扱うことはできません。
 そこで、複数のデータを扱う場合には、「getParameterValues()」メソッドを使います。
 「getParameterValues()」メソッドでは、複数のパラメータを一気に取得することが出来るようになっています。
String student[] = req.getParameterValues("student");
上記が実際にプログラム上でデータを取得している記述です。「String student[] 」は配列になっているので、複数のパラメータを取得できるようになります。
 他のパラメータについては、今までどおりひとつのデータを取得する形になるので、ここでは割愛します。
 パラメータの取得が出来たら、実際にデータをデータベースに登録していくわけですが、ひとつの学科に対して、複数の生徒がいるため、生徒の人数分データを登録する必要が出てきます。
 ここでは、データを繰り返し登録する方法を説明していきたいと思います。
 ここでは、生徒の人数分の登録が必要なので、何人選択したのかを確認する必要があります。
 何件のデータがあるのかを確認するには、さきほど取得した「student」から取得します。
 「student.length」で「student」の中に何件データ入っているのかを取得できますので、その回数分だけループ処理をさせることにします。
for(int i = 0;i < student.length; i++)
 関数のfor文を使って「student.length」の回数だけループさせています。
 あとは、このループの中で、登録処理を行っていけばよいわけです。
 登録する内容は、学科マスターの内容と、生徒の情報、年度などですが、生徒の情報以外は同じ内容になります。
 生徒の情報については、上記のループの情報を利用して、データを変更していきます。
for(int i = 0;i < student.length; i++){
  sql = "insert study_table (studymaster_id,student_id,st_year,st_term)";
  sql = sql + " values (" + study_master + "," + student[i] + "," + year + "," + term + ")";
  statement.executeUpdate(sql);
}
 上記の内容で登録処理を行っています。
 生徒情報の「student[i]」と設定しています。変数「i」を利用し、生徒の情報を順番に登録していきます。
 これで、学科テーブルの登録が完了しました。
 今回のポイントは、複数のデータをパラメータとして取得するときは、「getParameterValues()」メソッドを利用し、JAVAで受け取る際には、変数を配列にして取得することがひとつ!
 もうひとつは、複数のパラメータを一気に登録する際に、件数分のループ処理を行ってデータの登録をすることです。
 次回は、学科テーブルの内容の一覧表示や削除を行いたいと思います。
管理プログラム作成2  UP  管理プログラム4