Pear

このエントリーをはてなブックマークに追加
881879:2005/05/13(金) 19:53:06 ID:???
>>880
んとわかります。
ファイルの属性? 666にしないとダメですよね?
そうすると "mode" は関係なく動くような気がします。
ファイル属性 644 だと "mode" 関係なしでダメ。
882nobodyさん:2005/05/13(金) 20:09:55 ID:???
>>881
マニュアルのsqlite_open()のページ
883879:2005/05/13(金) 20:11:41 ID:???
>>881
解決しました。。。 無視されるんですね。
884nobodyさん:2005/05/13(金) 22:23:33 ID:MPQs+RJ/
HTML_QuickForm触ってみただけど、IEでJavaScriptエラー出るなぁ・・・。
オブジェクトを指定してくださいって出る。
885nobodyさん:2005/05/14(土) 01:37:11 ID:???
>>884
再現コードきぼん
886 ◆AngelH/kMI :2005/05/14(土) 03:03:01 ID:???
>884
Smarty + QuickForm前提で話し進めちゃうけど。
ルールの指定でclientを選択しながら、
{$form.javascript}
を書いていなかったりしません?
887884:2005/05/14(土) 09:14:50 ID:yiKQRA/S
>>886
書いててもエラー出ます。
インターネットオプションでスクリプトのエラーごとに表示されるように設定していると、
エラーが警告が出ます。そうじゃない場合はエラー表示でません。
(これはたぶんオフにしている人が多いと思う)

freezeさせて、validateが必要なくなった時、form.javascriptはプリントされなくなるのに、
onsubmitの方のvalidate呼び出し関数は残ったままなので、エラーとなるようです。

動作自体に影響はないんだけど、アラートでエラー表示が出るので邪魔になる・・。
888 ◆AngelH/kMI :2005/05/14(土) 12:21:35 ID:???
>887
あー、なるほど。
自分は時間無くてとりあえずserverでのチェックだけにして逃げちゃったんですよ(苦笑
ちょっと時間見つけてコード追ってみるー。
889nobodyさん:2005/05/14(土) 20:13:14 ID:???
>>887
あーそれか……
ずっと昔からそうなので,自分はもっのすごくアドホックな対処をしてる.
<script type="text/javascript">if(typeof(validate_フォーム名)=='undefined'){var validate_フォーム名=new Function("return true")}</script>
という HTML を,static エレメントとして追加してやるの.

で,フォーム遷移を管理する自作クラスにそれを組み込んで,
そのままこの問題について忘れてたw
まだ直ってなかったのか……
890 ◆AngelH/kMI :2005/05/15(日) 05:10:53 ID:???
>887
>889
んー。まだよくわからないけどざっくりと。
ルールを記述しているJavascriptはQuickform.phpの1540行目あたり。
getValidationScript()の初めに
if (empty($this->_rules) || $this->_freezeAll || empty($this->_attributes['onsubmit'])) {
return '';
}
とあるから何も返さなくなる。

しかし、addRule(), addGroupRule()したときに
if ('client' == $validation) {
$this->updateAttributes(array('onsubmit'=>'return validate_'.$this->_attributes['id'] . '(this);'));
}
と、onSubmitをつけている=エラーになる。
ここの判定式を$this->_freezeAllがtrueの時に通らないようにすれば大丈夫な気がするです。
891887:2005/05/16(月) 10:10:54 ID:6UiQU/az
>>889, 890
ありがとうございます。
結局スクリプト側で、form.JavaScriptが空の時は、
アドホックに >>889のコードを入れることで、対応してしまいました。

ところで、HTML_QuickFormで送られた内容の控えをユーザ宛にも
メール送信したいのですが、結果HTMLを表示する要領で、
テキスト形式で結果内容を生成することはできますか?
892nobodyさん:2005/05/16(月) 11:27:58 ID:???
QuickFormのcheckboxでvalueの値を1以外にする方法をみっけたので書き込んでおく。
(どっかのスレでやり方探してる人いなかったっけ?)
もし既知のことだったら知ってたらスルーして下さい。

$chk =& $form->createElement("checkbox");

$tmp = $chk;
$tmp->setName("chk[1]");
$tmp->setLabel("No. 1");
$tmp->updateAttributes(array("value"=>"NO1"));
$form->addElement($tmp);

$tmp = $chk;
$tmp->setName("chk[2]");
$tmp->setLabel("No. 2");
$tmp->updateAttributes(array("value"=>"NO2"));
$form->addElement($tmp);

名前を[1]、[2]と配列の添字を指定してやれば、GET or POST後にちゃんと
チェック状態になってくれる。
http://www.php.net/manual/ja/faq.html.php#faq.html.arrays
ここみたいに添字を指定しないと、HTML_QuickForm_elementの_findValue()が値を返せないみたい。

QuickFormのnewってどれも重い気がするので、フォームが多い画面作るときは
オブジェクトをコピーしたほうがいいね。
893nobodyさん:2005/05/16(月) 12:22:44 ID:???
HQFって便利なんだけど,全然慣れない・・・
マニュアルか以前に書いたソース見ないと書けない
894nobodyさん:2005/05/17(火) 00:21:37 ID:???
>>891
つ ob_start();

ってまぁ,Array Renderer 使うのが正統だと思いますが.
895nobodyさん:2005/05/19(木) 21:57:06 ID:ZZw6s72m
PHP4には例外処理が無いのでエラー処理が非常に面倒なので、
PEARの基底クラスを継承してPEAR_Errorを発生させようかと
思ってるのですが使い方間違ってますかね?
みなさんそこまでこだわらずにメソッドの戻り値で判断させてます?
896nobodyさん:2005/05/19(木) 22:53:35 ID:???
PEARのエラー処理メカニズムを使うだけなら、PEARクラスを継承する必要はないよ。
エラーを返したい場所で

return PEAR::raiseError('Error message', MY_ERROR_CODE);

などとするだけでいい。
呼び出した側でのエラーチェックは、常に

if (PEAR::isError($result)) {
// エラー処理
}

で。
897nobodyさん:2005/05/20(金) 00:01:48 ID:wjKv+x9s
>>896
なるほど、そんな使い方もできたんですね。

ちなみにPAERのエラー処理って、PEARライブラリ製作者用のクラス
であって、PHP4のエラー処理として推奨されているわけではないのかな?

今すごく迷っているんですけど、
PHP4のエラー処理で最も適しているのは以下のどれになりますか?
識者のご意見お聞かせ下さい。

1、メソッドの戻り値で判断する
2、標準のエラー処理用関数郡を使う
3、PEAR基底クラスのエラー処理を使う
898nobodyさん:2005/05/20(金) 15:49:22 ID:???
>>897
俺はPEAR_ErrorStack使ってる。
マニュアル以外で解説見たこと無いが、個人的にはPEAR_Errorより好き。
ttp://pear.php.net/manual/en/core.pear.pear-errorstack.intro.php
ここ読めば大体の使い方は分かるので、一度読んでみて。
899nobodyさん:2005/05/21(土) 18:41:50 ID:???
>>895
もう 2 年くらいソレでがんがん使ってる。問題ない。っつーか快適。
デバッグ時は backtrace させて (昔は Xdebug とか PEAR::VarDump 無かった)、運用時は小山氏@雑誌連載式にログったりメール飛ばしたり。

>>897
ケースバイケースで組み合わせ。
> 例外処理が無いのでエラー処理が非常に面倒
とか見ると Java の人?と思っちゃう。
PHP の世界に入ってきたのなら、PHP の流儀を意識した方が幸せになれると思う。

ErrorStack いいらしいですね。
最近勉強してないな…
900nobodyさん:2005/05/22(日) 21:41:19 ID:???
>899
例外処理なんてJava以前から余裕であるわけだが。
901nobodyさん:2005/05/23(月) 01:17:27 ID:???
例外処理が無いと極端にやり難い、という人には、今まで Java やってましたというパターンが多い、
という話。
902nobodyさん:2005/05/23(月) 02:07:06 ID:???
PEAR::DBでSQLiteのユーザー定義関数を作る場合、
sqlite_create_functionは使えませんか?
「Warning: sqlite_create_function() expects parameter 1 to be resource

というエラーが出るんですけど。

ソースはこんな感じです。
$db = DB::connect($dsn);
sqlite_create_function($db, 'NOW', 'time', 0);
903nobodyさん:2005/05/23(月) 02:12:39 ID:???
var_dump($db);
したらnull?
904nobodyさん:2005/05/23(月) 03:53:41 ID:???
>>903
Nullではないです。
サンプルではsqlite_create_functionを使う場合は
sqlite_open関数を使っているので、PEAR::DBでは
エラーになってしまうのかと思ったのですが。
905nobodyさん:2005/05/23(月) 10:34:57 ID:???
> Nullではないです。

PEAR なら、エラーオブジェクトという事もある。
906nobodyさん:2005/05/23(月) 13:06:09 ID:???
>>902
DB::connect() の戻り値はSQLiteのリソースハンドルじゃなくて
DB_sqliteオブジェクトなので、そのままsqlite_xxx関数には渡せないよ。

どうしても使いたいなら
sqlite_create_function($db->connection, 'NOW', 'time', 0);
のようにDB_sqliteから接続ハンドルを取り出さないと。
907nobodyさん:2005/05/23(月) 23:53:02 ID:???
>>906
おっちゃん〜。できたよー!
ありがとう。助かったよー。
908nobodyさん:2005/05/29(日) 00:33:18 ID:3agdROOk
PearのPHP5対応状況ってどこでわかりますか?
909nobodyさん:2005/05/29(日) 00:59:27 ID:???
たいていのPEARパッケージはPHP5でも動作します。
というか、動かなかったらおそらくバグなので
bugs.php.netに報告よろ
910909:2005/05/29(日) 01:09:41 ID:???
あ、バグレポート先がうそだった。
PEARパッケージのバグは、各パッケージのページ

http://pear.php.net/package/パッケージ名

のBugsタブから。
911nobodyさん:2005/05/29(日) 07:39:53 ID:oziLOzHH
>>909
ありがとうございます。PHP5対応は考慮されているんですね。
それでは逆に、PHP4の互換保持は考慮されているものでしょうか?
912902:2005/05/29(日) 16:33:06 ID:???
以前、PEAR::DBでSQLiteのユーザー定義関数を作る方法で
お世話になった者です。
PEAR::DBを継承させたmyDBクラスを作ってSQLiteで色々な
関数を使えるようにしてみました。
これで他のDBからSQLiteへの移行が比較的楽にできるのではないかと
思うのですがどうでしょうか?
ソースは次レスで。
913902:2005/05/29(日) 16:34:16 ID:???
myDBクラス(myDB.php)

<?php
require_once("DB.php");// DB
require_once("sqlite_func.php");// SQLite用ユーザー定義関数

class myDB extends DB {
function connect($dsn) {
$db =& parent::connect($dsn);

// SQLiteのユーザー定義関数
sqlite_create_function($db->connection, 'NOW', 'time', 0);
sqlite_create_function($db->connection, 'DATE_FORMAT', 'date_format', 2);

return $db;
}
}
?>

ユーザー定義関数(sqlite_func.php)

<?php
function date_format($timestamp, $format) {
return strftime($format, $timestamp);
}
?>
914902:2005/05/29(日) 16:34:48 ID:???
使い方

<?php
require_once("myDB.php");// DB

// DBオブジェクトの生成と接続
$db =& myDB::connect(DSN);

// エラーチェック
if (PEAR::isError($db)) {
$this->error($db->getMessage());
}

// データ取得
$sql = "SELECT"
. " DATE_FORMAT(NOW(), '%Y/%m/%d %H:%M:%S') AS today,"
. " FROM t_hoge"
;

$res = $db->getAll($sql, DB_FETCHMODE_ASSOC);

// エラーチェック
if (PEAR::isError($res)){
$this->error($res->getMessage());
}

// DB切断
$db->disconnect();
?>
915902:2005/05/29(日) 16:38:00 ID:???
以上スレ汚し失礼しました。
916nobodyさん:2005/05/29(日) 16:48:45 ID:???
何がやりたいのかよく分からないが。
抽象化したいなら、抽象化度の高い MDB2、DB/MDB_QueryTool のようなクエリビルダや Propel、DBDO といった ORM 使ってみ。
917nobodyさん:2005/05/29(日) 18:47:10 ID:???
>916
DBDOって判りづらいだろう。DB_DataObjectのことね。
あと、速度重視するならADODBとPDOも選択肢に追加。
918nobodyさん:2005/05/30(月) 19:32:29 ID:RWhNHsSf
QuickFormでフォームを作成できるのは便利なんだけど、
フォーム中にJavaScriptを埋め込む事って可能?
例えば、select1の選択内容によって、select2の内容を変更するって感じのものを作りたいんだけど、
selectタグの属性に「onChange="hoge()"」って感じに属性を記述することは可能?
919nobodyさん:2005/05/30(月) 19:36:03 ID:???
>>918
可能
920nobodyさん:2005/05/30(月) 21:17:34 ID:???
>>919
ついでにその方法教えてくれるとうれしい
教えて君でスマソ
921nobodyさん:2005/05/30(月) 21:41:19 ID:???
>>920
お願いだからマニュアルくらいは読んでくれ
922919:2005/05/30(月) 21:48:31 ID:???
>>921
同意なんだけど

>>920
array('onchange'=>'hoge()')

923nobodyさん:2005/05/31(火) 12:11:30 ID:???
addElement('hierselect', 'hoge', 'hoge:');
924nobodyさん:2005/06/01(水) 19:08:06 ID:???
HTML_QuickFormのvalidateだけを使いたいんだが。
なんでvalideteだけを独立して使うことはできんの?
925nobodyさん:2005/06/01(水) 20:12:55 ID:???
なんでも何も、そういう風に作られてなけりゃ無理だろ
926nobodyさん:2005/06/02(木) 02:12:22 ID:???
無理だったか?
ルールの複数定義を嫌って無理矢理使ったような記憶があるが…
927nobodyさん:2005/06/02(木) 07:11:22 ID:???
普通に addElement() して addRule() すれば validate() の結果を取れるが……?
単に display() とかを使わなければいいだけでは.

addElement() したくない,ってことなら,
おとなしく PEAR の Validate を使ってひとつひとつ自分でチェックすべし.
928nobodyさん:2005/06/02(木) 22:14:43 ID:???
>>892

checkboxの値をupdateAttributesで更新しても、freeze()したときに、
hiddenの値が、1にならないか??
よくよくしらべていると、freeze時にhiddenを生成するときに、
getValueを呼び出してるんだが、
checkboxクラスのgetValueは、getCheckecの戻り値を返すようになってるから、
結局セットされる値が1になってしまう。。。

解決方法ある??
ガイシュツだったらスマソ
929nobodyさん:2005/06/02(木) 22:25:06 ID:???
単に問題のメソッドをオーバーライドしたクラスを書けばいいだけじゃないか。
930nobodyさん:2005/06/02(木) 22:38:46 ID:???
なるほど、がんばります。
931nobodyさん:2005/06/02(木) 22:54:55 ID:???
>>929
PHP4ではメソッドのオーバーライドはできませんよ?
932nobodyさん:2005/06/02(木) 23:12:50 ID:5Bd9W1e0
>>929,930

ありがとう、できました。
933nobodyさん:2005/06/03(金) 12:33:32 ID:???
>>931
オーバーロード?
934nobodyさん:2005/06/04(土) 17:49:54 ID:???
PHPって標準関数のオーバーライドもできるの?
935nobodyさん:2005/06/04(土) 18:59:06 ID:???
peclの話題だろ
936nobodyさん:2005/06/18(土) 04:12:26 ID:???
がいしゅつかも知れんけど、
DB_common::escapeってpregつかってるから、
もしかしてexecuteにEUC-JPな文字列突っ込んでうまくいってるのって
たまたまだったのか?

orz
937nobodyさん:2005/06/18(土) 04:19:01 ID:???
>>936
Shift-JISなら問題出るかもしれないけど、EUC-JPやUTF-8なら大丈夫だろ。
基本的に被らないし。
938nobodyさん:2005/06/18(土) 06:43:29 ID:???
ああ、たしかにそうでした。

自作アンテナなんだけど、たまに止まるからなんでかなーとおもってたんだが、
よく見たら^Mが入ってた。同じURLで改行コード混在してるページが原因。
それとったら動いたよ。

あとpregがあるのはescapeじゃなかったけど、まあいいや。

ありがとう。
939 ◆f.lightAf6 :2005/06/19(日) 18:10:18 ID:???
....
940nobodyさん:2005/06/24(金) 19:13:08 ID:pYTM6kF2
QUICKFORMの
<form action="..." method="...">のname="..."の部分を消すことはできないんでしょうか?
941nobodyさん:2005/06/25(土) 23:56:31 ID:???
PEAR::Configの使い方が良く分からないんですけど。
誰か実際に使ってる人いたら解説キボンヌ!
942nobodyさん:2005/06/26(日) 00:04:52 ID:???
なにが分からんの?
943nobodyさん:2005/06/26(日) 10:23:37 ID:???
>>940
<?php
$qf->removeAttribute('name');
?>
しかし色々とマトモに動かなくなるので実質は消すことは不可能と考えた方が.
なんで消したいのかを提示してみては? 何か別の解決策があるかもしれない.
944nobodyさん:2005/06/26(日) 15:15:17 ID:???
>>943
XHTML1.0 strictは<form>にnameつけちゃだめっていうルールがあるらしくてそのためにと思ったんですが
945nobodyさん:2005/06/26(日) 15:46:45 ID:???
>>944
それは,廃止予定だから使用「すべきでない」であって,使用「してはならない」ではないのでは……?
XHTML1.1 では name 属性が廃止されているけど,その場合でも,
適合ユーザエージェントは処理できない属性を無視「しなければならない」ので,問題はおきない.
そこをきちんと処理できない Validator の類ではエラーが出るかもしれないけど.

……と自分は理解しているんだけど,間違ってたら指摘おねがいよー
946nobodyさん:2005/06/27(月) 13:53:32 ID:???
HTMLのパーサってPEARにあります?
あったら教えて下さい。
947nobodyさん:2005/06/27(月) 18:17:49 ID:???
>>947
XML_HTMLSax
ttp://pear.php.net/package/XML_HTMLSax

XMLカテゴリにあるから見つけにくいんだよな。
948nobodyさん:2005/06/27(月) 18:18:25 ID:???
アンカーミス
>>946
949nobodyさん:2005/06/27(月) 22:46:11 ID:???
DB_DataObject が MDB 対応だそうですよもまいら
次は pdo 対応ですかね…… 5 だと DBDO に行っちゃうのかな?
950nobodyさん:2005/06/27(月) 23:00:15 ID:???
今さらMDBよりMDB2に対応して欲しいと思う今日この頃。
PHP5なら
$MDB2->setFetchMode(MDB2_FETCHMODE_OBJECT, "someClass");
して、さらに
$result = $MDB2->query($SQL, null, true, "MDB2_Iterator");
foreach($result as $row) {
/* あれこれ */
}
これ最強。
951nobodyさん:2005/06/28(火) 20:25:15 ID:???
>>950
なぁ。それのどこがPEAR::DBと違うの?
大して変わらんやん。
952nobodyさん:2005/07/05(火) 23:29:52 ID:BWLWbomG
Spreadsheet_Excel_Writerで format を使用して書式を変更するのは分かったのですが、

// これだと単一のセルになります
$WorkSheet->write( 1, 0, "1列目", $Format1 );

シートもしくはブック全体に共通の書式を初期設定する方法がわかりません。
教えてください!

953nobodyさん:2005/07/05(火) 23:38:09 ID:???
後で見た人が誤解するといかんので補足

>>950
> 今さらMDBよりMDB2に対応して欲しいと思う今日この頃。

DB_DataObject の MDB 対応は MDB2 だわ.
ていうか MDB1 は対応してないのかな.
MDB といえば当たり前のように 2 を指してるかのように書いてある.
954nobodyさん:2005/07/06(水) 22:39:04 ID:???
pearサイトDB落ちてますYO!
955nobodyさん:2005/07/11(月) 01:02:19 ID:???
XML_RPCがPHP4.3以降対応になってて
pear upgrade-allができない…orz
956nobodyさん:2005/07/12(火) 10:50:02 ID:???
quickformにて、例えば電話番号を三つのinputフォームを用意し、
三つのフォームのうち一つしか記入されていなかったら
JavaScriptでエラーを出したいんだけど、方法はありますか?

三つのフォームにすべて入力されている場合と、
三つのフォームすべてが入力されていない場合は
エラーを出さないようにしたいのです。
957956:2005/07/12(火) 14:06:19 ID:???
解決。
一応載せておきます

$areaCode = $form->createElement('text', '', null, array('size' => 4, 'maxlength' => 3));
$phoneNo1 = $form->createElement('text', '', null, array('size' => 4, 'maxlength' => 3));
$phoneNo2 = $form->createElement('text', '', null, array('size' => 5, 'maxlength' => 4));
$form->addGroup(array($areaCode, $phoneNo1, $phoneNo2), 'phoneNo', 'Telephone:', '-');

$form->addGroupRule('phoneNo', 'Please fill all phone fields', 'required', null, 3, 'client');
$form->addGroupRule('phoneNo', 'Values must be numeric', 'numeric', null, 3, 'client');
958956:2005/07/12(火) 14:28:32 ID:???
あ、ダメだ、すべてのフォームへの入力が必須だ・・・
959nobodyさん:2005/07/12(火) 15:20:27 ID:???
960nobodyさん:2005/07/12(火) 15:23:14 ID:???
って、JavaScriptで出したいのか。
それは、自前で書くしかないんじゃないかなぁ?
961956:2005/07/12(火) 15:24:17 ID:???
>>959
addFormRule()ってJavaScriptでクライアント側にもチェック機能
付けられましたっけ?
962956:2005/07/12(火) 15:32:52 ID:???
>>960
やっぱりそうですか。
自前で書くのも考えましたが、quickformが吐き出すjavascriptに
書き加えるのは単純には行かないですよねぇ・・・
963nobodyさん:2005/07/14(木) 12:06:23 ID:eHIEjUS2
PEAR::MDB + MySQL でSQLのインジェクション対策ってどうやってますか?
DBのときはescapeSimple()関数使ってたんですが・・・。
964nobodyさん:2005/07/15(金) 22:10:16 ID:???
>>889で書いた問題が解決されましたよもまいら

ttp://cvs.php.net/diff.php/pear/HTML_QuickForm/QuickForm.php?r1=1.156&r2=1.157&ty=u

あまりにも長い間放置されてたんで何かポリシーあるのかと思ったが,
やっぱし単にバグだったのか……
開発者たちは Freeze() って使ってないんだろーか?
965nobodyさん:2005/07/18(月) 15:34:03 ID:qAc2zP8J
PHP5+QuickForm3.2.4pl1+Smartyでradioボタンだけ表示されないんだけどどういうこと??
966965:2005/07/18(月) 15:46:54 ID:???
自己解決しました

$radio[] = &HTML_QuickForm::createElement('radio', null, null, 'hoge1', 0);
$radio[] = &HTML_QuickForm::createElement('radio', null, null, 'hoge2', 1);
$form->addGroup($radio, 'hegohego', 'blah');

$form->addElement('radio','','','','')だけじゃ表示されないのね。。

967nobodyさん:2005/07/20(水) 21:28:44 ID:Qqvr7Dca
PEAR::DBで質問です。

nextId()でシリアル値を生成し、INSERTしているのですが、
INSERTされたシリアル値を取得することはできるのでしょうか。

SQLiteを使っています。
Postgresの場合、oidからselectして取得できるのですが、
せっかくPEARを使っているので、特定DBに依存しないやり方が知りたいです。

よろしくお願いします。
968nobodyさん:2005/07/22(金) 01:08:44 ID:???
PEAR::DBについて質問させて下さい。
PEAR::DBのquery()または、execute()で実行されたSQL文をログに出力したいと考えています。

現在は、下記のようにquery()またはexecute()を実行する直前でログに出力しています。
$sql = "select * from table";
$logger->debug($sql); // ここでログに出力
$db->query($sql);

しかし、このような場合は実行されたSQL文を出力できません。
$sql = "insert into table (col1, col2) values(?, ?)";
$params = array(
'val1',
'val2'
);
$sth = $db->prepare($sql);
$logger->debug($sql);
$db->execute($sth, $params);

この場合は、"insert into table (col1, col2) values(?, ?)"がログに出力されますが、
実際に実行されたSQL文(?が実際の値に置換された状態)をログに出力できません。

プレースホルダを使用した場合に、プレースホルダが置換された状態のSQLを取得するには
どうすればいいでしょうか。

[環境]
PostgresSQL 8.0
PHP 4.3.11
Apache 2.0.52
Windows2000 SP4

よろしくお願いします。
969nobodyさん:2005/07/22(金) 01:20:46 ID:IizYuRm3
>>967

マニュアルによると、
$id = $db->nextId('mySequence');
という使い方をしているから、既に取得できていると思われるのだけど?
ttp://www.1x1.jp/php/manual_pear/html/package.database.db.intro-sequences.html
970nobodyさん:2005/07/22(金) 16:29:41 ID:???
>>968
PEAR::DBでは発行されたSQLをログに残す機能はないので、
PostgreSQL側でログに取るほうが楽だと思う。

どうしてもPHP側でやりたければ、DB_pgsql::simpleQuery あたりに
ログを吐くコードを埋め込むのがいいんじゃない?

既存のPEAR::DBのコードを変更したくない場合は、DB_pgsqlを継承したクラスを
つくって、それをDB::connectの返値からうまく生成すればできると思う。
971nobodyさん:2005/07/22(金) 17:24:28 ID:???
>>968
接続時に、オプションでdebug levelを上げれば、どっかでとれそうな気がする。
気がするだけなんだけど。

$db =& DB::connect($dsn, array( 'debug' => 2));
とか
972nobodyさん:2005/07/22(金) 19:48:46 ID:???
>>971
> 接続時に、オプションでdebug levelを上げれば、どっかでとれそうな気がする。

それではとれない。
ソース読めば分かるけど、PEAR::DBではdebug levelはあまり使われておらず

2以上を指定したときに、各DBドライバのロード時のエラーが表示される

という目的にしか使えない。つまり役に立たない。
973968:2005/07/23(土) 00:11:48 ID:???
>>970

できれば、PEAR::DBのコードを修正せずにやりたいので、
DB_pgsqlを継承する方法を試そうとしましたが、
DB::connectの返値からDB_pgsqlを継承したクラスをうまく生成する方法が
思いつきませんでした。

今のところ、PostgreSQL側でログを取るという方法が現実的のようです。

ありがとうございました。
974nobodyさん:2005/07/24(日) 22:40:09 ID:???
>>968
> プレースホルダが置換された状態のSQLを取得するには

今回は pgsql だけの話でいいのかもしれないけど,
そもそもプレースホルダの機能ってのは,
単純に文字列として ? を何かに置き換えるって話だけじゃない機能なので,
「置換された状態のSQL」なんてものは存在しない RDBMS もある.
つまり,発想自体が誤りなので,その機能を DB に要求するのは無理があると思う.

ところでそろそろ次スレの季節かな?
>>990あたりが作ればいいのかな.
975nobodyさん:2005/07/27(水) 05:36:52 ID:3RtjRt/f
HTML_QucikFormで、Filterが最後でしか効かないんですけど、
これを入力エラーで修正中や、freezeして確認する時などにも、
随時効かすようにできないですかねぇ。
976nobodyさん:2005/07/27(水) 11:48:51 ID:???
getSubmitValueを使う方法しか思いつかない
977nobodyさん:2005/07/27(水) 22:47:41 ID:???
exportValues() した値を最後に setConstants() とか……
ふと思いついただけだがそんな糞コードを書いてはいけないヨ?
978nobodyさん:2005/07/28(木) 12:05:29 ID:???
Net_UserAgent_Mobile 0.24.0 up
979nobodyさん:2005/07/28(木) 23:18:56 ID:???
PEAR::Spreadsheet_Excel_Writer使ってみたけどまだまだですな。
縦方向のalignが設定できない(アクセサが無いだけ?)のと、
マージしたセルにフォーマットを適用できないのが致命的。
これならEXCELで作った雛形ファイルをXML形式で保存して、
テキスト置換で編集した方がまし(OfficeXP以降しか読めないけど)。
早くベータ版から正式版にならんかな。
980975
変な小細工するくらいなら、最初からHTML_QuickFormを使わないほうがいいかもしれませんね。
ユーザは、自分がpostした値が、どのようにフィルタされて受け取られるかを
確認できた方がいいんだけどなぁ。
なんだかHTML_QuickForm、便利は便利なんだけど、ぼみょー感を感じます・・。