質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.50%
PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

Smarty

Smartyは、PHPアプリケーションで使用されるテンプレートエンジンです。

HTML

HTMLとは、ウェブ上の文書を記述・作成するためのマークアップ言語のことです。文章の中に記述することで、文書の論理構造などを設定することができます。ハイパーリンクを設定できるハイパーテキストであり、画像・リスト・表などのデータファイルをリンクする情報に結びつけて情報を整理します。現在あるネットワーク上のほとんどのウェブページはHTMLで作成されています。

Q&A

解決済

6回答

4895閲覧

HTMLのチェクボックスをPHPで制御

Kazuma2015

総合スコア46

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

Smarty

Smartyは、PHPアプリケーションで使用されるテンプレートエンジンです。

HTML

HTMLとは、ウェブ上の文書を記述・作成するためのマークアップ言語のことです。文章の中に記述することで、文書の論理構造などを設定することができます。ハイパーリンクを設定できるハイパーテキストであり、画像・リスト・表などのデータファイルをリンクする情報に結びつけて情報を整理します。現在あるネットワーク上のほとんどのウェブページはHTMLで作成されています。

1グッド

1クリップ

投稿2016/07/13 05:18

編集2016/07/13 06:30

PHPの変数にtrueかfalseが入っていてHTMLでその変数を参照しチェックボックスのチェックを動的にPHPで制御を行う場合、どのようなやり方があるでしょうか?

<input type = "checkbox" name = "hoge" <?= $hennsuu?>>

とし
PHP側で宣言された変数を参照するようにしたのですが、画面には
チェックボックスの後ろに>と表示されるだけで上手くいきませんでした

mondaminZ👍を押しています

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

kei344

2016/07/13 05:22

コードはコードブロックで囲んでいただけませんか? ```(バッククオート3つ)で囲み、前後に改行をいれるか、コードを選択して「</>」ボタンを押すとコードブロックになります。
guest

回答6

0

まずcheckboxの仕様を確認しましょう。
http://www.htmq.com/html5/input_type_checkbox.shtml

チェックを付ける場合は、checked="checked"を付加します。
なので、こんな感じでしょうか。

HTML

1<input type = "checkbox" name = "hoge" <?=$hennsuu?'checked="checked"':''?>>

投稿2016/07/13 05:32

ttyp03

総合スコア16996

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

Kazuma2015

2016/07/13 06:12

残念ながらこれでは表示がうまくいかないようです。 smartyを使用してtplにhtmlの記述を一時的に書き込んでおいてそれを.php形式のページにてインクルードして表示をしていますがsmartyによる制約があるのでしょうか?
ttyp03

2016/07/13 06:17

Smartyですか。 だとするとこんな感じでしょうか(Smartyは触ったことありませんが…) <input type = "checkbox" name = "hoge" {$hennsuu}> ~ $smarty->assign('hennsuu', $hennsuu? 'checked="checked"':'');
Kazuma2015

2016/07/13 06:29

ありがとうございます!上記のコードを試したみましたら動きました!助かりました! ベストアンサーはほかの方に譲ってしまったので評価のみ上げさせていただきます。
guest

0

ベストアンサー

チェックボックスの後ろに>と表示されるだけ

多分ですが、PHPが実行されていないのだと思います。
そのコードの書かれたファイルの拡張子は「.html」ですか?「.php」ですか?

投稿2016/07/13 05:47

kei344

総合スコア69364

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

Kazuma2015

2016/07/13 06:10

htmlの記述は.tpl形式でテンプレートとして保持しています。基本的にはhtmlの記述です。 (smarty参照)
kei344

2016/07/13 06:20

smartyなら記法が違うと思いますよ。 $hennsuuに「 checked="checked"」が入っているとして、下記の様になりませんか? <input type = "checkbox" name = "hoge" {$hennsuu}> 【変数の利用 - 変数 - Smarty - PHP】 http://www.phpbook.jp/smarty/var/index1.html
Kazuma2015

2016/07/13 06:27

ありがとうございます。うまくいきました!早い回答でしたのでベストアンサーとさせていただきます。
guest

0

trueなら

HTML

1<input type = "checkbox" name = "hoge" checked="checked" />

falseなら 「checked="checked"」を出力しないだけです。

HTML

1<input type = "checkbox" name = "hoge" />

なので、$hennsuu に「checked="checked"」という値を入れればOKです。
または、PHPの""と被ってわかりにくという場合「checked='checked'」でも大丈夫です。
(シングルクォーテーションで囲む)

投稿2016/07/13 05:30

Mr_Roboto

総合スコア2208

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

Kazuma2015

2016/07/13 06:14

恐れ入ります。ttyp03の方と類似している内容でしたので、こちらの出力は確認しておりませんがたぶん表示がうまくいかないと思います。挙動内容についてはttyp03さんへのコメントを参照願います。
Mr_Roboto

2016/07/13 06:21

確認していないのにうまくいかないという理由が不明ですが、 Smartyを使用しているなら質問なりタグなり情報として載せるべきではないですか? 質問の書き方から初心者と思われたのでそれに対応した回答をしたつもりです。 一般的なレベルで解決できることを試しているのであれば、 質問にそのように書いてください。お互いに無駄な時間となりますよね ^_^
guest

0

<input type = "checkbox" name = "hoge" <?PHP print $hennsuu?" checked":"";?> >

的な処理にしないとHTML側が認識してくれないでしょう

投稿2016/07/13 05:25

yambejp

総合スコア114583

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

Kazuma2015

2016/07/13 06:21

恐れ入ります。 smartyでのhtml記述をしておりますがうまくいきません。 printの記述でエラーをはいているので、ほかにいい方法があればご教授願います。
guest

0

今回のようなsmartyの場合、phpで宣言した変数をtplに同期しなければなりませんので

$this->assign('変数名','Value');

で最初に宣言をしなければいけません。
もし類似の内容でお困りの方がいらっしゃいましたら
phpで上記の内容まず宣言したのちにほかの優秀な回答をくださった方々のスクリプトをアタッチする必要があります。
※僕の場合はアサインを知っていたのですぐに解決できました。。。。

投稿2016/07/13 08:06

Kazuma2015

総合スコア46

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

ttyp03さんの記述でうまくいかないのであれば、Smartyの使い方に問題があるように思います。

<?= $hennsuu?>

そもそもSmartyのデリミターは左「<?=」右「?>」に変更してあるのでしょうか?
デフォルトは「{」「}」です。
変更していないのであれば、丁寧に書くと

<input type="checkbox" name="hoge"{if $hennsuu} checked="checked"{/if}>

これで$hennsuutrueが渡った時にチェックが入るはずです。
実際何が渡っているのかどうかは、

{var_dump($hennsuu)} <input type="checkbox" name="hoge"{if $hennsuu} checked="checked"{/if}>

これで確認できると思います。(Smarty2だと動かないかも?)
チェックボックスの場合、複数の要素がtrueになる可能性があるので、私の場合はだいたい

<input type="checkbox" name="hoge[]" value="fuga"{if in_array('fuga',$hennsuu)} checked="checked"{/if}> <input type="checkbox" name="hoge[]" value="piyo"{if in_array('piyo',$hennsuu)} checked="checked"{/if}>

このようにします。
$hennsuuは配列で、中にはチェックしたいチェックボックスのvalue値が入っています。

投稿2016/07/13 04:07

ottoo

総合スコア84

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問