

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 {
}
?>
A 回答 (3件)
- 最新から表示
- 回答順に表示
No.3
- 回答日時:
おそらくなのですが、PHPの技術というよりは、HTML_QuickFormの使い方、という問題のような気がします。
実は補足していただいたにもかかわらず、内容が汲み取れない状況です。。すみません、HTML_QuickFormの経験が無いので、明確な回答をすることができません。。。HTML_QuickForm経験者の書き込みを待つしかないようです。
お役に立てず、すみません。
No.2
- 回答日時:
すみません、追加質問について、ちょっとお困りの内容がうまく把握できません。
もう少し実現したい動作などを追記してもらえれば、と。。。
この回答への補足
情報不足で申し訳ございませんでした^^;
HTML_QuickFormでフォームを生成します。(ファイル名をcontact.phpとします。)
contact.phpに直接アクセスするわけではないので別ページの表示したい箇所にcontact.phpを
incluedして読み込むのですがフォームを表示するhtmlは以下のような形で出力されます。
<form action="contact.php" method="post" name="form" id="form">
~省略~
</form>
一言で言えば<form>~</form>までということです。
smartyと連携しているので表示させる30ページのそれぞれに
<input hidden="取得したい値を記述"...>
としてもhiddenで値を取得するためにはform間に埋め込まなければ取得できません。
HTML_QuickFormでhiddenの値を設定し埋め込むことはできるのですが30ページとも全てのページで
常に同じ値を取得してしまうので意味がありません。
hiddenで値を取得したいページは30ページなので単純に考えれば
contact.phpのhiddenの値だけ変更したファイルを名前を変えて30こ作り取得したい値のphpを読み込めば
済むことなのですがかなりの手間なのでcontact.phpは1つでそれぞれ違う値を読み込むにはなにかいい方法が
ないものかと思っております。
自分でも説明が難しくわかりづらくなってしまいましたが宜しくお願いします。
No.1
- 回答日時:
こんばんは。
教えてGoo!はまだまだ初心者です。ソースを拝見しますと、$message のヒヤ文字列のお尻に、チェックボックスの選択肢値をくっつけてますので、お困りの通りに表示されますね。
$value['cb3']は配列になっているので、$value['name']のように値は表示されません。このままでは当然「array」と表示されるので、{$value['cb3']}部分の配列を展開してあげる必要があります。
$message = <<<EOD
===============================================================
【氏名】
{$value['name']}
【選択】
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;
}
}
$message .= <<<EOD
===============================================================
EOD;
のようにしてあげれば大丈夫と思います。
HTML_QuickFormって初めて聞きましたが、{}とか使うのだと、Smartyと混乱しそうですね。
この回答への補足
追記でもう1つわからないことがあります。
どこのページから送信されたかを知るためにHTML_QuickFormで生成するフォームのプログラム(contact.php)に
{$value['page']}{$_SERVER['HTTP_REFERER']}
としているのですがマニュアルなどを見ると完全な情報ではないために
別に<input hidden="hoge"・・・>を加えることを推薦されるようなのですがこれはやはり必須でしょうか?
テストで何回か送信しているのですが送信されたurlを取得できているので微妙に疑問です。
contact.phpをincluedして表示させる構成にしようと思っているのですが、フォームを表示させたいページが
30ページ有り各ページにhiddenを入れてそれぞれの値を取得したいのですがフォーム表示用のphpは
1つで済ませたいのでどのような方法であればフォーム用のphpは1つで各ページのhiddenを取得し
表示できるかに悩んでおります。
【例】
1.php←hidden値:あいうえお
2.php←hidden値:あかさたな
3.php←hidden値:はまやらわ
(各ページのhiddenの値は統一性や連番表示はありません)
contact.phpにhiddenを入れれば値は取得できるのですが30ページとも同じ値を取得してしまうので
意味がありません。
お礼の後で申し訳ないのですがなにかアドバイスなど頂けますと幸いです。
お返事ありがとうございます。
教えていただいた通りで思うように表示できました^^
私も深くはわからないのですがHTML_QuickFormはpearの一種で間単にフォームを作れるとの程度しか
わからないながらもかなり試行錯誤しましたがおかげさまで助かりました!
smartyも始めたばかりで勉強中なのですが奥が深いですね~
smarty独自の変数を使いこなせるようになればもっと素晴らしさがわかると思うのですが
それまではまだまだ時間が掛かりそうです^^;
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
phpの問い合わせフォームを作っ...
-
PHP8でWarning:Undefined varia...
-
composerをインストールしたい...
-
marginの値でマイナス値を設定...
-
SFTPなどは使わないホームペー...
-
php ラジオボタン
-
submitで思うようにページが遷...
-
HTML PHP ラジオボタンのイベント
-
php でqiitaのサイトにあったフ...
-
SplFileObject を利用したとき...
-
PHPの勉強してます。 配列のと...
-
BASIC認証のフォームをデザイン...
-
アップロードファイルを表示す...
-
複数のパソコンの中の1つのパソ...
-
返信機能のツリー構造の深さを...
-
PHPについて。
-
phpのheader("Location:#pos")...
-
PHPからCSVをアップロード後、m...
-
[php初心者]サイトを見てデータ...
-
phpに関わる所での、form actio...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
<select>文、foreachと初期値設定
-
複数 selectフォームから今回on...
-
vb2005のcomboboxについて
-
PHPとpostgreSQL プルダウンの作成
-
multipleを使用するとプルダウ...
-
[PHPとHTML]リストボックスにつ...
-
現在時刻を反映させた時刻のプ...
-
<select>の値によってclassを変...
-
セレクトしたときに全て初期状...
-
phpの変数について
-
local環境でのテストで、FORMタ...
-
2つのプルダウンメニュから受け...
-
既存エンジンを利用したHTML&P...
-
phpの質問です
-
PHP プルダウンメニュー
-
コンボボックス(プルダウン)...
-
プルダウンで選択された値を保持
-
PHPでセレクトメニュー
-
ホームページのセレクトメニュ...
-
多次元配列の値が変わってしま...
おすすめ情報