1
// ********************************************************** // 【機能】 // PHP のファイルのアップロード機能を使用して、Excel を // アップロードし、その Excel を DB として ADO で読み込み // MDB の TABLE に更新する // // 【注意事項】 // メッセージは、リダイレクト後に表示させる事を想定して // 作成していますが、テスト中はやっかいなので、 // POST 後そのまま画面表示をしています。 // // ********************************************************** // windows 前提なので、shift_jis $conf_client_charset = "shift_jis"; header( "Content-Type: text/html; Charset=$conf_client_charset" ); header( "Expires: Wed, 31 May 2000 14:59:58 GMT" ); // MDB、Excel を COM 経由で使用するので、try 〜 catch が必要 // エラーが起きないという前提ならば、db_php4 でも OK if ( (substr(phpversion(),0,1) + 0) == 4 ) { require_once( "db_php4.php" ); } else { require_once( "db_php5.php" ); } $conf_db_type = 4; // MDB if ( $_POST['send'] == 'アップロード' ) { // MDB に接続 $SQL = new DB( 'hanbaib.mdb' ); if ( $SQL->Connect === false ) { $msg = "接続できませんでした
\n"; $msg .= $SQL->Error; // リダイレクト header( "Location: {$_SERVER['PHP_SELF']}?msg=" . urlencode($msg)); exit(); } else { // アップロード先のファイル // 複数クライアント対応するには、セッション等でユニークなファイル // を作成して、処理後削除する必要があります $upload = "file/Book1.xls"; if ( move_uploaded_file( $_FILES['targetExcel']['tmp_name'], $upload ) ) { $_GET['msg'] = "アップロードに成功しました\n"; } else { $_GET['msg'] = "アップロードに失敗しました\n"; } $conf_db_type = 7; // 一時的に Excel( db.php の仕様 ) // Excel 接続 $SQL_Excel = new DB( realpath($upload) ); $Column = $SQL_Excel->QueryEx( "select * from [Sheet1$]" ); while ( $Column ) { // データ中の ' をエスケープ $Column['コメント'] = str_replace( "'", "''", $Column['コメント'] ); $Query = "select * from [コメントテーブル] where "; $Query .= " [MID] = {$Column['番号']}"; $Query .= " and [日付] = #{$Column['日付']}#"; if ( $SQL->QueryEx( $Query ) ) { $Query = "update [コメントテーブル]"; $Query .= " Set [コメント] = '{$Column['コメント']}'"; $Query .= " where [MID] = {$Column['番号']}"; $Query .= " and [日付] = #{$Column['日付']}#"; } else { $Query = "insert into [コメントテーブル]"; $Query .= " ([MID],[日付],[コメント]) "; $Query .= " values({$Column['番号']}"; $Query .= " ,'{$Column['日付']}'"; $Query .= " ,'{$Column['コメント']}')"; } // ADO の レコードセットを確実に閉じる if ( $SQL->Rs->State >= 1 ) { $SQL->Rs->Close(); } // 更新処理 if ( !$SQL->Execute( $Query ) ) { $data_string .= "$Query\n"; print $SQL->Error; } $Column = $SQL_Excel->QueryEx( ); } $SQL_Excel->Close(); } } ?>
HTML雛形
Excel をアップロードして DB を更新します
メッセージ
= $_GET['msg'] ?>
ファイル選択
備考
1) データは必ず Sheet1 にセットして下さい
= $data_string ?>
番号
日付
コメント
if ( !$SQL ) { $SQL = new DB( 'hanbaib.mdb' ); } $Column = $SQL->QueryEx( "select * from [コメントテーブル]" ); while ( $Column ) { $Column[2] = str_replace( "\n", "
\n", $Column[2] ); // この部分は、http://winofsql.jp/php/cnvtext/frame.htm // で簡単に作成できます $str=''; $str.="
\n"; $str.="
{$Column[0]}
\n"; $str.="
{$Column[1]}
\n"; $str.="
{$Column[2]}
\n"; $str.="
\n"; print $str; $Column = $SQL->QueryEx( ); } $SQL->Close(); ?>