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

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

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

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

Q&A

解決済

3回答

1678閲覧

===で比較できてないかもしれない...

earnest_gay

総合スコア615

PHP

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

0グッド

0クリップ

投稿2016/06/29 10:47

下記のソースで
($gender === '男性')
で比較する直前の
$genderには"男性"が入ってます。
var_dumpで確認しています。

ラジオボックスにチェックが付かないのですが、原因は何が考えられますでしょうか?

<?php $sql = "SELECT * FROM user_data WHERE id=203"; $stmt = $pdo->query($sql); $row = $stmt->fetch(); $gender = $row['gender']; $checked = ($gender === '男性') ? ' checked="checked"' : ''; ?> <input type="radio" class="men" id="men" name="gender" value="男性" <?php $checked ?> required />男性

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

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

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

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

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

guest

回答3

0

ベストアンサー

せっかくvar_dump()での確認という方法をしっているのですから、評価後の $checked に何が入っているかも確認してみましょう。

<?php $checked ?> では変数の内容は出力されませんので、<?php echo $checked; ?> などのように出力する必要がありますね。

投稿2016/06/29 10:52

kaz.Suenaga

総合スコア2037

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

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

earnest_gay

2016/06/29 11:11

ありがとうございます。 実際の記述で変数のSpellミスしているところもありました汗
guest

0

var_dump($checked)をしてみてください。
おそらく、判定は正しく、ちゃんと文字列が入っています。
そして、原因はechoが抜けているだけだと思います。

PHP

1<?php echo $checked ?>

投稿2016/06/29 10:52

masaya_ohashi

総合スコア9206

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

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

mpyw

2016/06/29 10:52

あ,コレですね…
earnest_gay

2016/06/29 11:10

先ほど別質問で別の方に頂いた回答ですが $checked = ( filter_input(INPUT_POST, 'gender') === '男性') ? ' checked="checked"' : ''; $options = '<input type="radio" class="men" id="men" name="gender" value="男性"' . $checked . ' required />' これはechoしてませんが、今回のものはechoしないといけないのは何故でしょうか? $checked = ($gender === '男性') ? ' checked="checked"' : ''; ?> <input type="radio" class="men" id="men" name="gender" value="男性" <?php $checked ?> required />男性 またよくわからなくなってきそうです汗
masaya_ohashi

2016/06/29 11:56

<%php %>で囲まれた中で何をしてもHTMLに出力されないですが、echoを使えばHTMLとして出力できる、のは理解してますか? 後者のコードはHTMLの真っ最中にphpコードを埋め込んでいるので、echoを使わないと出力されません。 前者のコードは、その時点でechoを使っていませんが、最終的に$optionsをどこかでechoを使って出力していませんか?
kaz.Suenaga

2016/06/29 11:58

おじゃまします。 変数として取得する、ということと、画面に出力する、ということの違いがあります。 $a = 1; なら、$a という変数に1を代入する、ですが、 echo 1; なら1を出力する、ですよね。 $a = 1; echo $a; なら、変数$a に 1 を代入して、$a を出力する、ですよね。
earnest_gay

2016/06/30 09:12

すいません、簡単なことほどこんがらがりそうになってました汗
guest

0

実際に出力されたHTMLを見せてください.


【追記】

php

1<?php echo $checked ?>

で直りますが,どちらかというと短縮構文の

php

1<?=$checked?>

を使うほうがおすすめです.

投稿2016/06/29 10:50

編集2016/06/29 10:53
mpyw

総合スコア5223

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

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

earnest_gay

2016/06/29 11:07

すいません。 実際の記述で変数のSpellミスしているのもありました汗 = は見慣れないのですが見た感じでは <?php の phpを省略できて echoやprintなどの出力系のものも省略してくれているように見えるのですが...
mpyw

2016/06/29 15:51

<?php echo $var ?> のシンタックスシュガー(同じ意味の別の書き方)として <?=$var?> が存在しているだけですね.
earnest_gay

2016/06/30 09:11

勉強になります。 ありがとうございます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問