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で質問しましょう!
似たような質問が見つかりました
- JavaScript セレクトボックスを2つ選択してメッセージなどを表示するには。~運賃検索プログラムを完成させたい~ 1 2022/07/22 11:10
- PHP 入力した部分を表示させたまま(保持)するにはどうすれば良いでしょうか? 1 2023/01/25 11:14
- JavaScript 以前の質問だと、どの条件でも配列が表示されてしまいます。 1 2022/07/09 11:40
- JavaScript switch文のswitch(n)の部分を複数の値にするか、if文に変えてほしいです。 1 2022/07/27 17:18
- JavaScript セレクトを全て選択されていないと、文字によるエラーメッセージを表示させるコードを調べています 2 2023/06/22 15:48
- JavaScript セレクトボックスを2つ設けて選択して初めてメッセを表示 1 2022/07/27 12:15
- JavaScript javascript作成してます。ラジオボタンで判定するコードを書いてます。 1 2023/07/18 11:03
- JavaScript セレクトボックスで配列を呼び出したい。 1 2022/07/08 20:14
- JavaScript sessionStorageを調べています。 1 2023/06/20 12:41
- JavaScript ①入力フォーム→②確認表示画面→③送信完了画面のコードを書いているのです、 入力フォームから受け取っ 2 2022/05/10 16:45
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
PHPとpostgreSQL プルダウンの作成
-
Smartyで、セレクトボックスが...
-
2つのプルダウンメニュから受け...
-
プルダウンとCSVの連動
-
PHP で画面の一部だけを変えたい。
-
たびたび申し訳ありません!大...
-
コンボボックス(プルダウン)...
-
現在時刻を反映させた時刻のプ...
-
<select>文、foreachと初期値設定
-
複数 selectフォームから今回on...
-
PHPでユーザー情報を入力して簡...
-
PHP MySql 画像を取得
-
<input type="hidden" >で配列...
-
PHPでCookieを使った訪問回数に...
-
($_POST['email']??"", ・・・...
-
PHPのエラーの解消法について教...
-
PHPからHTMLへの変数の受け...
-
PHPの関数実行
-
PEARのQuickFormを用いて同一ペ...
-
セッションを使わずに遷移先画...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
プルダウンとCSVの連動
-
「"」(ダブルクォーテーション)...
-
ラジオボタンの値を受け取ってP...
-
<select>文、foreachと初期値設定
-
phpでのセレクトボックスの値を...
-
複数 selectフォームから今回on...
-
php セレクトボックス 値取得
-
複数のセレクトボックスを1つに...
-
2つのプルダウンメニュから受け...
-
phpでのselect値の取得・表記に...
-
foreachで次の行の値を取得して...
-
ウェブ上で選択した複数行の内...
-
CodeIgniter/set_value()
-
ループ処理
-
連動させたいセレクトボックス...
-
PHP で画面の一部だけを変えたい。
-
phpでカレンダー作成
-
現在時刻を反映させた時刻のプ...
-
プルダウンで選択された値を保持
-
プルダウンリスト(コンボボッ...
おすすめ情報