PHP Pear HTML_QuickForm


$array = (0=>name, 1=>email, 2=>feedbak);
for($i=0;$i<=count($array);$i++){$form->addRule($array[$i].....);}

では問題なく動くのですが、

別スクリプトから渡された連想配列では動きません。
print_rでは全く同じ値なのですが、なぜか他のスクリプトで格納された連想はNGです。

解決方法を教えて下さい。

回答の条件
  • 1人20回まで
  • 登録:2009/01/02 12:32:48
  • 終了:2009/01/09 12:35:03

回答(1件)

id:pahoo No.1

pahoo回答回数5960ベストアンサー獲得回数6332009/01/02 22:19:45

ポイント60pt

別スクリプトから渡された連想配列

どのような渡し方をしていますか?


問題のスクリプトを見ないと確実なことは言えませんが、値渡しになっているのではないでしょうか。

配列を渡すのであれば、参照渡しを使った方がいいでしょう。


参考サイト

id:esecua

回答有り難うございます。

>どのような渡し方をしていますか?

DBからデータを引っ張り、連想配列にして、それを単純にaddRule格納しています。


$mysqlは各データをデータベースから引き出し、連想配列に格納しています。


$s['f']="name";

$mysql['f']

両方とも同じ値なのですが、

$objQF->addRule(, '入力してません','required');

では $sの場合、必須を促す*は表示されませんが、入力チェックはサーバでしっかり行われます。

$mysqlの場合は*は表示されますが、入力チェックは行われないため、未入力であってもそのまま処理されてしまいます。

2009/01/03 02:43:20
  • id:tezcello
    うまくいく場合と、ダメな場合、それぞれを var_dump() で調べてみましたか?
    同じ用な配列(インデックスが数値で、0から始まり、抜けが無い、普通の配列)となってますか?


    以下、余計なお世話でしょうけど
    > $array = (0=>name, 1=>email, 2=>feedbak);
    これってチャンと動作しますか?(ただのミスタイプだとは思いますが)
    $arry = array(0=>'name', 1=>'email', 2=>'feedbak');
    のように関数名と同じ変数名は避けるべきかと。
    また、変数の値は、引用符で括るべきでしょう。
  • id:esecua
    ご返答有り難うございます。

    一応全ての値をvar_dumpで調べましたが、自分で見る限り問題ないように思えます。

    試しに

    if($str['0']=="name"){$form->addRule($str['0']......);}

    とやってみますと、入力必須の*は表示されますが、入力のチェックは行われません。

    また、

    if($str['0']=="name"){$form->addRule('name',......);}

    とやってみますと*は表示されませんが、入力のチェックは行われます。

    ただ単に
    $form->addRule('name',....)
    と記載しますと*と入力チェックが作動します。

    自分も初めてのエラー処理なので正直お手上げ状態です。
    どうぞよろしくお願いします。

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

絞り込み :
はてなココの「ともだち」を表示します。
回答リクエストを送信したユーザーはいません