Php 仅检索值大于0的列
我想创建一个只显示值大于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 (
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>";