-3

我需要此代码的帮助,我只需要在空的命中数据中显示一个字符串“0”,所以我想到的是第 1 天有 3 次点击,第 2 天有 0 次点击,我真的不知道如何显示0 请帮帮我。谢谢你

days || Hits
 1 - | | |- 3
 2 - | | |- 
 3 - | | |-
 4 - | | |- 
 5 - | | |- 5

这是代码:

$year = date("Y");
$month = $_POST['selected_date'];
if(!isset($month) or $_POST['selected_date'] == 0)
{
  $month = date("n");
}
 $num = cal_days_in_month(CAL_GREGORIAN, $month, $year);

    for($i = 1; $i <= $num; $i++)
    { 
     echo "<p >$i - ";

     $query = mysql_query("SELECT DATE_FORMAT(`LookbookLogDate`, '%m') as 'month', DATE_FORMAT(`LookbookLogDate`, '%d') as 'day',
COUNT(`LookbookLogID`) as 'total'
FROM LookbookLog
where Lookbook_LookbookID = $LookbookID and LookbookLogDate like '%2013-03%'
GROUP BY DATE_FORMAT(`LookbookLogDate`, '%m'), DATE_FORMAT(`LookbookLogDate`, '%d')");
        while($row = mysql_fetch_array($query))
        {
               $day = $row['day'];

           $total = $row['total'];

             if($day == $i) echo $total."</p>";
        }


    }
4

5 回答 5

1

我会从数据库中得到零,因为有一个通用的 SQL 函数可以实现一个很好的解决方案:

SELECT
DATE_FORMAT(`LookbookLogDate`, '%m') as 'month',
DATE_FORMAT(`LookbookLogDate`, '%d') as 'day',
COALESCE(COUNT(`LookbookLogID`),0) as 'total'
FROM LookbookLog
{snip}

这意味着如果 COUNT() 的结果中没有值,它将改为选择 0。然后,您的 echo 语句将继续正常工作,而无需特别检查应用程序中的 NULL 情况。

于 2013-03-26T16:11:50.683 回答
0

尝试使用 empty() 函数,empty() 函数将许多东西视为真值,有关这些值的列表,请查看此处http://php.net/manual/en/function.empty.php

$total = (empty($row['total'])?0:$row['total']);

更新:

您只需要执行以下操作即可获得您正在寻找的结果。

$total = ($row['total']?$row['total']:0);
于 2013-03-26T16:08:13.983 回答
0

如果你这样做echo 0,它将在屏幕上显示 0,但是如果你这样做echo false,它将不会显示它。现在,您遇到的问题不是显示0,而是显示$total的值。如果您的查询返回空集,那么您的$row['total']is falseor nulland 因此echo falseorecho null不会显示任何内容。

检查以确保您的查询返回一些内容,并且使用查看它的类型来$total保存所需的值。var_dump

你需要类似的东西

   $total = ! empty($row['total']) ? $row['total'] : 0;
于 2013-03-26T16:08:19.630 回答
0

编辑:为什么不只是将字段int设置为并将默认值设置为0

您没有显示任何有关如何构建表格的代码,但您会这样做:

$total = ((!$row['total'] ? 0 : $row['total']);

这段代码基本上说“如果$row['total']为空白,则将其设为零。否则,将$total等于返回的任何内容。

于 2013-03-26T16:08:56.790 回答
0

您的问题是,COUNT(...)如果没有结果,则返回 NULL 而不是 0,这可能是 PHP 在输出时将其视为空字符串。您可以通过在 SQL 中添加COALESCE表达式来解决此问题(在我看来,这是更好的解决方案):

SELECT ... COALESCE(COUNT(`LookbookLogID`), 0) ...

或者在 PHP 中检查它:

echo $row['total'] ? $row['total'] : 0;

或多行版本:

if($row['total'])
    echo $row['total'];
else
    echo 0;

请注意,您不需要进行任何比较或调用empty(),因为 PHP 的类型转换将 null、空字符串和 0 视为 false

于 2013-03-26T16:09:50.857 回答