• ベストアンサー

段ごとに配色を変える方法

MySQLから取得したデータをPHPで表示する際while()を使用しているのですが、この際に段ごとに配色を変えるには度押したらよいのでしょうか? 完成イメージとしてYahoo!ニュースの主なトピックス(http://dailynews.yahoo.co.jp/fc/local/)にあるように1段目は白2段目はねずみ色そして3段目は白と1段ごとに異なる配色をしたいのです。 以下の場合すべてが赤になってしまう。 print("<table><tr><td>データ</td></tr><tr>"); while($row = mysql_fetch_object($res)) { print("<td color=\"red\">".$row['YY'}."</td>"); } print("</tr></table> よろしくお願いいたします。

質問者が選んだベストアンサー

  • ベストアンサー
  • yambejp
  • ベストアンサー率51% (3827/7415)
回答No.3

whileをまわすのになぜtrをいれないのでしょうか? このソースだと横に長い表ができると思いますが・・・。 それと一行ごとに色を変えたいということであれば、 tdではなくtrの色がえをすると良いのでは? また行数をわって余りをだす方法のほかに、 以下のような方法があります。お試しください。 (ざっと書いたものなので書式が間違ってたらごめんなさい) print("<table><tr><td>データ</td></tr>"); $color="red"; while($row = mysql_fetch_object($res)) { $color=($color=="red")?"blue":"red"; print("<tr bgcolor=\"${color}\"><td>${row[YY]}</td></tr>\n"); } print("</table>");

itmedia_search
質問者

補足

大変参考になりました。ありがとうございました。

その他の回答 (2)

  • kusukusu
  • ベストアンサー率38% (141/363)
回答No.2

$a%2 …$aを2で割った余り つまり、0か1 0/2=0余り0 1/2=0余り1 2/2=1余り0 3/2=1余り1   :   :

回答No.1

こんにちは、 二通り考えられますが、 一定周期で色を変える場合は、 例えば、交互に色を変える場合は、 データの数をmysql_num_lowsなどで取得して、 その総数を$aなどとして、 下記のようにすれば、赤と青交互になりますし if ($a%2 == 0){ print("<td color=\"red\">".$row['YY'}."</td>"); } else { print("<td color=\"bulue\">".$row['YY'}."</td>"); } 条件で変えたい場合は、mysqlに条件設定のフィールドを作成して、 条件により1,2,3など入力されるようにして、 その条件で1の場合は赤、2の場合は青、3の場合は黄色 などとすればよいのでは、ないでしょうか?

itmedia_search
質問者

補足

回答ありがとうございます。 書いていただいたサンプルですが、どのようにして実装すればいいのでしょうか? print("<table><tr><td>データ</td></tr><tr>"); while($row = mysql_fetch_object($res)) { if ($a%2 == 0){ print("<td color=\"red\">".$row['YY'}."</td>"); } else { print("<td color=\"bulue\">".$row['YY'}."</td>"); } } print("</tr></table> ということでしょうか?この場合、レコード数が2以外はすべて青になってしまうような気がします。 よろしくお願いいたします。

関連するQ&A