今回は、部署の入力ページについて。
患者さん、職員、職員家族などの分類のみならず。
外来なのか、入院ならどこの病棟なのか、どこの部署の所属職員なのか。
分類
というものが必須です。
そこで、下記を作りました。
CREATE TABLE departments (
dpts_symbol VARCHAR(120) NOT NULL,
dpts_name VARCHAR(120) NOT NULL,
PRIMARY KEY(dpts_symbol)
);
簡単ですね。
部署のシンボルをプライマリーキーにしました。
患者登録のページから、当然ながら患者のみならず職員について、部署を入れないといけませんよね。
部署については、下記SQLにあります。
select * from departments;
+-------------+-----------+
| dpts_symbol | dpts_name |
+-------------+-----------+
| gairai | 外来 |
| kensa | 検査科 |
| qq | 救急 |
| ward3B | 3B病棟 |
| ward4A | 4A病棟 |
| ward4B | 4B病棟 |
| ward5F | 5F病棟 |
+-------------+-----------+
のような形式です。シンプルですね。
なお部署名は架空のものですよ。
部署入力ページのHTMLを示すと、
<tr>
<td>所属部署</td>
<td><select name="dpts_symbol">
<option value=""></option>
<option value="gairai">外来</option><option value="kensa">検査科</option><option value="qq">救急</option><option value="ward3B">3B病棟</option><option value="ward4A">4A病棟</option><option value="ward4B">4B病棟</option><option value="ward5F">5F病棟</option></select>
</td>
</tr>
のようになっているのですが。**部署を変更するたびに、HTML側をいじるのは面倒ですよね。**これがVer1での課題でした。
これに対してどう対処したか、というのが下記のPHPのCodeです。
まず下記の関数を作りまして、、、
function funcListMake(string $a, string $b, string $c): void
{
$db = getDb();
$sql = $a;
$stt = $db->prepare($sql);
$stt->execute();
foreach($stt as $row)
{
echo '<option value="', h($row[$b]) , '">';
echo '', h($row[$c]) , '</option>';
}
};
PHPファイルで、実際には以下のように書きます(HTMLを部分的に取り上げています)。
<tr>
<td>所属部署</td>
<td><select name="dpts_symbol">
<option value=""></option>
<?php
funcListMake('SELECT * FROM departments;', 'dpts_symbol', 'dpts_name');
?>
</select>
</td>
</tr>
すると、再掲しますが、
<tr>
<td>所属部署</td>
<td><select name="dpts_symbol">
<option value=""></option>
<option value="gairai">外来</option><option value="kensa">検査科</option><option value="qq">救急</option><option value="ward3B">3B病棟</option><option value="ward4A">4A病棟</option><option value="ward4B">4B病棟</option><option value="ward5F">5F病棟</option></select>
</td>
</tr>
のようになります。
理屈は簡単ですね。
SQLから読み取ってきて、配列を用いて並べているだけです。
皆さんはどのように対処しているのでしょうか?
何冊か書籍も参考にしたのですが、リストがSQLにあっても直接HTMLに記載しているものばかりでしたがどうなのでしょう。
この関数があるだけで、SQL側をいじると自動的にHTML側が変更されるので便利ですよね。