「ブロック機能」のリニューアルについて

初歩的な質問で恐縮ですが教えてください。
MySQLで、あるレコードのあるカラム(1000レコードのうち、20レコードくらいで、20のカラムはばらばら)の文字だけ指定して色をつけて出力したいのです。

この場合、MySQLのデータに何か書き込むのでしょうか。
それとも、出力の際に工夫するのでしょうか。
何卒よろしくお願いいたします。

教えて!goo グレード

A 回答 (3件)

updateでjnnのnameを更新するはいただけないですね・・・


こんな風にclassの設定を別テーブルで管理してはどうでしょう?

jnnテーブル
id|name|その他・・・
1,hoge
2,fuga
3,piyo
・・・・

classnameテーブル
id,classname
1,hot
3,cool
→2はクラスを設定しない=色をつけない

なお、スタイルはphpでイチイチprintせず最初からかいておくか
外部ファイルにまとめておけばすっきりします。

//hoge.css
p.hot {color: red;}
p.cool {color: blue;}

//hoge.php
<html>
<head>
<link rel="stylesheet" type="text/css" href="hoge.css" />
</head>
<body>
<?
$sql = "select j.name,c.classname from jnn as j left join classname as c on j.id=c.id";
$res = mysql_db_query($db,$sql);
while($row = mysql_fetch_array($res)){
print "<p class='{$row["classname"]}'>{$row["name"]}</p>";
}
?>
</body>
</html>
    • good
    • 0
この回答へのお礼

GWで出かけておりまして、お礼が遅くなり申し訳ございませんでした。全くの素人なもので、cssも初めて知りました。大変お恥ずかしい限りです。今後ともよろしくお願いいたします。

お礼日時:2008/05/07 06:28

ポイントは3点



(1)どのデータに色をつけるか
法則性があるならPHPで判断できます、最初から指定があるなら
データベース側にフラグ用のフィールドをつくっておくとよいでしょう。

(2)タグにクラスを設定する
(1)でえた色をつける情報をもとに、tdのタグにclassをしていします。

(3)クラスに色をつける
文字に色をしていするならcolorをいじればよいでしょう。
これはPHP側で随時やるよりも最初からcssで指定しておいた方がよいです

この回答への補足

「class」というのを初めて知りました。大体できました。ありがとうございました。しかし、もっと基本的なことだと思いますが、もうひとつ教えてください。

$sql = "select name from jnn where n = 77";
$res = mysql_db_query($db,$sql);
while($row = mysql_fetch_array($res)){
$sql = "update jnn set name = '<p class=hot>$row[name]</p>' where n = 77";
mysql_db_query($db,$sql);
}

print("<style type=text/css>");
print("p.hot {color: red}");
print("</style>");

というふうにやりましたら、n = 77 の [name] が無事に赤文字になりました。 この77を関数でやるにはどうしたらよいのでしょうか。

$x = "77"
n = $x

としたらエラーとなりました。
全く初心者の質問かと思いますが、何卒よろしくお願いいたします。

補足日時:2008/04/29 08:18
    • good
    • 0

>色をつけて出力したい



意味がちょっとわからないです。
MySQLとはあくまでもデータベースですので出力はされないはずですが?
どういう出力を想定していますか?

この回答への補足

HTMLで下記のように表をそのまま出力することを想定しています。


$sql = "select * from data;";
$rs = mysql_db_query($db,$sql);
$num = mysql_num_fields($rs);
print("<table border=1>");
for ($i=0;$i<$num;$i++){
print("<td></td>");
}
while($row=mysql_fetch_array($rs)){
print("<tr>");
for($j=0;$j<$num;$j++){
print("<td><nobr>".$row[$j]."</nobr></td>");
}
print("</tr>");
}
print("</table>");

補足日時:2008/04/28 13:17
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!


人気Q&Aランキング