• 締切済み

CGIについて

会社から以下のようなcgiを作ってくれと言われましたが、初心者の為皆目見当つかない状態です perl,c,c++のうちなんでもいいそうですが、perlが入っているので、それを使おうかと思っています。 <図書管理サイト(CGIプログラム)要求仕様> rental.cgi 1.登録社員がアクセス、セレクトボックスから自分を選択し、パスワードを入力。  (パスワードは当面、社員番号と同じでよいと思われる) 2.認証に成功すると図書リスト画面が出る。図書リスト画面は、  「図書テーブル」の内容がリスト表示される。表示は「登録日が新しい順」。  本が増えることを想定すると、図書名による「検索」ができるとなおよい。 3.「貸し出し中ではない」本は、「借りる」といるリンクがつく。「借りる」を  クリックすると、JavaScriptによるアラートで「本XXXXを借りますか?」と出す。  OKがクリックされたら、貸し出し登録。  データベースの更新等貸し出し処理が無事終了したら  該当の本を「貸し出し中」とし、図書リストを更新表示。  なお、この時プログラム内部で「履歴テーブル」にデータを追加しておくこと。 4.図書リスト画面において、該当社員が借りている本の場合は「借りる」ではなく  「返却する」リンクとなる。  クリックすると、JavaScriptによるアラートで「本XXXXを返却しますか?」と出す。  OKがクリックされたら、図書返却登録。3.と逆のステップになる。  データベースの更新等返却処理が無事終了したら  該当の本を「貸し出し中」では無くし、図書リストを更新表示。  なお、この時成功画面に「本は棚に忘れず返却してください」などと出す。 データベースの方はpostgreSQLで下のような感じで作ってあります。 データベース名…bookmanagement bookmanagement=# CREATE TABLE books( bookid text, --本ID bookname text, --本名称 author text, --著者 explanation text, --説明 date date, --登録日 lending text, --貸出中? finallending text, --最終貸出日 lendinguserid text  --最終貸出ユーザID ); CREATE TABLE bookmanagement=# CREATE TABLE usertable( userID text, --ユーザID(社員番号) name text, --ユーザ名 pass text, --パスワード post text --所属部署 ); bookmanagement=# CREATE TABLE logtable( logID text, --<履歴ID><ユーザーID> date timestamp,<発生日時(=貸出日時)> bookid text,<本ID> userID text --<ユーザーID> );

  • CGI
  • 回答数3
  • ありがとう数3

みんなの回答

  • ryu_chan
  • ベストアンサー率37% (69/186)
回答No.3

Perlの本といえばオライリーが定番ですが、 初めてのPerl 第5版 http://www.amazon.co.jp/dp/4873114276/ CGIプログラミング http://www.amazon.co.jp/dp/4873110440/ ちょっと難しいかもしれません。 SQLはあまり勉強したことがないので、どの本がいいかはわからないです。 お役に立てなくてすみません。

nardobrea
質問者

補足

ありがとうございます

  • ryu_chan
  • ベストアンサー率37% (69/186)
回答No.2

むむむ、すごい会社ですね^^; とりあえず、Perl、CGI、JavaScript、SQLの知識が必要そうです。 まず、これらに関する書籍を読むことから始めることになると思います。 JavaScriptはWebだけで何とかなりそうです。 完全な初心者がそれなりのものを作るとしたら、勉強から始め、半年ぐらいはかかるでしょうか?

nardobrea
質問者

補足

そうですね^^ でも、しかも納期今月末って言われてます…orz 明日、書店へ行って少し本をあさってきます。 何かいいのありますでしょうか?

noname#108428
noname#108428
回答No.1

> 作ってくれと言われましたが、初心者の為皆目見当つかない状態です 断るべきです。

nardobrea
質問者

補足

そういうわけにもいかないんです

関連するQ&A

  • 管理ファイル(?)の作成

    図書館の本のような管理システムをゼロから作成したいです。 貸出日、貸出相手先、返却日、未返却リスト(本と貸出先)がすぐにわかるようにしたいです。 エクセル、アクセス、どちらが便利ですか? ちなみにデータ数は、貸出先が30程度、本の種類は600程度です。 これ以上増える予定はありません。 参考になるようなサイトがあれば教えていただければ助かります。 よろしくお願いします。

  • 第1正規形→第2正規形

    正規化についてお聞きしたいです。 大学の図書館の本の貸し借りのデータベースで 現在第1正規化した↓のテーブルがあるのですが 図書ID|書名|配架場所|学生証番号 | 氏名|学部|在籍期限|返却期限|貸出日 (図書IDは重複がないものとする。主キーは図書ID、学生証番号である) これを第2正規形に正規化した場合 学生証番号(主キー)|氏名|学部|在籍期限 図書ID(主キー)|書名|配架場所 学生証番号(主キー)|図書ID(主キー)|返却期限|貸出日 ↑のように3つの表に分ければ良いのでしょうか? あとこれを第3正規形にするにはどうすればいいでしょうか? 第2から第3への方法がよくわからないので、わかる方ご指導下さい。

  • 図書在庫管理をAccessで‥‥参考になる本を探しています。

    今まで売上に関するデータベース専門に作っていましたが、 突然、図書の在庫管理のデータベースを作るように頼まれました。 以前買った本を読み直したのですが、売上や顧客管理に関する構築法ばかりで、在庫管理(図書)の事は一言も無く‥‥ 正直戸惑っています。 ・会員 ・本の名前&出版社 ・在庫数 ・貸出&返却日時 ・延滞者&本の名前 ・貸出本一覧&在庫一覧 以前とは全くかけ離れたデータベースなので、本屋に行って本を探したのですが、 需要が高いのか、売上や顧客データの作り方ばかり‥‥ 図書在庫管理データベースの作り方を紹介する本は無いのでしょうか? 紹介されているHPでも構いません。 テーブルさえ作れれば、あとは何とかなりますが、何故かそのテーブル構成で躓いています。

  • 図書管理の表をExcelで作るのですが‥‥

    職場で、図書管理のデータベースをAccessで作って使ってました。 しかし、Access入のPCが少ない為に、「Excelで作って」と上司に言われました。 「貸出」「返却」の2シートは作成済で、今は「返却済」シートを作成中です。 「貸出」と「返却」の2シートに“同一”のものが有った場合、それを「返却済」シートに表示したいと思いました。 マクロを使おうとかと思いましたが、PCが市の物で、メインユーザーはパス付。セキュリティの関係上、マクロが利用できない可能性があります(上司は、マクロに難色を示しました)。 関数にしようと思いましたが、悲しいかな、全く思いつきません。 シート例は‥‥    A    B     C 1 貸出者  本の名前  貸出日   2 あいう  Excel    5/4     ←貸出シート 3 かきく  Word     5/5      A    B     C 1 返却者  本の名前  返却日   2 あいう  Excel    6/1    ←返却シート 貸出、返却シート共に、「あいう」さんが存在し、「あいう」さんは、本を借りて、返却した事が分かります。 この2シートの行の情報が、返却済シートのA2セルに「あいう ABC Excel」と表示させたいのです。 IF関数を使って、シートに同一のものがあれば‥‥と式を作ろうとしましたが、なかなか上手くいきません。 どのような式を作ればいいのでしょうか? IF関数以外に、式があれば、そちらも教えてください。 お願いします。

  • MySQLから取り出したものを3つに分ける

    MySQLに以下のようなSQLを打ちました。 create table table_list( id int, task varchar(255) ); insert into table_list values(1,'ほげほげ1-1'); insert into table_list values(1,'ほげほげ1-2'); insert into table_list values(2,'ほげほげ2-1); insert into table_list values(2,'ほげほげ2-2'); insert into table_list values(3,'ほげほげ3-1'); そして、空のdiv要素が3つあります。 このデータベースからidの数値別に、div要素へtaskの文字列を入れたいのですが、どうすればいいのでしょうか? SQLで「select * from table_list」をやってからtaskを取り出すのか、3回SQLで「select task from table_list where id=1」のようにするのがよろしいんでしょうか?

    • ベストアンサー
    • PHP
  • Access テーブルのデータをフォーム上で、検索したい

    こんにちは。Access で簡単な貸出管理データを作っています。 現在、貸出フォームは作ったのですが、 返却フォームを作る際、 今度は、一度テーブルに保存した貸出記録データを 返却フォームで検索して、表示したい場合、どのように したらよろしいでしょうか? 貸出フォームでは、 テーブル1、社員ID、氏名、電話番号 テーブル2、備品ID、備品名、貸出日、返却予定日、 社員ID、氏名、電話番号 これをサブフォームを使ってつくりました。 このテーブル2のデータを返却フォームで検索して、 (備品IDか社員IDで) 表示させたいと思っています。 よろしくお願い致します。

  • Access 図書管理システムについて

    Accessで、図書管理システムを作ろうと思っています。督促や貸出、返却、本の検索、貸出統計などができる図書管理システムをつくりたいのですが、知識がないため、作り方がわかりません。参考書などはありませんか?おしえてください。よろしくおねがいします。

  • postgresをAccessから操作、しかし#Deleted ?

    postgresでテーブルを作成 CREATE TABLE test_table (id serial , name text); というテーブルを作成しODBCを使いaccessからデータを追加すると なぜかすべての行に #Delete と表示されてしまいます。 しかし更新をするとAuto Numberもしっかり振られないようも更新されているのですが いまいち理解できません。 もし、対策がお分かりの方がいましたらご教授お願いいたします。

  • 'id'を無視して、外部ファイルを読み込むには?

    MySQLでデータベースを作成しています。テーブルを以下のように作成しました。 create table table_name (     id MEDIUMINT NOT NULL AUTO_INCREMENT,     aaa text,     bbb text,     ccc text,     PRIMARY KEY (id) ); そして、以下のようなファイル(/root/file)を読み込みます。(尚、ファイルはLinux上で作成しました。) [/root/file] a1,b1,c1 a2,b2,c2 a3,b3,c3 そして、データベース上で以下のようなコマンドを実行しました。 load data local infile '/root/file' into table table_name fields terminated by ',' lines terminated by '\n'; すると、以下のような結果が得られます。 +----+-----+-----+------+ | id | aaa | bbb | ccc | +----+-----+-----+------+ | a1 | b1 | c1 | NULL | | a2 | b2 | c2 | NULL | | a3 | b3 | c3 | NULL | +----+-----+-----+------+ 以下のようにテーブルを作り直すことなく、 create table table_name (     aaa text,     bbb text,     ccc text,     id MEDIUMINT NOT NULL AUTO_INCREMENT,     PRIMARY KEY (id) ); また、以下のようにファイルを書くことなく、 [/root/file] ,a1,b1,c1 ,a2,b2,c2 ,a3,b3,c3 以下のような結果を出すにはどのようにすればよいのでしょうか。(つまり、自動的に作成される'id'を無視するにはどうすればよいのでしょうか。) +----+-----+-----+-----+ | id | aaa | bbb | ccc | +----+-----+-----+-----+ | 1 | a1 | b1 | c1 | | 2 | a2 | b2 | c2 | | 3 | a3 | b3 | c3 | +----+-----+-----+-----+ よろしくお願い致します。

    • ベストアンサー
    • MySQL
  • リロード対策について困っています

    本の貸出システムを作っていまして、貸出処理も返却処理も作成し、本の貸出登録後、F5キーなどを押すと「このページを再表示するには以前送信した~~~」とアラートが出て、「再試行」をクリックすると返却処理をしてしまうのですが、これを誤って「再試行」押してしまっても貸出処理を行わないようしたいのですが、どのようにしたら良いのでしょうか?また、別の方法はありますでしょうか? 必要があればソースコード載せます。 上司の方から「CGIが全く同じパラメータで連続して呼ばれるわけですから、CGI側で前どんな処理をしたかを覚えておけば、2度目以降をはじくことはできるはずです。」と言われたのですがそのやり方が良く分かりません。 あとかろうじてリロード対策でWalrus::Session::Liteを使うという所まで分かり、一応試しに​http://d.hatena.ne.jp/d4-1977/20050706/1120670844​のと同じサンプルを作ってみたのですが、15行目のmy @ID = tied(%session_data)->list_session_id; の所でエラーで引っかかりCan't call method "list_session_id" on an undefined value at /usr/local/apache2/cgi-bin/test.cgi line 15, <DATA> line 64. というエラーを吐き出すのですが、経験者の方で原因がお分かりになる方はいらっしゃいますでしょうか?

    • 締切済み
    • CGI

専門家に質問してみよう