如果数据库条目为null,则不显示div

时间:2017-05-22 22:06:12

标签: php mysqli

拥有一个数据库,其中包含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)但是为空。 感谢。

2 个答案:

答案 0 :(得分: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>';
}

答案 1 :(得分:0)

我认为这样做会影响到你所追求的目标,尽管我放弃<div1></div1> - ish标记而只支持<div></div>

 <?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);
        }
    }
}