PHPで制御したHTMLが上手く動かない場合

この記事は約 3 分 で読むことができます。

 

講座の課題(if文を使って、シェアが10%以上だった場合はセルに背景色を付けてみて下さい)にて
分からない箇所があるため、アドバイスを頂きたく。

具体的には下記のコードとなります。

<td <?php if ($browser[‘share’] >= 10) echo ‘style=”background-color:#FF0000″‘;?>><?php echo $browser[‘share’] ?></td>

ブラウザのシェアが10%以上であれば背景色を赤にすると読み取れるのですが、
逆に言えば10%未満であれば何もしない(つまり背景色もシェア率も書き込まない)という風に読み取れます。

なぜ上記のコードで上手くいくのでしょうか?

また私は下記のように記載したのですが、上手くいきません。
どこに問題があるのか、ご教授頂けないでしょうか?

<td>
<?php echo $browser[‘share’] ?> <!–まずはシェア率を書き込む –>
<?php if ($browser[‘share’] >= 10){ ?> <!–シェア率が10%以上である場合には–>
<?php echo “style = ‘background-color:#FF0000′”; ?> <!–背景色を赤にする–>
<?php } ?>
</td>

よろしくお願い致します。

 

最終的に描画されるHTMLが、どのような状態になれば良いか
ということを意識すると分かりやすいかと思います。

セルの色を変えるには、<td>タグの属性styleを設定すれば良いので

1.セルを赤くしたい場合(tdにstyleを設定)
<td style=”background-color:#FF0000″>XX%</td>

2.セルに色を付けない場合(tdにstyleを設定しない)
<td>XX%</td>

このようになります。

つまり、サンプルコードでは、10%以上の場合のみtdの後ろにstyleを記述し、
10%未満の場合は「何も記述しない」ということを行っています。

if文の場合、{}を付けてブロック指定をしない場合は
その直後の1行のみ(echo ‘style=”background-color:#FF0000″)が対象となります。

シェア率を表示している、<?php echo $browser[‘share’] ?>の部分は
if文の対象とはならず、10%以上/未満どちらの場合でも実行されます。

> また私は下記のように記載したのですが、上手くいきません。どこに問題があるのか、ご教授頂けないでしょうか?

例えば、10%以上の場合には最終的なHTMLは以下のようになります。

<td>
XX% <!–まずはシェア率を書き込む –>
style = ‘background-color:#FF0000’ <!–背景色を赤にする–>
</td>

これでは、tdの属性として正しく設定されていないため、上手くいかないということですね。

ご参考になれば幸いです。

PHPで制御したHTMLが上手く動かない場合
この記事はあなたのお役に立てましたか?

この記事があなたのお役に立てましたら、
いいね!クリックをお願いします!

あなたも楽しくプログラミングを学んでみませんか?

コメントを残す