Presentation is loading. Please wait.

Presentation is loading. Please wait.

Webコミュニケーショングループ ~CGI勉強会~ (データーベース編)

Similar presentations


Presentation on theme: "Webコミュニケーショングループ ~CGI勉強会~ (データーベース編)"— Presentation transcript:

1 Webコミュニケーショングループ ~CGI勉強会~ (データーベース編)
U4山本 健友

2 本日の予定 データベース(PostgreSQL)の利用 プログラム(Perl)からデータベースを操作 簡易ブックマークサイトの作成

3 psqlの基本的な使い方 ・データベースの作成 ・データベースの削除 ・データベースの一覧表示 $ createdb [データベース名]
$ dropdb [データベース名] ・データベースの一覧表示 $ psql –l ・データーベースに接続 $psql [データベース名]

4 テーブルの作成 1 id url title description timestamp 1 http://www.google.com/
Google 検索サイト :51:34 2 Yahoo! :51:57 3 はてな 人力検索サイト :52:11

5 テーブルの作成 2 ・以下の内容のファイルを作成(createtable.sql)
create table kyamamoto_bookmark ( id serial primary key, url varchar(255) not null, title varchar(255) not null, description text, timestamp timestamp default now() ); ・バッチファイル(SQL文のスクリプトファイル)の実行 test_db=> \i ‘/home/testuser/・・・/createtable.sql’ test_db=> \d (作成されたテーブルの確認)

6 メタコマンド ・データベースの一覧表示 ・テーブルの一覧表示 ・指定テーブルの情報表示 ・データベースの切断
test_db=> \list (\l) ・テーブルの一覧表示 test_db=> \d ・指定テーブルの情報表示 test_db=> \d [テーブル名] ・データベースの切断 test_db=> \q

7 データの挿入 ・INSERT文 書式: test_db=> insert into [テーブル名] (column, ・・・) values (expression, ・・・); ・column: データを挿入する列名 ・expression: 挿入する値 例) test_db=> insert into kyamamoto_bookmark (url, title, description) values (' 究室'); 

8 テーブルの検索 ・SELECT文 ・WHERE句(検索条件の指定) 例)指定したテーブル内の全ての行を表示
test_db=> select * from kyamamoto_bookmark; 例)指定したテーブル内の列名url,titleの全ての行を表示 test_db=> select url, title from kyamamoto_bookmark; ・WHERE句(検索条件の指定) 例)urlに「.com」を含む行を表示 test_db=> select * from kyamamoto_bookmark where url ~ ‘\\.com’; 例)列名idが5の行を表示   test_db=> select * from kyamamoto_bookmark where id = 5;

9 データの削除 ・DELETE文 注)WHERE句で条件を指定していない場合, 全てのデータが削除されるので注意
例)指定したテーブルの全てのデータを削除 test_db=> delete from kyamamoto_bookmark; ・全データ削除の場合TRUNCATE文のほうが高速 例)test_db=> truncate from kyamamoto_bookmark; 例)列名idが5の行を削除 test_db=> delete from kyamamoto_bookmark where id=5;

10 データベース利用の流れ データベースに接続(connect) SQL文の準備(prepare) SQL文の実行(execute)
実行結果の取得(fetchrow_array等) 切断(disconnect)

11 データベースへの接続,切断 #!/usr/bin/perl -w use strict; use DBI; # 接続の設定
my $dbname = ‘test_db'; my $user = ‘testuser'; my $passwd = ‘testuser'; my $tbname = 'kyamamoto_bookmark'; my $host = 'localhost'; # データベースに接続 my $db = DBI->connect( "DBI:Pg:host=$host;dbname=$dbname", $user, $passwd ) || die "DBI connect failed : $DBI::errstr"; # SQL文の準備,実行 ・・・ # 実行結果の取得 # 切断 $db->disconnect;

12 SQL文の準備,実行 ・SELECT文によるテーブル検索の実行 # SQL文の準備
my $sql = "select * from $tbname"; my $st = $db->prepare( "$sql" ); # SQL文の実行 my $res = $st->execute || die $DBI::errstr;

13 実行結果の取得 ・fetchrow_arrayメソッドとwhile文により実行結果を一行ずつ取得し,配列に格納
while ( = $st->fetchrow_array ){ print “$values[0]\t$values[1]\t$values[2]\t$values[3]\t$values[4]\n”; } 実行例) Yahoo! 検索サイト :49:45 Google 検索サイト :50:03 はてな 人力検索サイト :27:10

14 プログラムの作成 挿入したデータをブラウザで確認できるようにしてください.
ブラウザからデータベースにデータをPOSTし,一覧で表示確認ができる簡易ブックマークサイトを作成してください. ブラウザからブックマークを削除できるようにしてください.

15 補足資料 文法チェック $ perl -cw [ファイル名] プログラムの実行 $ perl [ファイル名]
ブラウザから実行するには権限を変更 $ chmod 755 [ファイル名]

16 前回の資料の一部

17 スカラ変数 スカラ値(数値,文字列値,未定義値など)を1つだけ保持できる変数 $var = “123”; print “$var\n”;
$value = $var + “456”; #数値の和を計算 print “$value\n”; $value = $var . “456”; #文字列の連結 実行例: 123 579 123456

18 スカラ変数 スカラ変数では数値と文字列の区別は無く,スカラ値は自動的に数値あるいは文字列に変換される “・・・・・” 変数展開が行われる
“・・・・・” 変数展開が行われる ‘・・・・・’ 変数展開は行われない $var = “123”; print “$var\n”; print ‘$var\n’; 実行例: 123 $var\n

19 配列変数 @language = ( 'English', 'Japanese', 'Danish', 'German' );
# 上記と同じ意味 # $language[0] = ‘Engilsh’; $language[1] = ‘Japanese’; # $language[2] = ‘Danish’; $language[3] = ‘German’; foreach ){ print "$_\n"; } 実行例: English Japanese Danish German

20 ハッシュ変数 %hash = ( '氏名' => '山本健友', '性別' => '男',
'住所' => '京都府京田辺市' ); # 上と同じ意味 # $hash{'氏名'} = '山本健友'; # $hash{'性別'} = '男'; # $hash{'住所'} = '京都府京田辺市'; foreach ( values %hash ){ print "$_\n"; } 実行例: 京都府京田辺市 山本健友

21 演算子 算術演算子「+, -, *, /, %」 加算,減算「++, --」
比較演算子「==, !=, <, >, <=, >=」 文字列用比較演算子「eq(等しい), ne(等しくない)」

22 条件分岐 if(条件式){ブロック} If(条件式:1){ブロック:1}elsif(条件式:2){ブロック:2}else{ブロック:3}
my $my_favorite = "orange"; print "What is your favorite fruit?"; chomp(my $your_favorite = <STDIN>); if($my_favorite eq $your_favorite){ print "Me, too!\n"; } else{ print "I love ${my_favorite}s.\n"; } 実行例: $ perl furuit.pl What is your favorite fruit?orange Me, too! $ perl fruit.pl What is your favorite fruit?banana I love oranges.

23 繰り返し while(条件式){ブロック} for(初期化; 比較式; 終端式){ブロック} my $i = 0;
while($i<5){ print "Hello, World\n"; $i++; } for(my $j=0; $j<5; $j++){

24 繰り返し(foreach文) 配列要素を順番に読み書きするためのもの ハッシュ変数の操作にも利用可能 # 配列の要素を順番に出力
foreach $name print “$name\n”; } my %animals = (‘dog’=>’ Bow-Wow!!’, ‘cow’=>’mooo!!’); foreach (keys %animal){ print ”$_ : $animal{$_}\n”;

25 CGIを書いてみる 1.メモ帳,秀丸等で以下のソースを記入 #!C:/perl/bin/perl -w use strict;
print <<END_OF_HTML; content-type: text/html <html> <head> <title>Hello CGI</title> </head> <body> <h1>Hello CGI!!</h1> </body> </html> END_OF_HTML

26 CGIを書いてみる 2.ファイル名を「[名前].cgi」で保存
3.「\\kyamamoto\webcomi」に自分の名前のディレクトリを作成し,そのディレクトリにコピー 4.ブラウザで にアクセス

27 CGIへパラメータを送信 <html> <head> <META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=EUC-JP"> <title>名前の入力</title> </head> <BODY> <form action="./decode.cgi"> お名前: <input type="text" name="your_name"> <input type="Submit" value="送信"> </form> </BODY> </html>

28 CGIへパラメータを送信 #!C:/perl/bin/perl use CGI; # CGIモジュールを使用 $cgi=new CGI;
$your_name = $cgi->param(“your_name”); # ここでパラメータを受け取る print <<HTML; Content-type: text/html <html><head> <META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=Shift_JIS"> <title>結果</title></head> <BODY> $your_nameさん、いらしゃいませ </BODY></html> HTML

29 CGIへパラメータを送信


Download ppt "Webコミュニケーショングループ ~CGI勉強会~ (データーベース編)"

Similar presentations


Ads by Google