[PHP-users 26108] number_format()を活用しつつ、ゼロとNULLを区別して表示させたい
naya
SNA02388 @ nifty.com
2005年 7月 11日 (月) 15:54:03 JST
こんにちは。nayaと申します(WinXP-sp2、IIS5.1、PHP5.0.3、MySQL4.0.14)。
PHP+MySQLによる入門本を参考に、検索システムに挑戦しています。
データ出力の際、表示のさせ方についてわからないことが二つあります。
■ 背景情報
MySQLにWEIGHT(重さ)というフィールドに、データをINSERTする際、
ゼロ(→計測した結果ゼロだった)場合と、
NULL(→そもそも計測していないので空白)という場合とで、それぞれ
INSERT INTO MYTABLE VALUES(0,.....)
INSERT INTO MYTABLE VALUES(NULL,.....)
のように使い分けています。
■ 質問1
PHPによって検索結果をHTMLで出力する際、
三桁区切り+小数点桁数を揃えたいため、
$body .= "<td>" . $col["WEIGHT"] . "</td>";
とせずに、number_format()関数の力を借りて、
$weightf = number_format($col['WEIGHT'],4);
$body .= "<td>" . $weightf . "</td>";
としてみたら、NULLのところが「0.0000」と出力されてしまいます。
本件、0.0000とNULLは違う意味に捕らえているので、
$body .= "<td>" . ( $weightf != "0" ? $weightf : "") . "</td>";
としてみたら、今度は「0.0000」と登録してあるはずデータまで
空白として出力されてしまいます。
整理すると、0.0000と登録されていたら、0.0000と表示し、
NULLで登録されていたら空白を表示し、
さらに三桁区切り+小数点桁数揃えを行いたいのですが、
解決方法はありませんでしょうか?
■ 質問2
このほかに、TESTDATE(計測日)というDATE型のフィールドがあります。
MySQLには「2005-07-03」の形式で収めていますが、
表示する際にyy/mm/dd形式(05/07/03)で表示させる方法はありませんか。
INSERTする段階で「05/07/03」としても、PHP経由で表示させると
「2005-07-03」になってしまいます・・・
■ 補足
入門本のサンプルを今回の目的に改造したソースは以下です。
(長くてすみません。また適宜削りましたが、削りすぎていたらすみません)
<?php
//データベース関連のデータをインクルード
require_once("dbini.php");
//MySQLに接続
$con = mysql_connect($DBSERVER, $DBUSER, $DBPASSWORD);
//データベースを選択
$selectdb = mysql_select_db($DBNAME, $con);
//SQL文を組み立て(フォームの値をWhereに指定)
$sql = "select * from mytable";
//結果セットを取得
$rst = mysql_query($sql, $con);
//抽出件数を取得
$recmax = mysql_num_rows($rst);
$body = "$recmax がみつかりました。";
//結果セットからデータを読み込み
$body .= "<table border='1' cellpadding='2' cellspacing='0'>";
for ($recnum = 0; $recnum < $recmax; $recnum++) {
$col = mysql_fetch_array($rst);
$weightf = number_format($col['WEIGHT'],4);
$body .= "<td>" . ( $pmf != "0" ? $pmf : "") . "</td>";
$body .= "<td>" . $col["TESTDATE"] . "</td>";
$body .= "</tr>";
}
$body .= "</table>\n";
//結果セットを破棄して接続を閉じる
mysql_free_result($rst);
$con = mysql_close($con);
?>
<html>
<head><title>結果</title></head>
<body>
<?= $body ?>
</body>
</html>
以上、よろしくお願い致します。
--
naya,
SNA02388 @ nifty.com
PHP-users メーリングリストの案内