MySQLデータベースの入出力について

Events happening in the community are now at Drupal community events on www.drupal.org.
kenkichi's picture

MySQLデータベースにテーブルを作成しデータ登録、Drupal7上で閲覧する、というところまで構築できました(Dataモジュールでテーブルを作成し、MySQL直打ちでデータ登録、Viewモジュールで表示、1.PNG参照ください)。
次はデータ登録になりますが、運用ではデータ登録をSQL直打ちするわけにはいきませんので、D7上で構築できないか思案しているところです。
Feedsモジュールを使用し、CSVファイルからデータを一括入力する、といった情報はWeb上にいくつかあったのですが、Feedsモジュールをうまく扱えず手詰まりの状態です。

なにかよいモジュールがありますでしょうか。
もしくはカスタムモジュールを作成する、ということになりますでしょうか。

お知恵拝借ください、よろしくお願いします。

AttachmentSize
1.PNG8.23 KB

Comments

Data

shigehiro's picture

Data モジュールが私はあまり触ったことが無いのですが、

そのモジュールでデータ登録が出来ないのであれば、カスタムモジュールでその部分を行うことは、出来ると思います。

カスタムモジュールで作る場合なら、hook_menu() でデータ登録用のページを用意して、Form API を使って入力フォームを設置して、フォームのサブミット処理でテーブルにデータを挿入、となるでしょうか。

CSVファイルからデータをインポートするのも、カスタムモジュールでも出来ますよ。

そのデータは、ノードとして実装するのでは駄目ということでしょうか。

どのようなデータか分かりませんが、独自のエンティティ・タイプを作る方法もあります。この場合、Drupal のフィールドのしくみを使うので、テーブルは分かれてしまいますが、コードレスで入力フォームを設置できますよ。

独自のエンティティタイプを管理するモジュールを紹介しておきます。(ちょうど私のブログで紹介したところでした^^)

Entity Construction Kit (ECK)の紹介記事

これ、超使えると思いますヨ。
管理画面から簡単に独自のエンティティタイプを追加出来ます。

Drupal カスタマイズTips 更新中...
CMS自由自在!
http://customfield.jp/

kenkichi's picture

ご返事、ありがとうございます。

そのデータは、ノードとして実装するのでは駄目ということでしょうか。
ノードとしてデータを登録することも考えましたが、データそのものへのアクセスの利便性を考えると、独立したテーブルが好ましいと判断したところです。
メンテナンス時や、Windows環境からアクセスするならそれの方がいいかなと。

カスタムモジュール作製はただいま勉強し始めたところです(初心者です。すみません)。
具体的には、Drupal7からMySQLへアクセスするときのDatabaseAPIの使い方を探っているところです。
Drupal.org上のドキュメントを見ていますが、そのAPI(もしくはPHP)コードをカスタムモジュール上で、どう組み込めば良いかわかっていないです。

独自のエンティティタイプを管理するモジュールを紹介しておきます。

参照いたしました。
エンティティという概念がありませんでしたが、

「ノード」、「ユーザー」、「タクソノミーターム」、「コメント」、
「ファイル」、等の既存のエンティティのタイプに当てはまらないような
データを扱う必要がある場合には、独自のエンティティタイプを独自の
仕様で追加するようにするのが、

まさにその通りの状態です。
ECKモジュールでどこまでできるかチャレンジしてみます。

Drupal7上で生のデータベースを取り扱うということはあまりないのか、

http://msdn.microsoft.com/ja-jp/library/ee340709(v=vs.110).aspx

のように(リンクは思い切りVisual Studioですが・・・)できるモジュールを探しておりました。

ECKモジュールを含め、カスタムモジュール、DatabaseAPIをもう少し勉強してみます。
よろしければ(Drupal)APIコード、PHPコードの組み込み例があればと思っております。

ありがとうございます。

Drupal

shigehiro's picture

Drupal のデータベース操作の記述例は、

db_query
db_insert
db_update
db_delete

にあります。それぞれコメント欄に Example が示されています。比較的分かりやすいのは db_query() ですね。

他は動的クエリなので、少し敷居が高いかもしれないです。

インサートとアップデートは、Drupal の様式で作成・管理されているテーブルであれば drupal_write_record() というのも使えます。これのほうが若干楽かもしれません。

テスト環境でクエリの動作を確認したいのであれば、カスタムモジュールを作って、hook_menu() を使ってページを作り、そのページのコールバック関数の中にコードを書くのが、手っ取り早いと思います。

Drupal カスタマイズTips 更新中...
CMS自由自在!
http://customfield.jp/

日本 コミュニティ: Drupal Japan User Group

Group organizers

Group categories

Group notifications

This group offers an RSS feed. Or subscribe to these personalized, sitewide feeds: