Pear
レス数が950を超えています。1000を超えると書き込みができなくなります。
0001名無しさん@お腹いっぱい。
NGNG0858857
2005/04/28(木) 13:18:00ID:???0859854
2005/05/01(日) 16:54:55ID:???サンクス
Mojavi + HTML_QuickForm + Smarty
という組み合わせなんですけど、
動的にFormのinput type=textを作成するのは、
どのような方法があるのでしょうか?
0860nobodyさん
2005/05/05(木) 21:45:53ID:KICI+UTUrequire_once('Auth/Auth.php');
して普通に使えてますか?僕の環境ではうまくクラスを認識しなかったので
ファイルの内容を移し替えたらうまく認識しました。
上でrequireされてる
PEAR/Auth/Auth.php自体は
include_once('Auth.php');
してるだけだったのでPEAR/Auth.phpの内容を丸ごと
PEAR/Auth/Auth.phpに移し替えたら使えるようになりました。
あれはどういうことだったんだろう?ちょっと疑問なので
知ってる人いたら教えてください。
windows環境で、PEARフォルダにはinclude_pathも通ってます。
0861nobodyさん
2005/05/05(木) 22:53:32ID:???こうすればよくない?
0862nobodyさん
2005/05/05(木) 22:54:34ID:k8Nl2PhYっwwwwwwwwwwwwうはっっおkうぇおkwwwwwww
wwwwwwおkうぇwwwwwwwwwwww
うぇっうはっwwwwwwうはっwwwwwwwwwwww
wwwwwwうぇっwwwwwwwwwwww
0863860
2005/05/05(木) 23:24:36ID:KICI+UTUPEAR/Auth/Auth/ 以下にコンテナ、コントローラーなどがあるので、
パスの関係上、 PEAR/Auth/Auth.phpに移し替えた移し替えた次第です。
0864nobodyさん
2005/05/05(木) 23:27:46ID:???ふつうはphp_dir/Auth以下に展開されるよ。
% ls /usr/local/share/pear/Auth
Auth.php Container Container.php
0865860
2005/05/05(木) 23:42:19ID:KICI+UTUAuth.php Container Container.php は PEAR/Auth/以下ですね。
でもいずれにしても
require_once('Auth.php');
では読めませんでした。
0866nobodyさん
2005/05/07(土) 02:05:32ID:???0867nobodyさん
2005/05/07(土) 02:42:05ID:???0868nobodyさん
2005/05/10(火) 00:02:29ID:???現状、以下のような指定をしていますが、初期値が空白になりません
$form->setDefaults(array(
'fmData' => array( 'm' => ' ', 'd' => ' ', 'Y' => ' ' )
));
// 日付
$DayNow=getdate();
$DateOptions= array(
'language' => 'en',
'format' => 'Y年 m月 d日',
'minYear' => $DayNow[year] - 1,
'maxYear' => $DayNow[year] + 2,
'addEmptyOption'=>true
);
$form->addElement('date', 'fmData', '開始日', $DateOptions);
0869868
2005/05/10(火) 00:12:19ID:???$form->setDefaults(array(
'fmData' => array( 'm' => ' ', 'd' => ' ', 'Y' => ' ' )
));
↓
$form->setDefaults(array(
'fmData' => array( 'm' => '', 'd' => '', 'Y' => '' ) // スペースを詰める
));
0870nobodyさん
2005/05/13(金) 12:10:11ID:???DBはPerlのDBIみたいに洗練されてると思うのですが
新たに別のモジュールを開発する必要があったのでしょうか?
それって車輪の再発明・・・
0871nobodyさん
2005/05/13(金) 12:24:14ID:???0872nobodyさん
2005/05/13(金) 15:42:29ID:OaFXqrM9webで探すとSmartyとの連携ばかりですけど・・・
0873nobodyさん
2005/05/13(金) 16:06:53ID:???pear/doc(s)/HTML_QuickForm/docs/renderersにサンプルあるし。
0875nobodyさん
2005/05/13(金) 16:30:29ID:???0877nobodyさん
2005/05/13(金) 16:44:07ID:???0878nobodyさん
2005/05/13(金) 17:38:03ID:???コードの洗練具合では圧倒的にMDB2の方が上だね。
0879nobodyさん
2005/05/13(金) 19:19:19ID:SDhwmUt9DSN の "mode" => "0644" というのは書き込みできない
という意味でしょうか?
書き込みできるんですが、、、
"mode" => "0666" との違いがわかりません。
0881879
2005/05/13(金) 19:53:06ID:???んとわかります。
ファイルの属性? 666にしないとダメですよね?
そうすると "mode" は関係なく動くような気がします。
ファイル属性 644 だと "mode" 関係なしでダメ。
0884nobodyさん
2005/05/13(金) 22:23:33ID:MPQs+RJ/オブジェクトを指定してくださいって出る。
Smarty + QuickForm前提で話し進めちゃうけど。
ルールの指定でclientを選択しながら、
{$form.javascript}
を書いていなかったりしません?
0887884
2005/05/14(土) 09:14:50ID:yiKQRA/S書いててもエラー出ます。
インターネットオプションでスクリプトのエラーごとに表示されるように設定していると、
エラーが警告が出ます。そうじゃない場合はエラー表示でません。
(これはたぶんオフにしている人が多いと思う)
freezeさせて、validateが必要なくなった時、form.javascriptはプリントされなくなるのに、
onsubmitの方のvalidate呼び出し関数は残ったままなので、エラーとなるようです。
動作自体に影響はないんだけど、アラートでエラー表示が出るので邪魔になる・・。
あー、なるほど。
自分は時間無くてとりあえずserverでのチェックだけにして逃げちゃったんですよ(苦笑
ちょっと時間見つけてコード追ってみるー。
0889nobodyさん
2005/05/14(土) 20:13:14ID:???あーそれか……
ずっと昔からそうなので,自分はもっのすごくアドホックな対処をしてる.
<script type="text/javascript">if(typeof(validate_フォーム名)=='undefined'){var validate_フォーム名=new Function("return true")}</script>
という HTML を,static エレメントとして追加してやるの.
で,フォーム遷移を管理する自作クラスにそれを組み込んで,
そのままこの問題について忘れてたw
まだ直ってなかったのか……
>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の時に通らないようにすれば大丈夫な気がするです。
0891887
2005/05/16(月) 10:10:54ID:6UiQU/azありがとうございます。
結局スクリプト側で、form.JavaScriptが空の時は、
アドホックに >>889のコードを入れることで、対応してしまいました。
ところで、HTML_QuickFormで送られた内容の控えをユーザ宛にも
メール送信したいのですが、結果HTMLを表示する要領で、
テキスト形式で結果内容を生成することはできますか?
0892nobodyさん
2005/05/16(月) 11:27:58ID:???(どっかのスレでやり方探してる人いなかったっけ?)
もし既知のことだったら知ってたらスルーして下さい。
$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ってどれも重い気がするので、フォームが多い画面作るときは
オブジェクトをコピーしたほうがいいね。
0893nobodyさん
2005/05/16(月) 12:22:44ID:???マニュアルか以前に書いたソース見ないと書けない
0895nobodyさん
2005/05/19(木) 21:57:06ID:ZZw6s72mPEARの基底クラスを継承してPEAR_Errorを発生させようかと
思ってるのですが使い方間違ってますかね?
みなさんそこまでこだわらずにメソッドの戻り値で判断させてます?
0896nobodyさん
2005/05/19(木) 22:53:35ID:???エラーを返したい場所で
return PEAR::raiseError('Error message', MY_ERROR_CODE);
などとするだけでいい。
呼び出した側でのエラーチェックは、常に
if (PEAR::isError($result)) {
// エラー処理
}
で。
0897nobodyさん
2005/05/20(金) 00:01:48ID:wjKv+x9sなるほど、そんな使い方もできたんですね。
ちなみにPAERのエラー処理って、PEARライブラリ製作者用のクラス
であって、PHP4のエラー処理として推奨されているわけではないのかな?
今すごく迷っているんですけど、
PHP4のエラー処理で最も適しているのは以下のどれになりますか?
識者のご意見お聞かせ下さい。
1、メソッドの戻り値で判断する
2、標準のエラー処理用関数郡を使う
3、PEAR基底クラスのエラー処理を使う
0898nobodyさん
2005/05/20(金) 15:49:22ID:???俺はPEAR_ErrorStack使ってる。
マニュアル以外で解説見たこと無いが、個人的にはPEAR_Errorより好き。
ttp://pear.php.net/manual/en/core.pear.pear-errorstack.intro.php
ここ読めば大体の使い方は分かるので、一度読んでみて。
0899nobodyさん
2005/05/21(土) 18:41:50ID:???もう 2 年くらいソレでがんがん使ってる。問題ない。っつーか快適。
デバッグ時は backtrace させて (昔は Xdebug とか PEAR::VarDump 無かった)、運用時は小山氏@雑誌連載式にログったりメール飛ばしたり。
>>897
ケースバイケースで組み合わせ。
> 例外処理が無いのでエラー処理が非常に面倒
とか見ると Java の人?と思っちゃう。
PHP の世界に入ってきたのなら、PHP の流儀を意識した方が幸せになれると思う。
ErrorStack いいらしいですね。
最近勉強してないな…
0900nobodyさん
2005/05/22(日) 21:41:19ID:???例外処理なんてJava以前から余裕であるわけだが。
0901nobodyさん
2005/05/23(月) 01:17:27ID:???という話。
0902nobodyさん
2005/05/23(月) 02:07:06ID:???sqlite_create_functionは使えませんか?
「Warning: sqlite_create_function() expects parameter 1 to be resource
」
というエラーが出るんですけど。
ソースはこんな感じです。
$db = DB::connect($dsn);
sqlite_create_function($db, 'NOW', 'time', 0);
0903nobodyさん
2005/05/23(月) 02:12:39ID:???したらnull?
0904nobodyさん
2005/05/23(月) 03:53:41ID:???Nullではないです。
サンプルではsqlite_create_functionを使う場合は
sqlite_open関数を使っているので、PEAR::DBでは
エラーになってしまうのかと思ったのですが。
0905nobodyさん
2005/05/23(月) 10:34:57ID:???PEAR なら、エラーオブジェクトという事もある。
0906nobodyさん
2005/05/23(月) 13:06:09ID:???DB::connect() の戻り値はSQLiteのリソースハンドルじゃなくて
DB_sqliteオブジェクトなので、そのままsqlite_xxx関数には渡せないよ。
どうしても使いたいなら
sqlite_create_function($db->connection, 'NOW', 'time', 0);
のようにDB_sqliteから接続ハンドルを取り出さないと。
0908nobodyさん
2005/05/29(日) 00:33:18ID:3agdROOk0909nobodyさん
2005/05/29(日) 00:59:27ID:???というか、動かなかったらおそらくバグなので
bugs.php.netに報告よろ
0910909
2005/05/29(日) 01:09:41ID:???PEARパッケージのバグは、各パッケージのページ
http://pear.php.net/package/パッケージ名
のBugsタブから。
0911nobodyさん
2005/05/29(日) 07:39:53ID:oziLOzHHありがとうございます。PHP5対応は考慮されているんですね。
それでは逆に、PHP4の互換保持は考慮されているものでしょうか?
0912902
2005/05/29(日) 16:33:06ID:???お世話になった者です。
PEAR::DBを継承させたmyDBクラスを作ってSQLiteで色々な
関数を使えるようにしてみました。
これで他のDBからSQLiteへの移行が比較的楽にできるのではないかと
思うのですがどうでしょうか?
ソースは次レスで。
0913902
2005/05/29(日) 16:34:16ID:???<?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);
}
?>
0914902
2005/05/29(日) 16:34:48ID:???<?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();
?>
0915902
2005/05/29(日) 16:38:00ID:???0916nobodyさん
2005/05/29(日) 16:48:45ID:???抽象化したいなら、抽象化度の高い MDB2、DB/MDB_QueryTool のようなクエリビルダや Propel、DBDO といった ORM 使ってみ。
0917nobodyさん
2005/05/29(日) 18:47:10ID:???DBDOって判りづらいだろう。DB_DataObjectのことね。
あと、速度重視するならADODBとPDOも選択肢に追加。
0918nobodyさん
2005/05/30(月) 19:32:29ID:RWhNHsSfフォーム中にJavaScriptを埋め込む事って可能?
例えば、select1の選択内容によって、select2の内容を変更するって感じのものを作りたいんだけど、
selectタグの属性に「onChange="hoge()"」って感じに属性を記述することは可能?
0923nobodyさん
2005/05/31(火) 12:11:30ID:???0924nobodyさん
2005/06/01(水) 19:08:06ID:???なんでvalideteだけを独立して使うことはできんの?
0925nobodyさん
2005/06/01(水) 20:12:55ID:???0926nobodyさん
2005/06/02(木) 02:12:22ID:???ルールの複数定義を嫌って無理矢理使ったような記憶があるが…
0927nobodyさん
2005/06/02(木) 07:11:22ID:???単に display() とかを使わなければいいだけでは.
addElement() したくない,ってことなら,
おとなしく PEAR の Validate を使ってひとつひとつ自分でチェックすべし.
0928nobodyさん
2005/06/02(木) 22:14:43ID:???checkboxの値をupdateAttributesで更新しても、freeze()したときに、
hiddenの値が、1にならないか??
よくよくしらべていると、freeze時にhiddenを生成するときに、
getValueを呼び出してるんだが、
checkboxクラスのgetValueは、getCheckecの戻り値を返すようになってるから、
結局セットされる値が1になってしまう。。。
解決方法ある??
ガイシュツだったらスマソ
0929nobodyさん
2005/06/02(木) 22:25:06ID:???0930nobodyさん
2005/06/02(木) 22:38:46ID:???0932nobodyさん
2005/06/02(木) 23:12:50ID:5Bd9W1e0ありがとう、できました。
0934nobodyさん
2005/06/04(土) 17:49:54ID:???0935nobodyさん
2005/06/04(土) 18:59:06ID:???0936nobodyさん
2005/06/18(土) 04:12:26ID:???DB_common::escapeってpregつかってるから、
もしかしてexecuteにEUC-JPな文字列突っ込んでうまくいってるのって
たまたまだったのか?
orz
0937nobodyさん
2005/06/18(土) 04:19:01ID:???Shift-JISなら問題出るかもしれないけど、EUC-JPやUTF-8なら大丈夫だろ。
基本的に被らないし。
0938nobodyさん
2005/06/18(土) 06:43:29ID:???自作アンテナなんだけど、たまに止まるからなんでかなーとおもってたんだが、
よく見たら^Mが入ってた。同じURLで改行コード混在してるページが原因。
それとったら動いたよ。
あとpregがあるのはescapeじゃなかったけど、まあいいや。
ありがとう。
0940nobodyさん
2005/06/24(金) 19:13:08ID:pYTM6kF2<form action="..." method="...">のname="..."の部分を消すことはできないんでしょうか?
0941nobodyさん
2005/06/25(土) 23:56:31ID:???誰か実際に使ってる人いたら解説キボンヌ!
0942nobodyさん
2005/06/26(日) 00:04:52ID:???0943nobodyさん
2005/06/26(日) 10:23:37ID:???<?php
$qf->removeAttribute('name');
?>
しかし色々とマトモに動かなくなるので実質は消すことは不可能と考えた方が.
なんで消したいのかを提示してみては? 何か別の解決策があるかもしれない.
0944nobodyさん
2005/06/26(日) 15:15:17ID:???XHTML1.0 strictは<form>にnameつけちゃだめっていうルールがあるらしくてそのためにと思ったんですが
0945nobodyさん
2005/06/26(日) 15:46:45ID:???それは,廃止予定だから使用「すべきでない」であって,使用「してはならない」ではないのでは……?
XHTML1.1 では name 属性が廃止されているけど,その場合でも,
適合ユーザエージェントは処理できない属性を無視「しなければならない」ので,問題はおきない.
そこをきちんと処理できない Validator の類ではエラーが出るかもしれないけど.
……と自分は理解しているんだけど,間違ってたら指摘おねがいよー
0946nobodyさん
2005/06/27(月) 13:53:32ID:???あったら教えて下さい。
0947nobodyさん
2005/06/27(月) 18:17:49ID:???XML_HTMLSax
ttp://pear.php.net/package/XML_HTMLSax
XMLカテゴリにあるから見つけにくいんだよな。
0949nobodyさん
2005/06/27(月) 22:46:11ID:???次は pdo 対応ですかね…… 5 だと DBDO に行っちゃうのかな?
0950nobodyさん
2005/06/27(月) 23:00:15ID:???PHP5なら
$MDB2->setFetchMode(MDB2_FETCHMODE_OBJECT, "someClass");
して、さらに
$result = $MDB2->query($SQL, null, true, "MDB2_Iterator");
foreach($result as $row) {
/* あれこれ */
}
これ最強。
0952nobodyさん
2005/07/05(火) 23:29:52ID:BWLWbomG// これだと単一のセルになります
$WorkSheet->write( 1, 0, "1列目", $Format1 );
シートもしくはブック全体に共通の書式を初期設定する方法がわかりません。
教えてください!
0953nobodyさん
2005/07/05(火) 23:38:09ID:???>>950
> 今さらMDBよりMDB2に対応して欲しいと思う今日この頃。
DB_DataObject の MDB 対応は MDB2 だわ.
ていうか MDB1 は対応してないのかな.
MDB といえば当たり前のように 2 を指してるかのように書いてある.
0954nobodyさん
2005/07/06(水) 22:39:04ID:???0955nobodyさん
2005/07/11(月) 01:02:19ID:???pear upgrade-allができない…orz
0956nobodyさん
2005/07/12(火) 10:50:02ID:???三つのフォームのうち一つしか記入されていなかったら
JavaScriptでエラーを出したいんだけど、方法はありますか?
三つのフォームにすべて入力されている場合と、
三つのフォームすべてが入力されていない場合は
エラーを出さないようにしたいのです。
0957956
2005/07/12(火) 14:06:19ID:???一応載せておきます
$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');
レス数が950を超えています。1000を超えると書き込みができなくなります。