• 締切済み

smartyでチェックボックスをチェック済み状態にするには

先ほどカテゴリ選択ミスでperlに投稿してしまいましたすみません。 こんばんは、PHPでメールフォームを作成していて壁に当たり質問させていただきます。 {{html_checkboxes name="checked" selected=$smarty.session.checked options=$checked_value}} 入力フォームのtplにて上記のようにしてチェックボックスを配置しています。 このチェックボックスに最初からチェックを入れておくことはできませんか? メールフォーム自体は出来ているのですが、このチェックボックスをチェック済みにすることが出来ずに困っています。 検索したり書物を調べたのですが掲載されていなく、自己解決ができません。 表示されるチェックボックスは全てチェック済みが初期状態にしておきたいのです。 ご指摘よろしくお願いします。

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

みんなの回答

回答No.2

> これに格納されている値が生成されるチェックボックスのvalueになっていないからじゃないですか? チェックボックスのnameの間違いでした。

回答No.1

$smarty.session.checked これに格納されている値が生成されるチェックボックスのvalueになっていないからじゃないですか? <input type="checkbox" name="a" value="1" /> <input type="checkbox" name="b" value="1" /> この場合、$smarty.session.checkedは以下のようになっていないとダメだと思いますよ。 $_SESSION['checked'] = array("a", "b"); おそらく現状は $_SESSION['checked'] = array("1", "1"); になってますよね。 しっかりマニュアルを見ましょう。

関連するQ&A

  • JavaScriptにて、2つのチェックボックスのチェックができません

    お世話になっております。 お分かりになる方いらっしゃいましたら、ご教授願えますでしょうか? 現在採用に関する応募フォームを作成しています。 JavaScriptにてフォーム内のチェックボックスに チェックが入っているか、必須チェックをさせたいと思っています。 テキストボックスやコンボボックスなど、いくつか必須チェックがある中で、 チェックボックスの項目についての必須チェックがうまくいきません。 チェック完了後、cgiにてメールを送信するようにしているのですが、 チェックがされず、メールを送信してしまいます。 ローカルで行ってみたのですが、チェックをスルーして、 cgiに遷移してしまいます。 フォームイメージは以下の感じです。 <応募フォーム> --------------------------- 希望勤務地:□本社 □大阪 --------------------------- 2つのチェックボックスどちらにもチェックが入っていない場合は、 エラーメッセージを出し、処理を中止します。 どちらのチェックボックスにもチェックが入っていても、 エラーは出さずにcgiへ遷移します。 以下は現在のコードの内容です。 <HTMLコード> <form method="POST" action="send.cgi" name="応募フォーム" onSubmit="return check()"> <input type="checkbox" name="希望勤務地" value="本社" checked>本社 <input type="checkbox" name="希望勤務地" value="大阪">大阪 <input type="submit" value=" 送信 "> <input type="reset" value=" 取消 "> <Scriptコード> function check(){ if(!document.応募フォーム.希望勤務地.value.checked){ flag = 1; window.alert('必須項目[希望勤務地]にチェックがされていません'); } } 色々試してみたのですが、うまくいきませんでした。 チェックボックスのnameを同じ名前にしているのが原因でしょうか? お手数ですが、宜しくお願いいたします。

  • チェックボックスについて

    お世話になっております。 フォーム上にあるチェックボックスの数だけDBへフィールドを用意し、チェックされたものをvalueに記載のある内容をDBへ登録しようと考えております。 そこで、他の入力フォームに入力の不備があった場合は、同じ画面に戻り、入力を催促する設定を描いているのですが、チェックをしたチェックボックスがクリアにならない様にするには、どのようにしたら宜しいのでしょうか?色々と調べて居るのですが、どれもチャックした内容を表示する場合だったりで、初心者の私として的を得たものが見つかりません。ご教授いただければと思い投函させて頂きました。 宜しくお願い致します。 <input type="checkbox" name="renraku_mail" value="メールを希望" checked> &nbsp;メール &nbsp;&nbsp;&nbsp; <input type="checkbox" name="renraku_tel" value="電話を希望"> &nbsp;電話 &nbsp;&nbsp;&nbsp; <input type="checkbox" name="renraku_fax" value="FAXを希望"> &nbsp;FAX

    • ベストアンサー
    • PHP
  • チェックボックスかテキストボックスか調べる方法

    document.myForm.elements[buf].checked; ・・・ でチェックする対象が、テキストボックスなのか、 チェックボックスなのか調べたいのです。 あらかじめわかっていれば checked なり、value を追記すればおもうのですが、cgi などで吐き出した html でチェックするフォームが毎回変わる場合、 チェックボックスがいくつあるのか、テキストボックス がいくつあるのかわからない場合があります。 何か良い方法がないでしょうか。

  • チェックボックスをメールフォームに

    こんにちは。お世話になっております。 只今、汎用性もったメールフォームを作っており、ラジオボタンやプルダウン、そしてチェックボックスなどを設置したいのですが、チャックボックスのデータの受渡しに関して上手く行かずに困っております。 1つのファイルで行うとして(チェックボックスのみ例にすると)・・ <?php session_start(); //チェックボックスに表示させたい各名称は、この部分だけ書き換えるようにしたい $check_data = array("映画", "読書", "インターネット", "ドライブ", "ショッピング"); $check_data_cnt = count($check_data); $_SESSION["check"] = $_POST["check"];   ・   ・ <body> for($h=0; $h<$check_data_cnt; $h++){   if(stristr($check_insert_data, "$check_data[$h]")){     echo "<input type=\"checkbox\" name=\"check[]\" value=\"$check_data[$h]\" checked>".$check_data[$h];   }else{     echo "<input type=\"checkbox\" name=\"check[]\" value=\"$check_data[$h]\">".$check_data[$h];   } } と、こんな感じで行っているのですが、POSTさせた際、セッションにてポストされたチェックデータを保存し、他のフォームの入力漏れがあった場合などは、そのセッションデータを参照して、html部のチェックボックスに反映(チェックした箇所はチェック済みとしたい)させたいと考えてます。 ※上記コードは、流れだけをと思い。省略しているところがあります。 上手く説明できていないところもありますが、ご指導いただければ幸いです。 お忙しい中恐縮ですが、宜しくお願い申し上げます。

    • ベストアンサー
    • PHP
  • チェックボックスのチェック済みを保持

    PHPを使ってフォームのチェックボックスの初期値にチェック済みでページを表示させ、そのチェックを外してサブミットし、同ページにリロードした際、セッションを使ってチェックを外した状態を保持しようとしているのですがうまくいきません。 チェックを外した状態でリロードしてもチェックがついた状態で表示されてしまいます、チェックを外した状態を保持表示させるにはどのように記述すればよいのでしょうか ご教授宜しくお願いします。 【PHP】 session_start(); $event = $_POST[ 'event' ]; $_SESSION[ 'event' ] = $event; if(!empty($event)){ $event_on = 'checked';} 【フォーム】 <form action="./" method="post" name="chbox"> <input type="checkbox" name="event" id="event" value="event" $event_on >イベント <button class="btn" onClick="boxCheck()" >表示</button> </form> 環境 php5.3 html5 javascriptのlocalStrage等を使ったほうが実装が現実的なら、検討いたします。

    • 締切済み
    • PHP
  • チェックボックスの戻り

    チェックボックスのvalue値に数字を入れてPOSTしています。 DB登録の前にその値を足し算してDBに登録しています。 <input type="checkbox" name="cb[0]" value="1"> <input type="checkbox" name="cb[1]" value="2"> <input type="checkbox" name="cb[2]" value="4"> <input type="checkbox" name="cb[3]" value="8"> <input type="checkbox" name="cb[4]" value="16"> ・・・のようにしています。DBの値を読み取ってcheckedを付ける際はどのようにしたら効率よく処理できるでしょうか?switchを使うとすごくチェックボックスの数が増えると厄介です。困っています。教えてください。

    • ベストアンサー
    • PHP
  • AJAXで生成したHTMLでのチェックボックス一括チェックの方法を教えてください

    現在jqueryを使って、ajaxでチェックボックスを生成して、それに対して一括チェックボタンを付けたいと考えております。 <input name="allcheck" type="checkbox" id="checkall" checked="checked" />全て<br /> <input type="checkbox" name="carrier" value="docomo" checked="checked" />docomo<br /> <input type="checkbox" name="carrier" value="au" checked="checked" />au<br /> <input type="checkbox" name="carrier" value="softbank" checked="checked" />softbank<br /> というチェックボックスがajaxで生成されて function carrier_check() { $('#checkall').click(function(e){ $(':checkbox[type=checkbox][name=carrier]').attr('checked', $('#checkall').attr('checked')); }); } のjavascriptで上記のチェックボックスを一括チェックできるようにしようとしているのですが ajaxを使わずに上記のチェックボックスをHTMLに書いているときは一括チェックできるのですが、ajaxを使用して生成した場合にはチェックボックスの一括チェックができません。 どのようにすれば、ajaxで生成されたチェックボックスを一括チェックできるようになるのでしょうか? ご存知の方がいらっしゃいましたらご教授お願いいたします。

  • テキストボックにカーソルを合わせた状態でエンターを押しても、POSTが成功しない

    宜しくお願いします。 PHP5.0 MySQL Smartyにて簡単なフォームを開発しています。 テキストボックスにメールアドレスを入力してもらい、 テキストボックス内にまだカーソルが残ったままの状態で、 エンターを押すと、通常、postされるかと思います。 もちろん、type="submit"の保存ボタンも取り付けていますが、 それを利用(押さ)せずに、テキストボックス内にカーソルが残った状態でエンターを押して、postするようにしたいです。 しかし・・・。(下記がソースです) <form id="form" action="aaa.php" method="post"> <input name="mail" type="text" value="{{$smarty.session.mail}}" size="60" /> <input name="keep" type="submit" value="保存"/> </form> 上記のような形でaaa.phpにpostさせています。 ですが、受け取り側となるaaa.php内にて、 if(isset($_POST["keep"])){ ・・・・ } としてpostの判定を行っているのですが、 すべて否定してまい、処理が進みません。 今回、フォームに関連するページをいくつも作成していまして、同じ要領でpostさせるページを作っていますが、 そこでは問題なく作動しています。 上記と同じソースでpostやif判定をしているのですが、 問題のあるフォームだけがpostされない情況です。 何か経験豊富な方でピンとくる問題点は無いでしょうか?  また、 色々な事を試してみました。 その中で、見つけたことは、 上記のソースにある、 <input name="mail" type="text" value="{{$smarty.session.mail}}" size="60" /> を二度繰り返して <input name="mail" type="text" value="{{$smarty.session.mail}}" size="60" /> <input name="mail" type="text" value="{{$smarty.session.mail}}" size="60" /> のようにすると、上手くpostされます。 なぜ、テキストボックスを二つ付けるとpostされるのでしょう??? 意味不明でかなりはまっています。 ひょっとしたら、postさせるために、基本はこうですよ! みたいな基本(ボンミス)が抜け落ちている可能性もありますので、 直感的なご意見も頂きたく思います。 ちなみに、Smartyのクラスを拡張して、独自クラスとしていますので、 value="{{$smarty.session.mail}}" と{{ が二重になっております。 長くなりましたが、宜しくお願いします。

    • ベストアンサー
    • PHP
  • チェックボックスの値を(1,0)のようにすべて送信する方法

    formをsubmitすると、チェックボックスの値は、 チェックされた項目のvalue値が配列の形で送信されますよね。 たとえば、 <INPUT TYPE="CHECKBOX" NAME="C_BOX" VALUE="111" CHECKED> <INPUT TYPE="CHECKBOX" NAME="C_BOX" VALUE="222" CHECKED> <INPUT TYPE="CHECKBOX" NAME="C_BOX" VALUE="333" CHECKED> <INPUT TYPE="CHECKBOX" NAME="C_BOX" VALUE="444"> <INPUT TYPE="CHECKBOX" NAME="C_BOX" VALUE="555" CHECKED> だと、 [111,222,333,555] のように。 今回は、表形式でデータを表示し、 チェックされた行の、他の列の値(フィールド)も取得したいのです。 他の列のフィールドは、チェックされていない行でも入力されている可能性があります。 そうすると、そのフィールドの値も配列にして送ってしまうと、 チェックボックスの値と数が合わなくなり、横方向での関連付けが出来なくなってしまいます。 なので、チェックボックスの送信値を、配列の要素数は全件で、 チェックされたかされていないかということが分かるように することは不可能でしょうか? JavaScriptは規約により、使うことが出来ない状況で困っています(><) 何か案があれば教えてください。

    • ベストアンサー
    • HTML
  • 特定のチェックボックスをチェックするには

    特定のチェックボックス「白」を CHECKEDにする方法を教えて下さい。 #数と位置が変動するので配列は取得できません。 #「もしもcolorの値が白なら CHECKED」のような関数にしたい。 <INPUT TYPE="CHECKBOX" NAME="color" VALUE="おまかせ"> <INPUT TYPE="CHECKBOX" NAME="color" VALUE="白"> <INPUT TYPE="CHECKBOX" NAME="color" VALUE="ピンク"> <INPUT TYPE="CHECKBOX" NAME="color" VALUE="緑">

専門家に質問してみよう