Search A.I.
Menu
ホーム

メールマガジン ホームページプログラミングテク

Windowsテク
Javaアプレット サンプル
Java Q & A
JavaScript Q & A
Perl Q & A
Perl レッスン
PHP レッスン
PHPテク
MS-DOS コマンド集
UNIX コマンド集
SQL コマンド集
SEの基礎講座
WEBシステム開発受注します
]無料フォームメール送信サービス
リンク集
PHP レッスン

1. PHP の基礎
2. PHPの文法、条件式
3. PHPの文法、条件式 - 続き
4. 配列について
5. ハッシュ配列について
6. 関数について
7. 関数について - 続き
8. 文字列操作関数
9. 配列操作関数
10. ファイル操作
11. ファイル操作 - 続き
12. パラメータの受け渡し
13. クッキーとセッション
14. 総合練習
15. メール送信
16. ファイルアップロード
17. クラスについて
18. クラスについて - 続き
19. MySQL
20. MySQL - 続き(1)
21. MySQL - 続き(2)
22. PostgreSQL
23. 総合練習
24. 総合練習解答



23. 総合練習

★課題

レッスンは前回までで終了です。今日は、最後の総合練習として、1つだけ課題を
やっていただきます。

1. 以下の条件を満たすプログラムを作成してください。

(1) ログイン機能、ユーザ管理機能を作成します。
(2) データベースは、MySQLまたはPostgreSQLを使用し、テーブルは、ユーザ
テーブルを作成してください。ユーザテーブルの項目は、ユーザ名、
パスワード、メールアドレスとします。データの方や文字数については、
設計してください。
(3) ユーザ管理機能は、ユーザ一覧表示、ユーザ登録、ユーザ変更、ユーザ削除
を行います。
(4) ユーザのデータ項目は、ユーザ名、パスワード、メールアドレスとします。
(5) ログイン画面には、ユーザ名、パスワードのテキストボックスと、ログイン
ボタンを表示します。
(6) ログイン画面からログインボタンをクリックすると、ユーザテーブルのユーザ
名とパスワードが一致しているかを検索し、一致しているデータがなければ
ログインエラーとします。一致していれば、ユーザ一覧表示画面を表示します。
(7) ユーザ一覧画面は、登録されているユーザの、ユーザ名、メールアドレスを
全て表示します。また、ユーザ名をリンク表示し、リンクをクリックすると、
ユーザ変更画面を表示します。また、ユーザ一覧画面に、ユーザ新規登録
ボタンを表示し、クリックしたら、ユーザ登録画面を表示します。
(8) ユーザ登録画面は、ユーザ名、パスワード、メールアドレスのテキスト
ボックスと、登録ボタンを表示し、登録ボタンをクリックすると、ユーザ
データを新規登録します。ユーザ名は、半角英数字のみで必須、パスワードは
半角英数字のみで必須、メールアドレスは、メールアドレスチェックを行って
ください。
(9) ユーザ変更画面は、ユーザ名、パスワード、メールアドレスのテキスト
ボックスと、変更ボタン、削除ボタンを表示する。各テキストボックスには、
前のユーザ一覧表示画面で選択されたユーザデータをデフォルト表示します。
変更ボタンをクリックすると、該当するユーザデータの内容を変更します。
登録と同様にエラーチェックを行ってください。削除ボタンをクリックすると、
該当するユーザデータの内容を削除します。
(10) 画面のデザインについては、指定はありません。
(11) ログイン画面以外は、ログインしているユーザ以外は見れないようにして
ください。(クッキーを使用)

 

★前回の課題の解答
1. PostgreSQLを使用して、以下のテーブルを処理を実行するプログラムを作成して
ください。

NAME PRICE UP_DATE
Beer 500 2005/01/01 00:00:00
Juice 300 2005/02/23 00:00:00
Coke 150 2004/12/31 00:00:00
Tea 250 2005/04/01 00:00:00
Coffee 200 2005/10/01 00:00:00

(1) まず、トランザクション処理を開始してください。
(2) PRICEが300以下のデータを抽出してください。
(3) 以下のレコードを追加してください。

NAME PRICE UP_DATE
Soda 100 2005/05/01 00:00:00

(4) 全てのデータを抽出し、UP_DATEは、"2005年01月01日 24時00分"のフォーマット
で表示してください。

→下のサンプルを参照してください。

-----------------------------------------------------------------
<HTML>
<BODY>

<?

// データベース接続
$dbh = pg_connect("host=localhost dbname=db_test user=test_user password=test_pass");

//DBの接続に失敗した場合はエラー表示をおこない処理中断
if ($dbh == False) {
print("can not connect db");
exit;
}

// (1) トランザクション開始
$sql = "begin";
if (!(pg_query($dbh, $sql)))
{
print("トランザクション開始処理に失敗しました");
exit;
}

// (2) PRICEが300以下のデータを抽出してください。
$sql = "
select
*
from
drink
where
PRICE <= 300
";

if (!($rs = pg_query($dbh, $sql)))
{
print("SQL Failed " . $sql);
exit;
}

//結果の取得
while ($arr = pg_fetch_array($rs)) {
print $arr["name"] . ",";
print $arr["price"] . ",";
print $arr["up_date"] . "<br>\n";
}

// (3) 以下のレコードを追加してください。
$sql = "
insert into drink (
name,
price,
up_date
) values (
'Soda',
'100',
'2005/05/01 00:00:00'
)";

if (!($rs = pg_query($dbh, $sql)))
{
print("SQL Failed " . $sql);
exit;
}

// (4) 全てのデータを抽出し、UP_DATEは、"2005年01月01日 24時00分"のフォーマット
// で表示してください。
$sql = "
select
name,
price,
to_char(up_date, 'YYYY年MM月DD日 HH24時MI分') as up_date
from
drink
";

if (!($rs = pg_query($dbh, $sql)))
{
print("SQL Failed " . $sql);
exit;
}

//結果の取得
while ($arr = pg_fetch_array($rs)) {
print $arr["name"] . ",";
print $arr["price"] . ",";
print $arr["up_date"] . "<br>\n";
}

//トランザクションの完了
$sql = "commit";
if (!(pg_query($dbh, $sql)))
{
print("コミット処理に失敗しました");
exit;
}

//データベース切断
pg_close($dbh);

?>

</BODY>
</HTML>
-----------------------------------------------------------------

■解説
前回のレッスンを参考にすれば、できるかと思います。

課題には書きませんでしたが、トランザクション終了処理と、データベースクローズは
しておいた方がいいです。

今回の場合は、更新処理が1つしかないので、ロールバック処理は必要ありませんが、
2つ以上の更新処理がある場合は、2つ目以降で、データベースの更新に失敗した時に、
ロールバック処理をしておいた方がいいです。

 




前の章へ 次の章へ


このエントリーをはてなブックマークに追加


OfficeLance

お問い合わせはこちらから