• 締切済み

QuickFormのradioボタンでエラーが出る

require_once("HTML/QuickForm.php"); $form = new HTML_QuickForm(); $ques[] = &HTML_QuickForm::createElement('radio', null, 'Yes', 'Yes', '1');←”ここでエラーがでる” $ques[] = &HTML_QuickForm::createElement('radio', null, 'No', 'No', '2'); $form->addGroup($ques, 'ques'); $form->addRule('ques', '入力してください。', 'required', null, 'client'); if ($form->validate()){ $form->freeze();} $form->addElement('submit','submit', '送信'); require_once("HTML/QuickForm/Renderer/ArraySmarty.php"); $renderer= new HTML_QuickForm_Renderer_ArraySmarty($smarty); $form->accept($renderer); $smarty->assign('form', $renderer->toArray()); $file = 'test.tpl'; $smarty->display($file) ----------------------------------------------------------- HTML_QuickFormでラジオボタンをチェックしたいのですが、「←”ここでエラーがでる”」の部分で、Fatal error: [] operator not supported for strings in /virtual/パス/test.php on line 19←ここの数字はエラー行 のエラーがでます。 どうやったら、エラーを回避できるか分かりません。 よろしくお願いします。

  • PHP
  • 回答数2
  • ありがとう数0

みんなの回答

  • wp_
  • ベストアンサー率54% (132/242)
回答No.2
a-z_A-Z
質問者

補足

array_push($ques, &HTML_QuickForm::createElement('radio', null, 'Yes', 'Yes', '1')); $ques2 = &HTML_QuickForm::createElement('radio', null, 'Yes', 'Yes', '1'); array_push($ques, $ques2); どうやって良いのか分からなかったので、上記のようにして試してみましたが、ダメでした。

  • shimix
  • ベストアンサー率54% (865/1590)
回答No.1

QuickFormは触ったことがありませんが(汗 [] operator not supported ということですから、[]がマズイのでは? $ques1 = &HTML_QuickForm::createElement('radio', null, 'Yes', 'Yes', '1'); $ques2 = &HTML_QuickForm::createElement('radio', null, 'No', 'No', '2'); $form->addGroup($ques1, 'ques'); $form->addGroup($ques2, 'ques'); とかではダメですか?(どうしても配列にしないと困るとか)配列だと、こんなの↓は通るんですかねぇ・・と私なら試行錯誤してみます(苦笑 $ques[0] = &HTML_QuickForm::createElement('radio', null, 'Yes', 'Yes', '1'); $ques[1] = &HTML_QuickForm::createElement('radio', null, 'No', 'No', '2'); $form->addGroup($ques, 'ques');

a-z_A-Z
質問者

補足

>$ques1 = &HTML_QuickForm::createElement('radio', null, 'Yes', 'Yes', '1'); radioボタンが表示されませんでした。 >$ques[0] = &HTML_QuickForm::createElement('radio', null, 'Yes', 'Yes', '1'); 「Fatal error: Cannot create references to/from string offsets nor overloaded objects in /virtual/パス/test.php on line 19」 と言うエラーが出ました。

関連するQ&A

  • PEAR::HTML_QuickFormで、POSTされたラジオボタン配列の値がprintできないのですが・・・

    下記サンプルで、 ソース http://www.okushin.co.jp/information/tanuki03/index.php 画面 http://www.okushin.co.jp/information/tanuki03/tanuki03_frmTanuki/index.php POSTされたラジオボタンの配列の値をprint(またはecho)するには どのように記述したらよいでしょうか。 // 「好きな動物」ラジオボタンのグループ // 第二引数の「名称」が同じボタンの中から一つだけが選択できる。 $animalRdoArr[] = &HTML_QuickForm::createElement('radio','rdoAnimal',null,'犬',0); $animalRdoArr[] = &HTML_QuickForm::createElement('radio','rdoAnimal',null,'猫',1); $animalRdoArr[] = &HTML_QuickForm::createElement('radio','rdoAnimal',null,'こうもり',2); 例えば、「犬」を選択したら0(ゼロ)がPOSTされますが、 (1) print $animalRdoArr[]; →エラーになります (2) print $animalRdoArr; →NULLを返してきます (3) print $rdoAnimal; →NULLを返してきます たぶん、些細な問題でしょうが・・よろしくお願い致します。

    • ベストアンサー
    • PHP
  • HTML_QuickForm ラジオボタンにデフォルト値を設定するには

    HTML_QuickForm::createElementにて作成したラジオボタンのグループの1つにデフォルトでチェックを入れるにはどうしたら良いでしょうか。 addElementではなくcreateElementです。 具体的にはこのようなソースです。 for($i=0;$i<=$m;$i++) { $tmp[$i] = array( $form->createElement("text","t", ), $form->createElement("radio","r",NULL,"r0",0), $form->createElement("radio","r",NULL,"r1",1), $form->createElement("radio","r",NULL,"r2",2) ); $form->addGroup($tmp[$i],"gp".$i,"rgp".$i.":"); } r0をチェックした期待するhtmlは下記の通りです。 <input type="radio" name="gp1[r]" value="0" checked>r0 宜しくお願い致します。

    • ベストアンサー
    • PHP
  • 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
  • HTML_QuickForm_Renderer_ArraySmartyの動作について

    こんにちわ。 今SMARTYの勉強をしており、色々サンプルスクリプトを動かしたりしているのですが、PHPからHTML_QuickFormを動かす分には全く問題ないのですが(http://pear.php.net/manual/en/package.html.html-quickform.tutorial.phpのサンプルスクリプトは動作します)、テンプレート上で使おうと思うと動きません。SMARTYはインストールされていますし、HTML_QuickForm_Renderer_ArraySmartyの存在も確認しました。どこか設定する箇所があるのでしょうか?PEARとSMARTYの連携について書かれている書籍やサイトも少なく、苦戦しております。アドバイスの程よろしくお願いいたします。

    • 締切済み
    • PHP
  • QuickForm createElement での select の使いかたについて

    有識者の皆様 PHP QuickForm にて、以下のようなコードを書いています。 最終的な表示を 訪問履歴 [ ] 年 [ ] 月 [ ] 回 というようにしたいのですが、年・月・日ともに表示できません。 以下に、実際のコードを転記致します。 <?php $monthA = array('選択してください', '01','02','03','04','05','06','07','08','09','10','11','12' ); $yearA = array('選択してください', date('Y'),date('Y', time() - 60*60*24*365*1) ); $countA = array('選択してください', '1','2','3','4','5','6','7','8','9','10' ); $v[] = &HTML_QuickForm::createElement('select', 'year', '年', $yearA); $v[] = &HTML_QuickForm::createElement('select', 'month', '月', $monthA); $v[] = &HTML_QuickForm::createElement('select', 'count', '回', $countA); $form->addGroup($v, null, '訪問履歴', '&nbsp;'); ?> ご回答お願い致します。

    • 締切済み
    • PHP
  • PEARのライブラリはどこにインストールされるのでしょう

    お疲れ様です。 お世話になっております。 HTML_QuickFormに関して質問です。 CentOSでPEARをインストールし、 pear install HTML_QuickFormでインストールしました。 pear list すると HTML_Common 1.2.4 stable HTML_QuickForm 3.2.9 stable PEAR 1.4.9 stable と、インストールは確認できます。 php.iniのinclude_pathは include_path =".:/usr/lib/php/smarty:/usr/lib/php/pear" となっています。 smartyはrequire_once"Smarty.class.php";で呼び出しできるのですが、 HTML_QuickFormが"HTML/quick_form.php"でfile not foundになってしまいます。 pearのディレクトリをのぞいてみたら空の状態なんですが、いったいどこにHTML_QuickFormはインストールされているのでしょうか。 pearのライブラリはpearの配下にくると思っていたのですが。 呼び出すにはどこのパスを指定すればよいのでしょう・・・。

    • 締切済み
    • PHP
  • HTML_QuickFormのチェックボックスについて

    smartyと連携させて作っています。 チェックボックスで取得した値を任意の場所に指定させたいのですが どのようにすればできるのでしょうか? 現状は、チェックボックスの値は正常に表示されるのですがメール本文 の最下部に表示されてしまい任煮の場所に表示させたいのですが方法がわかりません。 「現状のメール本文」 =============================================================== 【氏名】 nameに入力した値 【選択】 Array //←Arrayではなくここに選択肢の値を入れたい =============================================================== cb3の値 //←ここに選択肢の値は表示させたくない 中身は以下のようになっています。(抜粋) <?php $form->addElement('text', 'name', '氏名'); $checks = array(); $checks[] =& HTML_QuickForm::createElement('checkbox', 'cb3_1', null, 'cb3_1_label'); $checks[] =& HTML_QuickForm::createElement('checkbox', 'cb3_2', null, 'cb3_2_label'); $checks[] =& HTML_QuickForm::createElement('checkbox', 'cb3_3', null, 'cb3_3_label'); $form->addGroup($checks, 'cb3', '選択', "<br />\n"); $form->addGroupRule('cb3', '選択は必須項目です', 'required', null, 1); $message = <<<EOD =============================================================== 【氏名】 {$value['name']} 【選択】 {$value['cb3']} =============================================================== EOD; foreach ($value['cb3'] as $k => $v) { switch ($k) { case 'cb3_1' : $message .= "選択肢1が選択されました。\n"; break; case 'cb3_2' : $message .= "選択肢2が選択されました。\n"; break; case 'cb3_3' : $message .= "選択肢3が選択されました。\n"; break; } } mb_send_mail($to, $subject, $message, "From: {$value['email']}"); $form->freeze(); } else if ($form->validate() && isset($value['confirm'])) { } else { } ?>

    • 締切済み
    • PHP
  • smartyとHTML_QuickFormの連携

    いまさらながらですがsmartyとHTML_QuickFormの連携を勉強しようと 思いいろんなサイトを見てみたのですが応用の方法はみつかるものの 最初の設定に関する説明などがなかったので教えて下さい。 自分でやったことは以下の手順です。 1:Smarty-2.6.18を下記urlからダウンロード http://smarty.php.net/download.php 2:HTML_QuickForm-3.2.10を下記urlからダウンロード http://pear.php.net/package/HTML_QuickForm/ これ以上どのようにすればいいのかがわかりません・・・ HTML_QuickForm-3.2.10をどこのフォルダにいれればいいのか ファイルがこれだけで十分なのかすらわからない状態です^^; 使用するレンタルサーバーはsmarty使用可能なのですが使う場合は 自分でインストールしなければならないので最初にどのような ファイル構成でアップすればいいのかでつまづいております。 わかりづらい文章化とは思いますが是非ご教授下さい!

    • 締切済み
    • PHP
  • php session_start()

    いつもお世話になっております PHP session_start()について質問させていただきます。 ブラウザで確認すると以下のワーニングが表示されます。 Warning: session_start() [function.session-start]: Cannot send session cookie - headers already sent by (output started at ファイル名) in ファイル名 過去の質問を参考にしてphpinfo()を使用してサーバの設定を確認したところ、Session Supportはenabledとなっております。 また、余分なスペースなどが無いよう、コードを1行にまとめて試してみましたが同じ結果でした。 コードは以下のとおりです。ちなみにサーバはレンタルサーバを使用しております。 ■index.php <?php  $documentroot = dirname( __FILE__) . '/';  require_once $documentroot . '../php_libs/config/config.inc.php';  require_once("Auth/Auth.php");  require_once("HTML/QuickForm.php");  require_once("HTML/QuickForm/Renderer/ArraySmarty.php");  require_once( _SMARTY_LIBS_DIR . "Smarty.class.php");  require_once( _MODULE_DIR . "build_screen.inc.php");  require_once( _MODULE_DIR . "menu.inc.php");  require_once( _MODULE_DIR . "MYDB.inc.php");  require_once( _MODULE_DIR . "sub.inc.php");  main(_MEMBER_FLG);  exit; ?> ■main関数 <?php  function main($systemflg){   // セッション名の設定   $sess_name = ($systemflg) ? _SYSTEM_SESSNAME : _MEMBER_SESSNAME;   session_name($sess_name);   // セッション開始   session_start(); ~以下省略~ どこに問題があるかお分かりの方いらっしゃいましたら、ご回答のほどよろしくお願いいたします。

    • ベストアンサー
    • PHP
  • コンストラクタで参照渡しをする理由

    すでに質問済みの内容でしたら申し訳ありません。 php4を使用していまして、 HTML_QuickFormとSmartyを最近使い始めました。 ネットや書籍のサンプルコードを見ながら使用しているのですが、 $renderer =& new HTML_QuickForm_Renderer_ArraySmarty($smarty); 上記のような場合や フォームのコンストラクタ呼び出しの場合に =&を使用している意味が理解できません。 ・=&はオブジェクトの参照渡しという認識で合っていますでしょうか? ・参照渡しであった場合、実態を渡すのでなく参照で渡すべき理由とは何でしょうか? ご教授願えれば幸いです。 よろしくお願い致します。

    • ベストアンサー
    • PHP

専門家に質問してみよう