人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

SQL命令について質問です。

現在HTMLとPHPとSQL文を組み合わせてちょっとしたソフトの様なものを開発したいと考えています。

しかしどのような命令文・構文が必要なのか?というのが分かりません。

作成したいソフトの図と流れを作成しました。

http://oskuni7.sakura.ne.jp/question1.html

<< 知りたい命令文 >>

?出品リスト作成ボタンを押した際のダイアログの発生の仕方。 はい を押すと実行に移し、いいえ を押すと実行しない。(PHP)

?グループ名にあったものを照合し抽出。新しいテーブルを作成(SQL)

?新しいテーブルの指定した場所に決められたデータを入れ込む(SQL)

?新しいテーブルをエクセルのCSV形式で出力する(SQL)

上記の命令文についてこういう構文を使用したほうがいいというのがありましたら教えて下さい。

またページに書いてあるモデル例をプログラム作成することが出来るかたおりましたら大目にポイント払わせていただきます。

よろしくお願いいたします。



●質問者: aiomock
●カテゴリ:コンピュータ インターネット
✍キーワード:SQL いただきます エクセル グループ ソフト
○ 状態 :終了
└ 回答数 : 5/5件

▽最新の回答へ

1 ● nake
●20ポイント

グループ化はこのあたりが参考になります。

http://www.techscore.com/tech/sql/05_08.html

SQLの基本的なところはこのサイトに全て載ってますよ。

◎質問者からの返答

ありがとうございます。勉強してみます。


2 ● backupper
●20ポイント

(1) は不可逆操作ではないので javascript の confirm での確認で十分だと思います(使い勝手も良い)。

<form action="-" method="post" onsubmit="return confirm('実行しますか?');">~</form>

(2)データの抽出は以下の様な単純なSQLで可能(概念です。そのままでは動きません)。

SELECT GROUP, PRODUCT, PRICE, INTRODUCTION, Remarks(4), Remarks(6) FROM AUCTION_Y WHERE GROUP = 'B' AND Remarks(4) = '4日' AND (Remarks(6) BETWEEN '13時' AND '14時')

(2)および(3) メモリ内で済む操作なので、新たにテーブルを作る必要は無いと思います。テーブルを作ってデータを格納する事は可能ですが、良い設計とは思えません(特別な理由があるのなら別ですが)。


(4)PHP5以上で使用できる、fputcsv を stdin に対して使うと楽に実装できます。しかし、個人的にはTSVで出力する事をオススメします。


http://jp2.php.net/manual/ja/function.fputcsv.php

◎質問者からの返答

ご回答ありがとうございます。試してみます。


3 ● Mook
●20ポイント ベストアンサー

コメントが無効なので回答で失礼します。


(1)はPHP ではなくともJavaScript でできると思いますが、PHPでの単純なサンプルです。

<html>
<head>
<title>CONFIRM TEST</title>
<?php
if( ! isset( $_POST["mode"] ) ) {
print <<<_CONFIRM_HTML
<script type="text/javascript">
<!--
function myConfirm() {
 if ( confirm("本当に作成しますか?") == true ) {
 document.myForm.submit();
 }
}
-->
</script>
_CONFIRM_HTML;
}
?>
</head>
<body>
<?php
if( !isset( $_POST["mode"] ) ) {
 print '<form name="myForm" method="POST" action="'.$PHP_SELF.'">';
 print '<input type="button" value="出品リストの作成" onclick="myConfirm()">';
 print '<input type="hidden" name="mode" value="0">';
 print '</form>';
} else {
 print '<font size="7" color="BLUE">Thank You!!!</font><br><br>';
 print '<input type="button" value="確認" onclick="window.close();">';
}
?>
</body>
</html>

(3)の目的が分からないのですが、ボタンを押すたびに新しいテーブルを作成するのでしょうか。

動的にテーブルを作成するとしたら、データベースの運用を考え直した方が良いと思いますが、

そうだとしたら、テーブル名はどうするのでしょうか。


単に生成した状態を、データとして保存したいだけであれば、ボタンを押した結果を格納する

テーブルを一つ用意して、そちらに格納するようにした方が良いと思います。



(4) に関しては、下記が参考になると思います。

CSV に EXCEL 用というのはなく、CSVというのはデータの規格です。

特に今回文字列の先頭に0をつけたりということはなさそうですから、単純なCSVでよいと思います。

http://php.eweb-design.com/0303_dl.php


不明な点は、コメントで確認できるとやりやすいので有効にお願いします。

◎質問者からの返答

ご回答ありがとうございます。試してみます。

分からない所後ほど書かせていただきます。

時間がありましたらよろしくお願いいたします。


4 ● sect
●20ポイント

1.phpというよりはhtml/javascript

<input type="button" value="実行" onclick="if(confirm('実行します')){document.form.submit();}else{alert('キャンセルしたよ')}">

2、3.AUCTION_Yの抽出とテーブル作成とデータ登録

create table [テーブル名_重複しないように名前は工夫して] as

select

GROUP,PRODUCT,PRICE,INTRODUCTION,'4日','午後13時から午後14時'

from AUCTION_Y

where GROUP='B'

4.ダウンロード時にexcelが開くようにする

select

GROUP,PRODUCT,PRICE,INTRODUCTION,Remarks4,Remarks6

from [作ったテーブル]

でselectした結果を

print文で出力。またはhtml形式でprint。

(最初にレスポンスヘッダーを設定しておく)

http://www.bricklife.com/weblog/000051.html

なんでテーブル作りたいのか分からないけど、あんましスマートな方法じゃないね。

「出品テーブル」作って管理した方が良いとおもう。

◎質問者からの返答

ご回答・ご指摘ありがとうございます。試してみます。


5 ● chuken_kenkou
●20ポイント

(2)(3)

まず、groupなど、予約語と同じ名称の表や列を使う場合、「`」(バッククォート)で名前を囲む必要があります。

MySQL :: MySQL 5.1 リファレンスマニュアル :: 8.3 MySQLでの予約語の扱い

AUCTION_Y表に、日時に関する情報がありませんが、結果では日時の情報を入れるようになっていますが?ここでは、日時は定数で入れるものとします。

drop table if exists NewTable;
create table NewTable
(`GROUP` char(1),
 `PRODUCT` varchar(10),
 `PRICE` int,
 `INTRODUCTION` varchar(50),
 `Remarks4` varchar(50),
 `Remarks6` varchar(50));

insert into NewTable
 select `GROUP`,`PRODUCT`,`PRICE`,`INTRODUCTION`,'4日','午後13時から午後14時 '
 from AUCTION_Y
 where `GROUP`='B'
;

(4)

CSV形式での出力方法はいろいろありますが、ここではMySQLのselect文で、 into outfileを使用する例を示します。

select *
 into outfile 'c:/temp/mysql/data.csv'
 fields terminated by ','
 optionally enclosed by '"'
 lines terminated by '\n'
 from NewTable
;
◎質問者からの返答

ご回答ありがとうございます。

試してみます。

関連質問


●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ