如果sql查询不显示结果,如何隐藏表

k5ifujac  于 2021-06-21  发布在  Mysql
关注(0)|答案(2)|浏览(379)

因此,我一直在处理这个查询,以便根据从数据库中提取的内容显示某些信息,但是我总是看到表的第一个部分,在本例中是表头。我的问题是,当没有结果出现时,头仍然保留,并且在以下查询没有结果时,没有幸运地隐藏它们。请给我指出正确的方向,代码片段真的很有帮助。:)

<div>
<?php
$query1 = $wpdb->get_results( $wpdb->prepare ( "SELECT * FROM table WHERE Column1='$column1value'", OBJECT_K ));?>
    <table>
        <tr>
            <td>Header1</td>
            <td>Header2</td>
            <td>Header3</td>
        </tr>

        <?php foreach ($query1 as $results1) {?>
            <?php if($results1->Column2 !="" && $results1->Column2_Msg!=""){ ?>
            <tr>
                <td><?php echo $results1->Column1; ?></td>
                <td><?php if($results1->Column2!=""){echo date('m/d/y', strtotime($results1->Column2)); }else echo '';?></td>
                <td><?php echo $results1->Column2_Msg; ?></td>
            </tr>
            <?php }?>
            <?php if($results1->Column3!="" && $results1->Column3!=""){ ?>
            <tr>
                <td><?php echo $results1->Column1; ?></td>
                <td><?php if($results1->Column3!=""){echo date('m/d/y', strtotime($results1->Column3)); }else echo '';?></td>
                <td><?php echo $results1->Column3_Msg; ?></td>
            </tr>
            <?php }?>
            <?php if($results1->Column4!="" && $results1->Column4_Msg!=""){ ?>
            <tr>
                <td><?php echo $results1->Column1; ?></td>
                <td><?php if($results1->Column4!=""){echo date('m/d/y', strtotime($results1->Column4)); }else echo '';?></td>
                <td><?php echo $results1->Column4_Msg; ?></td>
            </tr>
            <?php }?>
        <?php } ?>
    </table>
</div>

我试着用下面的脚本 Package 包含标题的tr,但是即使有结果也隐藏了它们

$verify = $wpdb->get_results( $wpdb->prepare ( "SELECT count(*) AS TALLY FROM table WHERE Column1='$column1value' AND Column2 IS NOT NULL AND Column3 IS NOT NULL AND Column4 IS NOT NULL AND Column2_Msg  IS NOT NULL AND Column3_Msg IS NOT NULL AND Column4_Msg IS NOT NULL", OBJECT_K ));

 if ($verify->TALLY > 0 ) {
    foreach ($verify as $verified) {

    // html table goes here

    }
 }
 else {

    echo '';    
 }

谁能帮我照一下这个吗谢谢。
更新
下面是sql表结构,以及它应该如何工作以及当前如何工作。
|组|位置1 |位置2 |位置3 |位置1 |位置2 |位置3 |位置|
组列始终具有内容location1和location1\u msg、location2和location2\u msg以及location3和location3\u msg,它们在html表中成对出现,并且可以填充一个或另一个或两个项。
所以html表可以如下所示
|收割台1 |收割台2 |收割台3
|组|位置1 ||
|组|位置2 |位置2 |消息|
|组| |位置3 ||
但是,如果一个组的行中没有任何内容,我就不希望出现html表。我有一切工作,除了让它走了哈哈

slwdgvem

slwdgvem1#

这与哈立德·朱奈德发布的答案基本相同。我只是想把剧本完整地展示给你看。原因是,这只是我个人的喜好,我个人不喜欢通过我的代码,特别是在不同的条件下频繁地进出php。
因此,下面的代码向您展示了如何使用串联来分解脚本。在我看来,它使脚本更容易遵循和故障排除。
不管怎样,只是另一种方法:

$query1 = $wpdb->get_results( $wpdb->prepare ( "SELECT * FROM table WHERE Column1='$column1value'", OBJECT_K ));

if($query1){

echo 
'<div>
  <table>
    <tr>
      <td>Header1</td>
      <td>Header2</td>
      <td>Header3</td>
    </tr>';

    foreach ($query1 as $results1) {

      if($results1->Column2 !="" && $results1->Column2_Msg!=""){
      echo
        '<tr>
          <td>' . $results1->Column1 . '</td>';

          if($results1->Column2!=""){
          echo '<td>' . date('m/d/y', strtotime($results1->Column2)) . '</td>'; 
          }
      echo '<td>' . $results1->Column2_Msg . '</td>
      </tr>';
      }

      if($results1->Column3!="" && $results1->Column3!=""){  
      echo  
      '<tr>
        <td>' . $results1->Column1 . '</td>';

        if($results1->Column3!=""){
        echo '<td>' . date('m/d/y', strtotime($results1->Column3)) . '</td>'; 
        }

      echo '<td>' . $results1->Column3_Msg . '</td>
      </tr>';
      }  

      if($results1->Column4!="" && $results1->Column4_Msg!=""){
      echo  
      '<tr>
        <td>' . $results1->Column1 . '</td>';

        if($results1->Column4!=""){
        echo '<td>' . date('m/d/y', strtotime($results1->Column4)) . '</td>';
        }

        echo   '<td>' . $results1->Column4_Msg . '</td>
      </tr>';

      }
   }

  echo 
  '</table>
</div>';

} else{

  echo 'No data to display.';

  }
mwyxok5s

mwyxok5s2#

只需添加 !empty 在创建表之前检查

<?php
$query1 = $wpdb->get_results(......);

    if(!empty($query1)){ ?>
        <table>
            <tr>
               ...............
            <tr>
        </table>

<?php } ?>

相关问题