[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 メーリングリストの案内