mysql:4230
From: "tamuzin2" <"tamuzin2" <tamuzin@xxxxxxxxxx>>
Date: Mon, 27 Aug 2001 15:22:02 +0900
Subject: [mysql 04230] 画像を表示
田中です。 画像をアップロードしてデータベースに挿入させて、 そのデータベースのデータを表示させるPerl DBIを組んでいるのですが、 なにせ初心者な者でなかなか上手くいきません。 下記のようなプログラムでアップロードさせて、 #!perl ##《設定》 #データベースインターフェースのドライバ指定 $db_db="DBI:mysql:shopping:localhost"; #MySQLのユーザーネーム $db_usnm="root"; #MySQLのパスワード $db_pw="cq3jfgc"; #プログラムタイトル $pg_title="kanrigamen"; #ページの背景色 $pg_haikei="#FFFFFF"; #ページの見出し $pg_midasi="◆ショッピング管理ページ◆"; #ページの見出しの位置 $pg_mdaichi="center"; #フォームの属性 $zokusei="post"; #フォームを処理するプログラム指定 $form_pg="syouhin_kanri.cgi"; #フォームテーブルの外枠の幅 $tb_haba="70"; #フォームテーブルの外枠の太さ $tb_futosa="3"; #フォームテーブルの内枠の太さ $tb_futosa2="4"; #フォームテーブルの枠の余白 $tb_yohaku="5"; #フォームテーブルの位置 $tb_ichi="center"; #フォーム記入漏れ $taipumisu="記入漏れがあります。"; #モジュール&ライブラリの指定 require"jcode.pl"; use DBI; use CGI_Lite; use File::Copy; #CGI_Liteをライブラリ関数をコールする為の宣言 $cgi= new CGI_Lite(); #受け取ったフォームデータを置くディレクトリを指定 $cgi->set_directory("./tmp") || die $!; #フォームデータを受け取り連想配列(%in)に代入 %in=$cgi->parse_form_data(); #商品画像2を別のフォルダに移動 move("./tmp/$in{'SH_gazou2'}", "./img"); #$dns:データベースインターフェース基本形となるドライバ部分 #my($dns) = "DBI:ドライバ名:アクセスするデータベース名:ホスト名"; my($dns) = "$db_db"; #MySQLのユーザーネーム my($username) = "$db_usnm"; #MySQLのパスワード my($password) = "cq3jfgc"; #$dbh:はMySQLへのコネクション。$sthはMySQLコマンドの実行 my($dbh,$sth); #MySQLコマンドが情報を出力する場合は、その情報を詰める為の値 my(@ary); #入力日時の表示 $ENV{'TZ'} = "JST-9"; ($sec,$min,$hour,$mday,$mon,$year,$wday,$yday,$isdst) = localtime(time); $year += 1900; $mon++; if ($mon < 10) { $mon = "0$mon"; } if ($mday < 10) { $mday = "0$mday"; } if ($hour < 10) { $hour = "0$hour"; } if ($min < 10) { $min = "0$min"; } #商品の新規登録 if($in{'mode'} eq 'new'){ #フォームの入力ミス時のエラー表示 &form_error; #ここではEUCコードでデータを挿入してみる事にする。表示はSJISを利用 &mozihenkan; #日時の取得 &zikan; #$dbhでMySQLに接続 $dbh = DBI -> connect ($dns,$username,$password) or &Error("データベースへア クセスできません。"); #MySQLコマンドの実行 #insert:レコードの挿入 insert into テーブル名 values("各フィールドの変数名") $sth = $dbh->prepare(qq{insert into syouhin values("$Categori","$in{'SH_gazou1'}","$in{'SH_gazou2'}","$senmon","$SH_url" ,"$Syoukaibun","$Kakaku","$SH_name","$SH_kikan_mae","$SH_kikan_syuu","$Nyu_n icizi")}); #MySQLのエラー出力 $sth -> execute() or &Error("MySQL INSERT コマンドを実行できません。"); #MySQLコマンドの終了 $sth -> finish(); #MySQLへのコネクションを閉じる $dbh -> disconnect(); }#商品の新規登録はここまで #《商品管理画面HTML》 #Perl内でHTML分を使用時に必要な指定文 print"Content-type: text/html\n\n"; print<<"__HTML__"; <html> <head> <title>$pg_title</title> <meta http-equiv="Content-Type" content="text/html; charset=Shift_JIS"> </head> <body bgcolor="$pg_haikei"> <table width="32%" border="0" cellspacing="1" cellpadding="1" align="center"> <tr> <td> <h2 align="center">$pg_midasi</h2> </td> </tr> </table> <form method=$zokusei action=$form_pg enctype=multipart/form-data> <table width="$tb_haba%" border="$tb_futosa" cellspacing="$tb_futosa2" cellpadding="$tb_yohaku" align="$tb_ichi"> <tr> <td width="21%" bgcolor="#99CCFF"> <div align="center"><font size="3"><b>カテゴリー</b></font></div> </td> <td width="79%" bgcolor="#FDF9C1"> <select name="Categori"> <option>映像機器</option> <option>記憶装置</option> <option>ディスプレイ</option> <option>ネットワーク機器</option> <option>入力装置</option> <option>PC本体</option> <option>プリンター</option> <option>音声機器</option> <option>ソフト</option> <option>スキャナー</option> </select> </td> </tr> <tr> <td width="21%" bgcolor="#99CCFF"> <div align="center"><font size="3"><b>専門分野</b></font></div> </td> <td width="79%" bgcolor="#FDF9C1"> <select name="senmon"> <option>娯楽用</option> <option>仕事用</option> <option>娯楽兼仕事用</option> </select> </td> </tr> <tr> <td bgcolor="#99CCFF"> <div align="center"><font size="3"><b>製品の関連URL </b></font></div> </td> <td bgcolor="#FDF9C1"> <input type="text" name="SH_url" value="http://" maxlength="64" size="80"> <font size="1" color="#FF3333">(半角英数)</font> </td> </tr> <tr> <td bgcolor="#99CCFF"> <div align="center"><font size="3"><b>製品の紹介文</b></font></div> </td> <td bgcolor="#FDF9C1"> <textarea name="Syoukaibun" rows="5" cols="60"></textarea> </td> </tr> <tr> <td bgcolor="#99CCFF"> <div align="center"><font size="3"><b>価 格</b></font></div> </td> <td bgcolor="#FDF9C1"> <input type="text" name="Kakaku" size="10." maxlength="8"> <b><font size="3">円</font></b> <font size="1" color="#FF3333">(半角 数字)</font></td> </tr> <tr> <td bgcolor="#99CCFF"> <div align="center"><font size="3"><b>製 品 名</b></font></div> </td> <td bgcolor="#FDF9C1"> <input type="text" name="SH_name" maxlength="80" size="90"> <font size="1" color="#FF3333">(全角)</font> </td> </tr> <tr> <td bgcolor="#99CCFF"> <div align="center"><font size="3"><b>製品出品期間 (始)</b></font></div> </td> <td bgcolor="#FDF9C1"> <input type="text" name="mae_nen" size="6" maxlength="4"> <b><font size="3">年</font></b> <input type="text" name="mae_tuki" size="4" maxlength="2"> <b><font size="3">月 <input type="text" name="mae_hi" size="4" maxlength="2"> 日 <input type="text" name="mae_zi" size="4" maxlength="2"> 時 <input type="text" name="mae_fun" size="4" maxlength="2"> 分</font></b><font size="1" color="#FF3333">(半角数字)西暦 </font></td> </tr> <tr> <td bgcolor="#99CCFF"> <div align="center"><font size="3"><b>製品出品期間 (終)</b></font></div> </td> <td bgcolor="#FDF9C1"> <input type="text" name="syuu_nen" size="6" maxlength="4"> <b><font size="3">年</font></b> <input type="text" name="syuu_tuki" size="4" maxlength="2"> <b><font size="3">月 <input type="text" name="syuu_hi" size="4" maxlength="2"> 日 <input type="text" name="syuu_zi" size="4" maxlength="2"> 時 <input type="text" name="syuu_fun" size="4" maxlength="2"> 分</font></b><font size="1" color="#FF3333">(半角数字)西暦 </font></td> </tr> <tr> <td bgcolor="#99CCFF"> <div align="center"><font size="3"><b>商品画像1</b></font></div> </td> <td bgcolor="#FDF9C1"> <input type=file name=SH_gazou1> </td> </tr> <tr> <td bgcolor="#99CCFF"> <div align="center"><font size="3"><b>商品画像2</b></font></div> </td> <td bgcolor="#FDF9C1"> <input type="file" name="SH_gazou2"> </td> </tr> <tr> <td bgcolor="#99CCFF"> <div align="center"><font size="3"><b>入力日時</b></font></div> </td> <td bgcolor="#FDF9C1"> <input type="text" name="nyuu_nen" size="6" maxlength="4" value="$year"> <b><font size="3">年</font></b> <input type="text" name="nyuu_tuki" size="4" maxlength="2" value="$mon"> <b><font size="3">月 <input type="text" name="nyuu_hi" size="4" maxlength="2" value="$mday"> 日 <input type="text" name="nyuu_zi" size="4" maxlength="2" value="$hour"> 時 <input type="text" name="nyuu_fun" size="4" maxlength="2" value="$min"> 分</font></b><font size="1" color="#FF3333">(半角数字)西暦 </font></td> </tr> <tr> <td colspan="2"> <div align="center"> <input type=submit name=submit value="送信"> </div> </td> </tr> <input type="hidden" name="mode" value="new"> </table> <br> </form> <br> </body> </html> __HTML__ ##《サブルーチンエリア》 #EUCコードでデータを挿入 sub mozihenkan{ $Categori=$in{'Categori'}; &jcode'convert(*Categori,"euc"); $senmon=$in{'senmon'}; &jcode'convert(*senmon,"euc"); $SH_url=$in{'SH_url'};#パスワードは半角英数のみなのでこのまま $Syoukaibun=$in{'Syoukaibun'}; &jcode'convert(*Syoukaibun,"euc"); $Kakaku=$in{'Kakaku'};#価格は半角数字のみなのでこのまま $SH_name=$in{'SH_name'}; &jcode'convert(*SH_name,"euc"); $mae_nen=$in{'mae_nen'};#年月日時間は半角数字のみなのでこのまま $mae_tuki=$in{'mae_tuki'}; $mae_hi=$in{'mae_hi'}; $mae_zi=$in{'mae_zi'}; $mae_fun=$in{'mae_fun'}; $syuu_nen=$in{'syuu_nen'}; $syuu_tuki=$in{'syuu_tuki'}; $syuu_hi=$in{'syuu_hi'}; $syuu_zi=$in{'syuu_zi'}; $syuu_fun=$in{'syuu_fun'}; $nyuu_nen=$in{'nyuu_nen'}; $nyuu_tuki=$in{'nyuu_tuki'}; $nyuu_hi=$in{'nyuu_hi'}; $nyuu_zi=$in{'nyuu_zi'}; $nyuu_fun=$in{'nyuu_fun'}; } #フォームの入力ミス時のエラー表示 sub form_error{ &Error("$taipumisu") unless $in{'Categori'}; &Error("$taipumisu") unless $in{'senmon'}; &Error("$taipumisu") unless $in{'Syoukaibun'}; &Error("$taipumisu") unless $in{'Kakaku'}; &Error("$taipumisu") unless $in{'SH_name'}; #&Error("$taipumisu") unless $in{'SH_kikan_mae'}; #&Error("$taipumisu") unless $in{'SH_kikan_syuu'}; &Error("$taipumisu") unless $in{'SH_gazou1'}; #&Error("$taipumisu") unless $in{'Nyu_nicizi'}; } #MySQLのエラー処理 sub Error{ print"Content-type: text/html\n\n"; print $_[0]; print qq(<br><a href="javascript:history.back(1)">戻る</a>); exit; } #日時の取得 sub zikan{ $ENV{'TZ'} = "JST-9"; ($sec,$min,$hour,$mday,$mon,$year,$wday,$yday,$isdst) = localtime(time); $year += 1900; $mon++; if ($mon < 10) { $mon = "0$mon"; } if ($mday < 10) { $mday = "0$mday"; } if ($hour < 10) { $hour = "0$hour"; } if ($min < 10) { $min = "0$min"; } $SH_kikan_mae=sprintf("%04d-%02d-%02d %02d:%02d:%02d",$mae_nen,$mae_tuki,$mae_hi,$mae_zi,$mae_fun); $SH_kikan_syuu=sprintf("%04d-%02d-%02d %02d:%02d:%02d",$syuu_nen,$syuu_tuki,$syuu_hi,$syuu_zi,$syuu_fun); $Nyu_nicizi=sprintf("%04d-%02d-%02d %02d:%02d:%02d",$nyuu_nen,$nyuu_tuki,$nyuu_hi,$nyuu_zi,$nyuu_fun); } そして、そのダウンロードされた画像を表示させるといったPerl DBIは、 下記の様に組んで見たのですが駄目でした(このプログラムは全く自身がありませ ん)。 #!perl #モジュール&ライブラリの指定 use DBI; ##《設定》 #データベースインターフェースのドライバ指定 $db_db="DBI:mysql:shopping:localhost"; #MySQLのユーザーネーム $db_usnm="root"; #MySQLのパスワード $db_pw="cq3jfgc"; #プログラムタイトル $pg_title="syoppu"; #$dns:データベースインターフェース基本形となるドライバ部分 #my($dns) = "DBI:ドライバ名:アクセスするデータベース名:ホスト名"; my($dns) = "$db_db"; #MySQLのユーザーネーム my($username) = "$db_usnm"; #MySQLのパスワード my($password) = "cq3jfgc"; #$dbh:はMySQLへのコネクション。$sthはMySQLコマンドの実行 my($dbh,$sth); #MySQLコマンドが情報を出力する場合は、その情報を詰める為の値 my(@ary); #$dbhでMySQLに接続 $dbh = DBI -> connect ($dns,$username,$password) or &Error("データベースへア クセスできません。"); #MySQLコマンドの実行 #select:データの閲覧 select フィールド名1,フィールド名1,… from テーブル名 where フィールド 名 #like"検索内容" $sth=$dbh->prepare(qq{select SH_gazou1 from shopping}); #MySQLのエラー出力 $sth -> execute() or &Error("MySQL select コマンドを実行できません。"); #《ショップサイトHTML》 #Perl内でHTML分を使用時に必要な指定文 print"Content-type: text/html\; charset=shift_jis\n\n"; print<<"__HTML__"; <html> <head> <title>ショッピングサイトTOP</title> <meta http-equiv="Content-Type" content="text/html; charset=Shift_JIS"> </head> <body bgcolor="#00CCCC"> __HTML__ while(@ary=$sth->fetchrow_array()){ binmode($ary[1]); print $ary[1]; <img src="http://localhost/~shopping/test/tmp/$ary[0]" width="115" height="125"> } print<<"__HTMLEND__"; </body> </html> __HTMLEND__ #MySQLコマンドの終了 $sth -> finish(); #MySQLへのコネクションを閉じる $dbh -> disconnect(); exit; #MySQLのエラー処理 sub Error{ print"Content-type: text/html\n\n"; print $_[0]; exit; } 大変長いメールになってしまい申し訳ございません。 どなたか宜しければ教えてください。 宜しくお願いします。
4222 2001-08-27 00:00 [e-oohira <e-oohira@x] 4226 2001-08-27 12:15 ┗[とみたまさひろ <tomm] スレッド表示について -> 4230 2001-08-27 15:22 ┗["tamuzin2" <tamuzin@] 画像を表示 4232 2001-08-27 16:30 ┗["Kawai,Takanori" <GC] 4256 2001-08-30 14:57 ┗["tamuzin2" <tamuzin@] Re: 画像を表示【解決】