Pear

このエントリーをはてなブックマークに追加
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、便利は便利なんだけど、ぼみょー感を感じます・・。