下記サンプルで、
ソース
http://www.okushin.co.jp/information/tanuki03/in …
画面
http://www.okushin.co.jp/information/tanuki03/ta …
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を返してきます
たぶん、些細な問題でしょうが・・よろしくお願い致します。
No.3ベストアンサー
- 回答日時:
まずは、もう少しシンプルな物で、試してみては
いかがでしょうか?
自分は、smartyで出力していますので参考になるかどうか分かりませんが、
流れは、確認->よければ->送信
送信後に、exportValuesで、値を配列に格納して、
いますので、ここでその値をDBなどに登録などしております。
<?php
//ボタン処理
require_once "Smarty.class.php";
require_once "MySmarty.class.php";
require_once "HTML/QuickForm.php";
require_once "HTML/QuickForm/Renderer/ArraySmarty.php";
$smarty = new MySmarty();
$form = new HTML_QuickForm("Form");
$form->addElement ("text","name","お名前:",array("size"=>30,"maxlength"=>40));
$form->addElement ("text","email","メールアドレス:",array("size"=>30,"maxlength"=>100));
//入力チェック
$form->setJsWarnings("必須項目を入力してください。","");
$form->addRule ("name","お名前が入力されていません。","required",NULL,"client");
$form->addRule ("email","メールアドレスが入力されていません。","required",NULL,"client");
if (isset($_POST["BTNG"]["SUBMIT_INDEX"])) {
// 確認画面 (入力画面で「送信」クリック時)入力チェック実行
if ($form->validate()) {
// 入力が正しい時は「戻る」ボタンと「送信」ボタンを表示
$buttons[] = &HTML_QuickForm::createElement ("submit","RETURN_CONF", "戻る");
$buttons[] = &HTML_QuickForm::createElement ("submit","SUBMIT_CONF", "送信");
$form->addGroup($buttons, "BTNG", null, "");
} else {
// 入力が不正な時は「戻る」ボタンのみを表示
$buttons[] = &HTML_QuickForm::createElement ("submit","RETURN_CONF", "戻る");
$form->addGroup($buttons, "BTNG", null, "");
}
// 入力内容を凍結
$form->freeze();
} elseif (isset($_POST["BTNG"]["SUBMIT_CONF"])) {
if ($form->validate()) {
// 入力結果を$valsに格納
$val = $form->exportValues();
echo "{$val['name']}\n";
echo "{$val['email']}";
}
} else {
// 入力画面表示 (最初と確認画面で「戻る」クリック時)
$buttons[] = &HTML_QuickForm::createElement ("submit","SUBMIT_INDEX", "確認");
$form->addGroup ($buttons, "BTNG", null, "");
}
$renderer = new HTML_QuickForm_Renderer_ArraySmarty($smarty);
$form->accept ($renderer);
$smarty->assign ("form", $renderer->toArray());
$smarty->display(basename($_SERVER["SCRIPT_NAME"],".php").".tpl");
?>
f_motionさん、詳細なサンプルをご提示いただき、
ありがとうございました。smartyも将来的には
お世話になりたいとは思っていますが、
これを参考に目的を達成できそうです。
ありがとうございました。
No.2
- 回答日時:
こんにちは、上記サイトは自分も参考にしましたが、
ちょっと分かりづらいのが難点。。。
$form = new HTML_QuickForm("Form");だったら
$val = $form->exportValues();
で連想配列で、値が格納されますので、
ラジオボタンの場合は、$val['rdoAnimal']['rdoAnimal']
のような感じで、格納されます、
textのなどの場合は、$val['text']
のように、格納されますので、後はprint_r($val)で
確認してみて下さい。
この回答への補足
f_motionさん、詳細な解説ありがとうございました。
> 上記サイトは自分も参考にしましたが
大変心強いです。
わたしが実際に使ってみたのは、HTML_QuickForm_Controllerの方
みたいですが、
>ラジオボタンの場合は、$val['rdoAnimal']['rdoAnimal']
に準拠して組み込んでみましたが、やっぱり出ないみたいです・・うう。
何が間違っているでしょうか・・
下記、いろんなサンプルから切り貼りしたソースですみませんが
<?php
require_once("HTML/QuickForm/Action.php");
require_once("HTML/QuickForm/Controller.php");
require_once("HTML/QuickForm/Action/Back.php");
require_once("HTML/QuickForm/Action/Next.php");
require_once("HTML/QuickForm/Action/Display.php");
require_once("HTML/QuickForm/Action/Submit.php");
session_start();
class PageFirst extends HTML_QuickForm_Page {
function buildForm() {
$this->_formBuilt = true;
$this->addElement('header', null, '1 / 3');
$q1Arr[] = &$this->createElement('radio', 'rdoQ1', null, 'はい', 'Y');
$q1Arr[] = &$this->createElement('radio', 'rdoQ1', null, 'ふつう', 'F');
$q1Arr[] = &$this->createElement('radio', 'rdoQ1', null, 'いいえ', 'N');
$this->addGroup($q1Arr, 'q1', 'Q1 嫌いですか?');
$this->addElement('submit', $this->getButtonName('next'), '次へ >>');
$this->setDefaultAction('next');
}
}
class PageSecond extends HTML_QuickForm_Page {
function buildForm() {
$this->_formBuilt = true;
$this->addElement('header', null, '2 / 3');
$this->addElement('textarea', 'itxaTest', 'メッセージ:', array('rows' => 10, 'cols' => 10));
$prevnext[] =& $this->createElement('submit', $this->getButtonName('back'), '<< 前へ');
$prevnext[] =& $this->createElement('submit', $this->getButtonName('next'), '次へ >>');
$this->addGroup($prevnext, null, '', '', false);
$this->setDefaultAction('next');
}
}
class PageThird extends HTML_QuickForm_Page {
function buildForm() {
$this->_formBuilt = true;
$this->addElement("header", null, '3 / 3');
$this->addElement("text","name","名前:", array("size"=>20,"maxlength"=>30));
$this->addElement("submit",$this->getButtonName("back"),"<< 前へ");
$this->addElement("submit",$this->getButtonName("submit"),"完了");
$this->applyFilter("name","trim");
$this->setDefaultAction("next");
}
}
class MyDisplay extends HTML_QuickForm_Action_Display {
function _renderForm($page){
$renderer=$page->defaultRenderer();
$renderer->setHeaderTemplate("\n<tr>\n<td colspan=\"2\">{header}</td>\n</tr>");
$page->accept($renderer);
print($renderer->toHtml());
}
}
class ControllerAction extends HTML_QuickForm_Action {
function perform($page, $actionName){
$values=$page->controller->exportValues();
print("Q1:" . $values['rdoQ1']['rdoQ1'] . "<br />");
print("メッセージ:" . $values['itxaTest']."<br />");
print("名前:" . $values['name']."<br />");
$page->controller->container(TRUE);
}
}
$ctrl=new HTML_QuickForm_Controller("myForm");
$ctrl->addPage(new PageFirst("first"));
$ctrl->addPage(new PageSecond("second"));
$ctrl->addPage(new PageThird("third"));
$ctrl->setDefaults(array("name"=>ななし));
$ctrl->addAction("display",new myDisplay());
$ctrl->addAction("back",new HTML_QuickForm_Action_Back());
$ctrl->addAction("next",new HTML_QuickForm_Action_Next());
$ctrl->addAction("process",new ControllerAction());
$ctrl->run();
?>
No.1
- 回答日時:
inu2さん、ありがとうございました。
確かにサンプルではprint_rで出力されていました。
array(3) {
["iradYesNo"]=>
string(1) "Y"
["name"]=>
:
:
みたいなやつって、print_rの結果だったのですね。
ありがとうございました。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- JavaScript javascript作成してます。ラジオボタンで判定するコードを書いてます。 1 2023/07/18 11:03
- PHP if(preg_match("/[^0-9]/",$gu_d)){意味を教えてください。 1 2022/05/06 05:37
- PHP php テーブルが作成できない 1 2022/11/17 23:41
- Excel(エクセル) PHPプログラムをエクセルに張り付けると検索ボックスがでてくる! 3 2022/05/08 07:10
- MySQL php テーブルを作れない 2 2022/11/17 18:22
- その他(プログラミング・Web制作) seleniumbasic chrome操作について 1 2023/03/29 15:40
- PHP htmlspecialcharsが機能していないです。 バグですか? 1 2022/04/05 01:22
- PHP ここでの ②if($su_d<>"")の比較演算子 を使う理由は 1 2022/03/26 02:33
- MySQL my_itemsテーブルのIDにAUTO_INCREMENT を追加ができるかで 1 2023/01/03 09:09
- MySQL SHOW CREATE TABLE posts;これって何ですか? 3 2022/08/28 22:57
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
PHPでURLにジャンプするには?
-
PHPでファイルアップロード時に...
-
アマゾンのような評価の星を選...
-
phpで、フォームのラジオボタン...
-
フォーム送信後の更新ボタンで...
-
テキストリンクをPOST送信したい
-
PHPとHTML+Xamppの掲示板で画像...
-
入力した部分を表示させたまま...
-
HTMLのリンクをクリックするこ...
-
GET又はPOSTで受け取るデータに...
-
laravelを利用してコントロール...
-
PHPからHTMLへの変数の受け...
-
DBの値をチェックボックスに反...
-
チェックボックスについて
-
PHP初心者です。基本的な所でつ...
-
複数行のデータ一括更新に関して
-
POSTやGETの変数をフォーム無し...
-
同じページでフォームデータを...
-
PHPで入力フォームでデータを確...
-
アップロードの際にファイルパス
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
PHPでURLにジャンプするには?
-
フォーム送信後の更新ボタンで...
-
アマゾンのような評価の星を選...
-
PHPのエラーの解消法について教...
-
phpで、フォームのラジオボタン...
-
テキストリンクをPOST送信したい
-
ボタンをクリックでPHP文を実行
-
セッションを使わずに遷移先画...
-
PHPでファイルアップロード時に...
-
$_POST['hoge']のデータをフラ...
-
PHPの質問:フォームから受け取...
-
JavaScript変数をPHPへ渡す
-
送信ボタンでカウントアップ
-
ローカルにあるhtmlのフォーム...
-
リンク先のフォームに自動的に...
-
formの外にあるチェックボック...
-
フォームで作った送信ボタンが...
-
PHP 入力フォームにて半角スペ...
-
なぜ、unexpected T_VARIABLEに...
-
VBSのIEオブジェクトでフ...
おすすめ情報