Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/opencv/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 仅检索值大于0的列_Php_Mysql - Fatal编程技术网

Php 仅检索值大于0的列

Php 仅检索值大于0的列,php,mysql,Php,Mysql,我想创建一个只显示值大于0的列的显示 显示字段和值的我的代码: echo "<table><tr>"; while ($property = mysql_fetch_field($result)) { if($property->name > '0') echo "<td>Field name: " . $property->name . "</td>"; } echo "<tr/>"; while (

我想创建一个只显示值大于0的列的显示

显示字段和值的我的代码:

echo "<table><tr>";
while ($property = mysql_fetch_field($result))
{
    if($property->name > '0')
    echo "<td>Field name: " . $property->name . "</td>";
}
echo "<tr/>";
while ($row = mysql_fetch_assoc($result)) 
{ 
    echo "<tr><td>".$row['a']."</td>";
    echo "<td>".$row['b']."</td>";
    echo "<td>".$row['c']."</td>";
    echo "<td>".$row['d']."</td></tr>";
}
echo "</table>";
我想要一个如下所示的显示器:

Field name: a   Field name: b   Field name: c   
1               2               3               
其中,由于值为0,因此不显示
字段名:d

我该怎么做?我可以向你要一些例子吗

谢谢。

试试看

while ($row = mysql_fetch_assoc($result)) 
{ 
   echo "<tr>";
   if($row['a'] >0)    echo "<td>".$row['a']."</td>";  else echo"<td>-<td>";
   if($row['b'] >0)    echo "<td>".$row['b']."</td>";  else echo"<td>-<td>";
   if($row['c'] >0)    echo "<td>".$row['c']."</td>";  else echo"<td>-<td>";
   if($row['d'] >0)    echo "<td>".$row['d']."</td>";  else echo"<td>-<td>";
  echo "</tr>";
}
while($row=mysql\u fetch\u assoc($result))
{ 
回声“;
如果($row['a']>0)回显“$row['a']”;否则回显“-”;
如果($row['b']>0)回显“$row['b']”;否则回显“-”;
如果($row['c']>0)回显“$row['c']”;否则回显“-”;
如果($row['d']>0)回显“$row['d']”;否则回显“-”;
回声“;
}

为了获得正确的预期结果,您对代码进行了修改

echo "<table><tr>";
while ($property = mysql_fetch_field($result))
{
    if($property->name > '0')
    echo "<td>Field name: " . $property->name . "</td>";
}
echo "<tr/>";

while ($row = mysql_fetch_assoc($result)) 
{ 
    echo "<tr>";
    if($row['a'] > 0) echo "<td>".$row['a']."</td>";
    if($row['b'] > 0) echo "<td>".$row['b']."</td>";
    if($row['c'] > 0) echo "<td>".$row['c']."</td>";
    if($row['d'] > 0) echo "<td>".$row['d']."</td>";
    echo "</tr>";
}
echo "</table>";
echo”“;
而($property=mysql\u fetch\u字段($result))
{
如果($property->name>“0”)
echo“字段名:”.$property->name.”;
}
回声“;
while($row=mysql\u fetch\u assoc($result))
{ 
回声“;
如果($row['a']>0)回显“$row['a']”;
如果($row['b']>0)回显“$row['b']”;
如果($row['c']>0)回显“$row['c']”;
如果($row['d']>0)回显“$row['d']”;
回声“;
}
回声“;

不要挑剔,撇开这一点,乍一看,让mysql来承担繁重的工作肯定更有意义——为什么要在HTML表中输出一些列数不同的行?除了永久性的维护问题,从视觉美学的角度来看,这可能被认为是糟糕的设计

同时,我确实理解“足够好”的概念,所以我不会抱怨太多。

$results=array();
$results = array();
$disp_col_a = false;
$disp_col_b = false;
$disp_col_c = false;
$disp_col_d = false;

while ($row = mysql_fetch_assoc($result)) 
{
    if ($row['a'] > 0){
        $disp_col_a = true;
    }
    if ($row['b'] > 0){
        $disp_col_b = true;
    }
    if ($row['c'] > 0){
        $disp_col_b = true;
    }
    if ($row['b'] > 0){
        $disp_col_b = true;
    }
    $results[] = $row;
}

echo "<table><tr>";
if ($disp_col_a){
    echo "<td>Field name: a</td>";
}
if ($disp_col_b){
    echo "<td>Field name: b</td>";
}
if ($disp_col_c){
    echo "<td>Field name: c</td>";
}
if ($disp_col_d){
    echo "<td>Field name: d</td>";
}
echo "<tr/>";
foreach ($results as $results_row) {
{ 
    echo "<tr>";
    if ($disp_col_a){
        echo "<td>";
        if ($results_row['a'] > 0){
            echo $results_row['a'];
        }
        echo "</td>";
    }
    if ($disp_col_b){
        echo "<td>";
        if ($results_row['b'] > 0){
            echo $results_row['b'];
        }
        echo "</td>";
    }
    if ($disp_col_c){
        echo "<td>";
        if ($results_row['c'] > 0){
            echo $results_row['c'];
        }
        echo "</td>";
    }
    if ($disp_col_d){
        echo "<td>";
        if ($results_row['d'] > 0){
            echo $results_row['d'];
        }
        echo "</td>";
    }
    echo "</tr>";
}
echo "</table>";
$disp_col_a=假; $disp_col_b=假; $disp_col_c=假; $disp\u col\u d=假; while($row=mysql\u fetch\u assoc($result)) { 如果($row['a']>0){ $disp_col_a=真; } 如果($row['b']>0){ $disp_col_b=真; } 如果($row['c']>0){ $disp_col_b=真; } 如果($row['b']>0){ $disp_col_b=真; } $results[]=$row; } 回声“; 如果($disp\u col\u a){ echo“字段名:a”; } 如果($disp\u col\u b){ echo“字段名:b”; } 如果($disp\u col\u c){ echo“字段名:c”; } 如果($disp\u col\d){ echo“字段名:d”; } 回声“; foreach($results作为$results\u行){ { 回声“; 如果($disp\u col\u a){ 回声“; 如果($results_row['a']>0){ echo$results_row['a']; } 回声“; } 如果($disp\u col\u b){ 回声“; 如果($results_row['b']>0){ echo$results_row['b']; } 回声“; } 如果($disp\u col\u c){ 回声“; 如果($results_row['c']>0){ echo$results_row['c']; } 回声“; } 如果($disp\u col\d){ 回声“; 如果($results_row['d']>0){ echo$results_row['d']; } 回声“; } 回声“; } 回声“;
如果结果集中有多条记录,不同的列中有0,该怎么办?最好是限制您的查询只过滤>0的记录。然后您的php端只处理该记录集:)代码是只显示值的部分,用于选择不在此处发布的行的查询。@NullPointer,我该怎么办它在查询中?我可以有一些例子吗?因为我只过滤值,而不过滤列(字段)。我现在可以问一下你的答案和我的答案有什么区别吗?你不能对这种类型的代码做太多更改。事实上,我在构建我的代码时没有看到你的代码。是的,这是真的,但因为我已经创建了它,所以我发布了它。我将你的工作调整为+1。这只过滤行部分,但过滤列(字段)如果($row['a']>0)echo“字段名:a”。$row['a']),我可以手动执行,但是有没有更有效的方法?如果b为0,c的值将在b列中,d的值将在c列中-不好,是否可以不显示整个列?因为我想生成一个PDF,类似于报告。我想节省空间,并且看起来更干净。如果没有,整个页面将充满“0”。我的完整的代码有点凌乱,我只是删掉了我面临问题的部分。这里发布的代码不是我代码中的实际内容,只是概念。我这样做是因为我想创建一个从php生成的PDF,我想通过删除不需要的字段来节省空间。明白了。在这种情况下,我将继续“足够好了。”:)
$results = array();
$disp_col_a = false;
$disp_col_b = false;
$disp_col_c = false;
$disp_col_d = false;

while ($row = mysql_fetch_assoc($result)) 
{
    if ($row['a'] > 0){
        $disp_col_a = true;
    }
    if ($row['b'] > 0){
        $disp_col_b = true;
    }
    if ($row['c'] > 0){
        $disp_col_b = true;
    }
    if ($row['b'] > 0){
        $disp_col_b = true;
    }
    $results[] = $row;
}

echo "<table><tr>";
if ($disp_col_a){
    echo "<td>Field name: a</td>";
}
if ($disp_col_b){
    echo "<td>Field name: b</td>";
}
if ($disp_col_c){
    echo "<td>Field name: c</td>";
}
if ($disp_col_d){
    echo "<td>Field name: d</td>";
}
echo "<tr/>";
foreach ($results as $results_row) {
{ 
    echo "<tr>";
    if ($disp_col_a){
        echo "<td>";
        if ($results_row['a'] > 0){
            echo $results_row['a'];
        }
        echo "</td>";
    }
    if ($disp_col_b){
        echo "<td>";
        if ($results_row['b'] > 0){
            echo $results_row['b'];
        }
        echo "</td>";
    }
    if ($disp_col_c){
        echo "<td>";
        if ($results_row['c'] > 0){
            echo $results_row['c'];
        }
        echo "</td>";
    }
    if ($disp_col_d){
        echo "<td>";
        if ($results_row['d'] > 0){
            echo $results_row['d'];
        }
        echo "</td>";
    }
    echo "</tr>";
}
echo "</table>";