HTML_QUICKFORMのSELECTにデフォルト値設定したい

このQ&Aのポイント
  • pearライブラリのhtml_quickformを使用してフォームを作成していますが、SELECT要素とhierselectに対してデフォルト値の設定が上手くいきません。
  • テキスト要素にはデフォルト設定が適用されていますが、SELECT要素にはデフォルト値が反映されません。
  • 探している情報は、こちらのページのソースを変更して利用していますが、うまくいきませんでした。解決策やアドバイスを教えていただければ幸いです。
回答を見る
  • ベストアンサー

HTML_QUICKFORMのSELECTにデフォルト値設定したい

pearライブラリのhtml_quickformを使ってフォームを作成しているのですが、どうもSELECT要素に対してデフォルト値の設定がうまくいきません。また、hierselectに対してのデフォルト値設定もうまくいかないので、そちらについてもわかりましたら、お教えください。 検証にはこちらのページのソースを少し変更して利用していましたが、 うまくいきません。テキスト要素に対してはデフォルト設定が利いているようですが、SELECT要素に対してはデフォルト値設定が利かないようです。 http://www.planewave.org/translations/quickform/html_quickform.html 以上となります。 どうぞよろしくお願いいたします

  • PHP
  • 回答数1
  • ありがとう数1

質問者が選んだベストアンサー

  • ベストアンサー
  • gfct9s
  • ベストアンサー率90% (10/11)
回答No.1

そのページのコード5.1と5.2をあわせて実行したところ、おっしゃるとおり select要素だけ既定値が変わりませんでした。 PHPの実行環境は何ですか。Windows2000 + Apache2 + PHP4.4で動かした ところ、確かにだめだったんですが、Linux + Apache2 + PHP4.4で 動かしたところ、setDefaults()でselect要素の既定値が変わりました。 変だなと思って、 > pear upgrade-all しましたところ、Windows環境でも動くようになりました。 ご参考になれば。

oversea6
質問者

お礼

ありがとうございます。 ご指摘どおりやりましたら、 動きました。

関連するQ&A

  • PEAR::HTML_QuickFormのfreezeについて

    PEAR::HTML_QuickFormのfreezeを使って、特定の項目だけフリーズさせたいと考えてます。 全体をフリーズさせるときは、 $this -> freeze(); としてますが、項目のみの場合も出来るような事が書いてありました。 下記のソースの場合は、どのように設定すればよいかおしえてもらえますでしょうか? <?php require_once "HTML/QuickForm.php"; $form = new HTML_QuickForm('frmTest', 'get'); $form->addElement('header', 'MyHeader', 'Testing QuickForm'); $form->addElement('text', 'MyTextBox', 'What is your name?'); $form->addElement('reset', 'btnClear', 'Clear'); $form->addElement('submit', 'btnSubmit', 'Submit'); if ($form->validate()) { # If the form validates then freeze the data $form->freeze(); } $form->display(); ?>

    • ベストアンサー
    • PHP
  • PEAR::HTML_QuickForm 確認から完了について

    PEAR::HTML_QuickFormの使い方として、入力→内容確認→完了のように画面が遷移させるのが一般的だと思っています。 確証(validate)後はどのようにコーディングすれば良いでしょうか。 例えば、よくあるサンプルでこのような書き方があります。 if($form->validate()) { $form->process("hoge"); } しかし、processメソッドは戻り値がないく使いづらいので、ユーザー定義関数に置き換えています。 また if($form->validate()) { $form->freeze(); echo $form->toHtml(); } のようなものも良く見ますが、HTML_QuickForm_Elementのメソッドを利用してもheader要素はいじれないようなのでこれまた使いづらい気がします。 subimitボタンなんかもDefaultRenddererのまんまだとテーブルの要素になってしまうようで、書き直したりして・・・。 結局、不細工なソースになってしまってなんだか釈然としません。 抽象的な質問でスミマセンが、入力後の確認から完了までの標準的な雛形があれば参考にしたいと考えています。

    • ベストアンサー
    • PHP
  • Pear::QuickFormの代わりになる物

    PHP: 5.3.8を利用しております。 結構前のPHPVerで、HTML_Quickformで、form画面を作成したページを 今回のPHP: 5.3.8に載せて動かしてみたところ ”Deprecated: Assigning the return value of new by reference is deprecated in C:\xampp\php\PEAR\HTML\QuickForm.php on line 597” というメッセージが数件表示されるようになりました。 <色々調べてみた結果> ・QuickFormで使用されているメソッド関係が、今後無くなる可能性あり? みたいなことがわかりました。 <対応方法> ・Deprecated: メッセージが表示されないように、設定ファイルの変更 ・作り直し。 がわかりました。 「設定ファイルの変更」は、解決にならないと思うのでする予定はないのですが、 作り直しとして、「QuickForm2」というのものがあることを知りました。 【質問】 QuickForm2で作り直しに挑戦してもよいのですが、stableバージョンが2010年のようなのです。 現在、「QuickForm」のように簡単にフォームが作成できて、PHP: 5.3.8以上で使用しても Deprecated: Assigningメッセージがでない物を探しております。 ご教授おねがいします。

    • ベストアンサー
    • PHP
  • PHP HTMLフォームの作成と取得の最適な方法について

    PHP HTMLフォームの作成と取得の最適な方法について PEARがどんどん発達していて、これを積極的に使うべきだと言われたのですが、掲題のHTMLフォームの作成と値の検証/取得については、HTML_QuickForm2を使うのが現時点では最適でしょうか?インストールまではできたのですが、利用にあたってのマニュアルのようなドキュメントがWEB上にあれば、教えていただけると嬉しいです。 恐れ入りますが、宜しくお願いいたします。

    • ベストアンサー
    • PHP
  • CSSをデフォルトに戻すことは可能でしょうか。

    * input,* select { border: none; } input要素に上記のようなスタイルが設定されている場合、デフォルトのスタイルに戻すことは可能でしょうか。 事情があり、* input,* select {border: none;}は削除できないのですが、ある箇所のinput,select要素ではデフォルトスタイルを適用したいと考えています。 よろしくお願いします。

    • ベストアンサー
    • HTML
  • 全てのselect要素をデフォルトの値に戻す方法

    ページを開いたときは、全てのselect部分ではデフォルトが表示されます。 選択後にブラウザを更新させずに、全てをデフォルトに戻すためには どのようにしたらよいのでしょうか。 html側でselected="selected"とする方法がありますが、 ブラウザによって対応していなかったりしたので、他に確実な方法を知りたいです。 よろしくお願いします。 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html lang="ja"> <head> <meta http-equiv="Content-Type" content="text/html; charset=Shift_JIS"> <title>全てのselectをデフォルトにする</title> </head> <body> <form> <select name="s0" onclick="f(this.form)"> <option value="デフォルト" selected="selected">デフォルト</option> <option value="A">A</option> <option value="B">B</option> </select> <select name="s1" onclick="f(this.form)"> <option value="デフォルト" selected="selected">デフォルト</option> <option value="あ">あ</option> <option value="い">い</option> </select> <select name="s2" onclick="f(this.form)"> <option value="デフォルト" selected="selected">デフォルト</option> <option value="a">a</option> <option value="b">b</option> </select> </form> <script> function f(fff){ var aaa = [] var fel; var sl = document.getElementsByTagName('select').length; for(i=0; i<sl; i++){ fel = fff.elements["s"+i]; //デフォルトかそうでないかをdefaultSelectedで判断 aaa[i] = fel.options[fel.selectedIndex].defaultSelected; if( aaa[i] == false ){ //false(=デフォルトでない)場合はデフォルトに戻す aaa[i] = true; } //戻り値をかえして全てをデフォルトにする return aaa[i]; } } </script> </body> </html>

  • jquery select要素のdisplay:noneについて

    jqueryを使用して、要素の表示・非表示をさせたいのですが、 下記、コードで問題が出ています。 <html> <head> </head> <script src="js/jquery-1.2.6.min.js" type="text/javascript"></script> <script type="text/javascript"> $(function(){ $(".dis").toggle( function(){ $("table.displayArea").attr("style","display:block"); }, function(){ $("table.displayArea").attr("style","display:none"); } ); }); </script> <body> <a href="#" class="dis">test</a> <table class="displayArea" style="display:none"> <tr> <td><select name=""> <option selected="selected">選択</option> </select></td> </tr> </table> </body> </html> aタグをクリックするとselectフォームがちゃんと表示されるんですが、 再度クリックしてもselectフォームが非表示にされません。 試しに、フォームでなくただのテキスト文字にしてみると、 ちゃんと、表示・非表示がうまくいきます。 その他のフォーム要素も試してみたのですが、問題ありませんでした。 なのでselect要素だけちゃんと非表示されないようです。 何が原因なのかお分かりになる方がいらっしゃいましたら、 ご教授いただけると幸いです。

  • 複数のselect値で1つも選択されていないとき、エラーを出したいのですが

    初めて投稿いたします。 宜しくお願いいたします。 postmailで注文フォームを制作中なのですが、複数の商品の個数(デフォルトでは0に設定)をselectで選択させようとしています。 例: <tr><td class="center">NO.01</td><td>あんまん</td> <td><select name="あんまん"><option selected value="">0</option> <option value="1">1</option> (~略~) <option value="9">9</option></select></td></tr> <tr> <td class="center">NO.02</td><td>にくまん</td> <td><select name="にくまん"><option selected value="">0</option> <option value="1">1</option> (~略~) <option value="9">9</option></select></td></tr> もし、すべての商品の個数が「0」に設定されている場合はエラーを出して、cgiでの送信を中止させたいのですが、どのようなjavascriptをソースに書けば良いでしょうか?  宜しくお願いいたします。

  • 参照渡しを使う理由がわかりません

    PEARの 'HTML/QuickForm.php' を利用し、フォームを作成しようと思いました。 以下ソースを入力していたところ、ラジオボタンのところで参照渡しが出てきました。 【$obj =& $form->addElement("radio", "age", "年代:", "10代", "10", array("checked"));】 ラジオボタン以前のテキストボックス等は = だったのですが、なぜ、 ラジオボタンだけ参照渡しをするのでしょうか? 何かメリットがあるから参照渡しをしているのだと思うのですが…。 ご教授よろしくお願いします ====ソースここから <?php // 必要パッケージの読込み require('HTML/QuickForm.php'); // ●Form要素の構築 $form = new HTML_Quickform("test","POST"); // formの設定 $form->setRequiredNote("<span style=color:red>*</span> 記入必須項目"); // 記入必須項目の説明用文字列設定 $form->setJsWarnings("エラー",""); // Javascriptエラーの際の文字列設定 // header 要素を追加 $form->addElement("header", "title", "情報を記入"); // hidden 要素を追加 $form->addElement("hidden", "id", uniqid("")); // text 要素を追加 $form->addElement("text", "name", "名前:", array("value"=>"","size"=>"24")); // radio 要素を追加 $obj =& $form->addElement("radio", "age", "年代:", "10代", "10", array("checked")); // デフォルトでチェックの設定にする $obj->setChecked(TRUE); $form->addElement("radio", "age", "", "20代", "20"); $form->addElement("radio", "age", "", "30代", "30"); $form->addElement("radio", "age", "", "40代", "40"); : : =========ソースここまで

    • ベストアンサー
    • PHP
  • DB抽出結果を配列のままフォームのSELECTに使いたい

    環境はWINDOWS XP Apache2.2 PHP 5.2.3 MYSQL5 です PDOにてDB接続してます quickformを使ってフォームを作成したいと思っています include 'connect.php'; $rs=$db->query("select id,name from master"); にてIDと名前の配列を抽出し、 require_once'HTML/Quickform.php'; $form=new HTML_quickform('myform','POST','test.php'); $form->addelement('select',name,'氏名',$rs); として、氏名のドロップダウンリストを表示させたいのですが、 $rs->fetch()などで一行ずつ取り出さずに配列のままリストに入れる方法がうまくいきません。 ご教授下さい

    • 締切済み
    • PHP

専門家に質問してみよう