【问题标题】:If database entry null, do not display div如果数据库条目为空,则不显示 div
【发布时间】:2017-05-22 22:06:11
【问题描述】:

我有一个以 option1、option2、option3、option4、option5 作为列的数据库。选项 1-3 已输入数据,但选项 4-5 为 NULL。

如果数据库中的选项为 NULL,如何设置它以便不显示 div?

PHP 代码:

 $sql = "SELECT option1, option2, option3, option4, option5 FROM options";
        $result = mysqli_query($conn, $sql);
        $null = NULL;
        
        if (mysqli_num_rows($result) > 0) {
            while($row = mysqli_fetch_assoc($result)) {
                if ($result != $null) {
                    echo '<div class="row">' . '<div1></div1>' . '<div2>' . $row["option1"]. '</div2>' . '</div>';
                }
                else {
                    echo '<div class="null"></div>';
                }
                if ($result != $null) {
                    echo '<div class="row">' . '<div1></div1>' . '<div2>' . $row["option2"]. '</div2>' . '</div>';
                }
                else {
                    echo '<div class="null"></div>';
                }
                if ($result != $null) {
                    echo '<div class="row">' . '<div1></div1>' . '<div2>' . $row["option3"]. '</div2>' . '</div>';
                }
                else {
                    echo '<div class="null"></div>';
                }
                if ($result != $null) {
                    echo '<div class="row">' . '<div1></div1>' . '<div2>' . $row["option4"]. '</div2>' . '</div>';
                }
                else {
                   echo '<div class="null"></div>';
                }
                if ($result != $null) {
                    echo '<div class="row">' . '<div1></div1>' . '<div2>' . $row["option5"]. '</div2>' . '</div>';
                }
                else {
                    echo '<div class="null"></div>';
                }
                ...

CSS 代码:

.null {
    display: none;
}

目前,即使对于选项 4-5,div class="null" 也不起作用,并且 div class="row" 正在显示 (height=70px) 但为空白。

【问题讨论】:

    标签: php mysqli


    【解决方案1】:

    您正在将实际查询与 null 进行比较,而不是各个列。

    $result = mysqli_query($conn, $sql);
    

    上面的行返回一个 mysqli-result 对象,而不是行或列 - 在循环中使用你的 $row 变量,它保存每一行,像这样

    if ($row['option1'] != null) {
        echo '<div class="row">' . '<div1></div1>' . '<div2>' . $row["option1"]. '</div2>' . '</div>';
    } else {
        echo '<div class="null"></div>';
    }
    if ($row['option2'] != null) {
        echo '<div class="row">' . '<div1></div1>' . '<div2>' . $row["option2"]. '</div2>' . '</div>';
    } else {
        echo '<div class="null"></div>';
    }
    

    看到此代码将$row['option1']null 进行比较,而不是$resultnull 进行比较。

    如果没有行,你也可以不做任何事情,因为你根本不显示 div。

    if ($row['option1'] != null) {
        echo '<div class="row">' . '<div1></div1>' . '<div2>' . $row["option1"]. '</div2>' . '</div>';
    }
    if ($row['option2'] != null) {
        echo '<div class="row">' . '<div1></div1>' . '<div2>' . $row["option2"]. '</div2>' . '</div>';
    }
    

    【讨论】:

      【解决方案2】:

      我认为这可以满足您的需求,尽管我会放弃 &lt;div1&gt;&lt;/div1&gt;-ish 标记而只支持 &lt;div&gt;&lt;/div&gt;

       <?php
      $sql = 'SELECT option1, option2, option3, option4, option5 FROM options';
      $result = mysqli_query($conn, $sql);
      
      
      while($row = mysqli_fetch_array($result)) {
          foreach($row as $option) {
              if (!empty($option)) {
                  printf('
                      <div class="row">
                          <div1></div1>
                          <div2>%s</div2>
                      </div>
                  ', $option);
              }
          }
      }
      

      【讨论】:

        猜你喜欢
        • 2018-03-30
        • 2023-03-03
        • 1970-01-01
        • 1970-01-01
        • 2021-10-02
        • 1970-01-01
        • 1970-01-01
        • 2018-07-20
        • 1970-01-01
        相关资源
        最近更新 更多