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

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

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

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

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

HTML

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

CSS

CSSはXMLやHTMLで表現した色・レイアウト・フォントなどの要素を指示する仕様の1つです。

Q&A

解決済

1回答

2018閲覧

登録データが未確定の時にtableの背景色を変えたい

narutomo

総合スコア13

PHP

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

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

HTML

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

CSS

CSSはXMLやHTMLで表現した色・レイアウト・フォントなどの要素を指示する仕様の1つです。

0グッド

0クリップ

投稿2017/06/06 20:38

編集2017/06/07 16:21

###前提・実現したいこと```ここに言語を入力
コード

PHPにてテーブル一覧を作成しています。 ですが、PHPでループさせて一覧表示をする時に、表示後に特定の文字だった場合(未確定)のデータを抽出した時に、テーブル内のそのセルだけ背景色を変えたいと思うのですが、上手くいきません。 ###発生している問題・エラーメッセージ

特にエラーは出ておりませんが、色が変わりません。
自分なりに調べては見たのですが、Javascriptを利用しないと上手く行かないのでしょうか?

test.html <!DOCTYPE html> <html> <head> 省略 </head> <body> <table> <tr> <th>名前</th><th>誕生日</th><th>年齢</th> </tr> <tr> <#LIST#>//PHPにて置き換えしています </tr> </body> </html>
<?php $query='select * from check_info';//ここの名前カラムに、未確定というデータが入っています。 $line=""; $line_not_decide=""; if ($result = mysqli_query($link, $query)) { $i=0; while ($row = mysqli_fetch_row($result)) { $name = $row[0]; $birthday = $row[1]; $age = $row[2]; $line .="<tr><td>".$name[$i]."</td><td>".$birthday[$i]."</td><td>".$age[$i]."</td></tr>\n"; $i++; $line_not_decide .="<tr><td style='background-color:red;'>".$name[$i]."</td><td>".$birthday[$i]."</td><td>".$age[$i]."</td></tr>\n"; $i++; } mysqli_free_result($result); } mysqli_close($link); $fp=fopen('./test.html','r'); while(!feof($fp)) { $test_line=fgets($fp); if($name[$i] == "未確定"){ $lines=str_replace("<#LIST#>",$line_not_decide,$test_line); }else{ $lines=str_replace("<#LIST#>",$line,$test_line); } echo $lines; } fclose($fp); exit(); ?>
該当箇所修正コード <?php $i = $lines = ''; while ($row = mysqli_fetch_row($result)) { $name = $row[0]; $birthday = $row[1]; $age = $row[2]; if($name[$i] == "未確定"){ $lines .= "<tr><td style='background-color:red;'>".$name[$i]."</td><td>".$birthday[$i]."</td><td>".$age[$i]."</td></tr>\n"; } elseif ($name[$i] == "未確定" && $age[$i] == "30"){ $lines .= "<tr><td style='background-color:red;'>".$name[$i]."</td><td>".$birthday[$i]."</td><td style='background-color:red;'>".$age[$i]."</td></tr>\n"; } else { $lines .= "<tr><td>".$name[$i]."</td><td>".$birthday[$i]."</td><td>".$age[$i]."</td></tr>\n"; } $i++; } ?>

###試したこと
追記 :年齢もelseifで指定して、複数のカラムを選択して抽出しようとしたら、最初の名前のみ背景色が赤くなりますが、例えば年齢カラムの背景色が赤くならない。

PHPのif文を利用して、もし引っ張ってきたデータが「未確定」という文字だった場合に、セルの背景色を赤にしたいので、文を二つに分けて、表示させようとしました。
ですが、PHPでループした時に、未確定があったら$line_not_decide、なければ$lineで表示を変えていこうとしましたが、上手く反映されません。

分けてPHPで表示しようとするからいけないのかと思ったりもしていますが、どなたかご教授いただけないでしょうか?

###補足情報(言語/FW/ツール等のバージョンなど)
より詳細な情報
MAC OS、

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

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

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

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

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

kei344

2017/06/07 16:30

解決済みのものに追記せず、新たに質問を投稿しなおしてはいかがでしょうか。
narutomo

2017/06/07 16:31

ご指摘ありがとうございます。その内容でやって見ます。
guest

回答1

0

ベストアンサー

動作未検証ですが,置換ではなく、最初から$linesへ格納していくのではどうでしょう?

PHP

1$i = $lines = ''; 2while ($row = mysqli_fetch_row($result)) { 3 $name = $row[0]; 4 $birthday = $row[1]; 5 $age = $row[2]; 6 7 if($name[$i] == "未確定"){ 8 $lines .= "<tr><td>".$name[$i]."</td><td>".$birthday[$i]."</td><td>".$age[$i]."</td></tr>\n"; 9 }else{ 10 $lines .= "<tr><td style='background-color:red;'>".$name[$i]."</td><td>".$birthday[$i]."</td><td>".$age[$i]."</td></tr>\n"; 11 } 12 $i++; 13} 14 15 16

投稿2017/06/06 21:46

madone99

総合スコア1855

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

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

narutomo

2017/06/07 12:34 編集

ご回答ありがとうございます。 上記の代入の仕方を試したところ、上手く指定したい背景色変更がかかりました! $i = $line = "" ; のように同じ行で、代入の代入みたいな記載方法があることを知りませんでした。 色々なプログラミング方法があるのですね。 ありがとうございました。 精進します。
madone99

2017/06/07 13:30

良かったです!今見たら色指定の条件が逆でしたね。。 よしなに変更して頂いたと思いますが失礼しました。
narutomo

2017/06/07 16:28

せっかく教えていただいたのですが、もう一つ自分なりにご教授頂いたコードを参考に、年齢の部分もある値の時は背景色を赤にするように追加でかいてみたのですが、最初の名前の背景色しか変更にならず苦戦しています。 年齢もelseifで指定して、名前と年齢がある値なら、赤にすると組んで見たつもりなのですが、どこか書き方が上手く行ってないのでしょうか? 自分が考えたのは、if,elseifで条件を繋いで最後にelseで閉めて表示でいいのではと思ったのですが、、、。 また、こういう場合に、変更したい項目が多くなると、たくさんのif文を書き込むしか方法でやっていくしかないのでしょうか?
madone99

2017/06/07 21:58

if文については、ifの中でまたifのようにネストが深くなりすぎたり、 多くの条件分岐になるようでしたら考えた方が良いと思います。 ネットにもあるかも知れませんが、「リーダブルコード」や「リファクタリング」のような 書籍を読んでみるのもきれいな書き方の参考になるかも知れませんね。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問