top


総投稿数 本 
no_

スポンサーサイト

 --------
上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。
カテゴリ :スポンサー広告 トラックバック(-) コメント(-)
no_1290

Drupal と PHP:viewsだけでなんとかしたかったけれど、やはり、PHPで組んでしまった、データベースアクセス ・・・ 【最近のDrupal】

 2010-03-09
 Drupal
 本当は、viewsだけでなんとかしたかったけれど、
 最後はやはり、直接phpで組んでしまった
 データベースアクセス

 それでも、なるべく親和性残し
 Drupalの データベースアクセス用のAPI
 を使ってみた。
 ※その過程でも
  viewsは重要な役割を果たしてくれたんだけど・・・


  追記に  ▼


FC2ブログランキング にほんブログ村 IT技術ブログ Webサイト構築へ ブログ王ランキング 人気ブログランキング 人気ホームページランキングへ


more

************************************************
◎  Drupa:「データベースプログラミング」は、これでいいの? の巻
                :最近のDrupal

************************************************


 Drupal でよく利用されている
 ・views というモジュールは確かに
  素晴らしい。
  ※cck モジュールと組み合わせれば
   相当いろいろなことができる。


 views には、
 ・引数
  という設定があって
  ・URLにて与えられる 引数(値)の変化に応じて
   処理を変えることもできる。


 ※今回 ある目的のために、相当な時間
  試行錯誤したけれど、
  「ほんとに良く考えられてるな」・・・という
  印象だった。


 しかし!

 やりたいことは、どうしても実現出きなかった。
 おそらくまだまだ理解が足りないのだろう。
 「手段が目的になってはならないな」・・なんて
 勝手な理由を用意して,直接PHPで書くことに。


 それでも、できるだけ、Drupalの仕様の範囲内で
 行いたく、少し
 ・データベース関数
  を利用してみた。


 【作業顛末】
 ■まず 得たい情報の基礎ベースを
  views(ビュー) を利用して下準備


  ・これが便利だ。
   viewsで様々な条件を設定して
    viewsで様々な条件を設定して
   (フィルタや並べ替えの基準、フィールド 他)


  ・プレビューすれば・・・
    プレビューすれば・・・
   それに利用した SQL文を表示してくれる。


   これをベースに使い、独自のアクセスの
   SQL文を構成する作業・・・これが非常に効率的だ。


 ■やりたいのは、
  様々なアクセス状況により
  Where文を変えたいので、


  まず、

 

  □利用しているテーマフォルダにある
   template.php
   データベースアクセス用の簡単な関数を準備。
function _*****_functions_getDbSQL($sql,$type) {
if($sql){
if($type=='array'){
$rows = db_fetch_array(db_query($sql));
}elseif($type=='result'){
$rows = db_result(db_query($sql));
}elseif($type=='object'){
$rows = db_fetch_object(db_query($sql));
}else{
$rows = db_query($sql);
}
return $rows;
}
return false;
}
 複数の Drupalデータベース関数(API)を
 使い分けられるように準備。

 

  □利用したい場所から、
ini_set ( "display_errors", "1" ); # 開発中
drupal_bootstrap(DRUPAL_BOOTSTRAP_DATABASE);
$getdatas = _*****_functions_getDbSQL($tempSQL,'');
while ($data = db_fetch_object($getdatas)) {
$temptitle = $data->node_title;
$tempnid = $data->nid;
}
 などとして利用できる。
   この、与える $tempSQL は
   前述 views で得た ベースクエリに
   条件に応じた where文を加えたものだ。
   ※もちろん、与える内容値には、
    最低限のセキュリティ対策として
    htmlspecialchars($val, ENT_QUOTES, 'utf-8') や
    strip_tags
    などを与えるのだけど。
   ※色々試したけど
    関数では、単純な db_query を行って
    利用する場所で,
    while ($data = db_fetch_object($getdatas))
    などで、廻すのが利用し易い。

 ■記録
  実は、このアナログ的なやり方に決める前に
  相当量の情報の検索を行った。


  viewsフィルタリング や 動的利用に関しての
  独自モジュールや利用方法について記述したサイトも多く
  結構奥深いな、と感じたことをメモしておく。


 ■参考
  ・Views Argument Handling Code
  ・Filtering Drupal Views Dynamically
  ・Views Filter Pack
  ・Dynamic Views
  ・Views PHP Filter
  ・implementing custom sql query for views / filters
  ・db_query
  ・Use SQL to Filter Drupal Views

commentsコメント
comment_post












管理者にだけ表示を許可する
commentトラックバック
トラックバックURL:
http://metaboy.blog23.fc2.com/tb.php/1290-1869db37
ようこそ
Add to Google 創るmetaboy:RSSフィード
My Yahoo!に追加
最新記事のRSS | 問い合わせ

仕事検索、アルバイト検索、依頼仕事の検索ポータル - 仕事検索.COM - www.jobkensaku.com ツクルン

創るmetaboy - WEB創る、サイト創る、何創る - 創ったmetaboy

 

リンク集

 

最近の記事

 

ブロとも申請フォーム
Sponserd by

さくらのレンタルサーバ さくらのレンタルサーバ
大容量・高機能レンタルサーバー heteml 大容量・高機能レンタルサーバー heteml
XREA (ValueDomain)
お名前.com お名前.com
名づけてねっと名づけてねっと
ムームードメインムームードメイン

 

上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。