[前][次][番号順一覧][スレッド一覧]

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: 画像を表示【解決】