【问题标题】:Select option still appears on the page even after PHP IF.. statement即使在 PHP IF.. 语句之后,选择选项仍然出现在页面上
【发布时间】:2019-08-31 14:55:21
【问题描述】:

我正在使用 PHP 开发一个在线商店,所以在显示产品详细信息的 productdetails.php 上,我编写了以下代码:

if(!empty($pro_colors))
{
echo "
    <div class=''>
        <h4 class='' style='float:right'>&nbsp;:رنگ <span>*</span></h4>
        <select class='select-css'>      
        ";
        foreach($pro_colors as $colors)
        {
            echo "
                <option value='$colors'>$colors</option>
            ";                                          
        }
        echo "
        </select>
    </div></br>
";
}

所以简单地说,如果在 db 的产品中添加了任何颜色,它必须显示 select 选项,如果没有向 db 添加颜色,则不得出现 select 选项!

但是当 db 上没有数据作为颜色时,它会显示:

但是,我的表格是这样的:

那么请告诉我,我应该如何解决这个问题?!

【问题讨论】:

  • 检查变量的内容你使用var_dump($pro_colors);
  • 补充@NigelRen 所说的,在表格的图片中,product_colors 似乎是空的,但它可能包含一个空格字符,导致empty 调用失败。

标签: php mysql if-statement select-options


【解决方案1】:

您的数组$pro_colors 似乎有一个空值。您可以使用 array_filter

从数组中清除空值和 null 值
$pro_colors = array_filter($pro_colors);

if(!empty($pro_colors))
{
echo "
    <div class=''>
        <h4 class='' style='float:right'>&nbsp;:رنگ <span>*</span></h4>
        <select class='select-css'>      
        ";
        foreach($pro_colors as $colors)
        {
            echo "
                <option value='$colors'>$colors</option>
            ";                                          
        }
        echo "
        </select>
    </div></br>
";
}

【讨论】:

    【解决方案2】:

    你必须检查颜色是否为空。像这样

          foreach($pro_colors as $colors)
            {
    
    if (!empty($colors)) {
                echo "
                    <option value='$colors'>$colors</option>
                ";  
                          }
    
            }
    

    您首先使用了 if(!empty($pro_colors)) 实际上它不会检查每种颜色,因为 $pro_colors 是一个数组。

    编辑:根据@hasta dhana 评论。首先您需要检查数据库是否有任何颜色数据。由于您没有完整的代码,我正在编写此示例代码以便您理解:

        $sql = "SELECT count(*) FROM tablenamehere WHERE product_colors != ''"; 
        $result = $con->prepare($sql); 
        $result->execute(); 
        $number_of_rows = $result->fetchColumn(); 
    
    if ($number_of_rows > 0 ) {
    
    echo "
        <div class=''>
            <h4 class='' style='float:right'>&nbsp;:رنگ <span>*</span></h4>
            <select class='select-css'>      
            ";
              foreach($pro_colors as $colors)
            {
    
    if (!empty($colors)) {
                echo "
                    <option value='$colors'>$colors</option>
                ";  
                          }
    
            }
            echo "
            </select>
        </div></br>
    ";
    }
    

    【讨论】:

    • 使用这种方法仍然会显示选择,因为&lt;select class='select-css'&gt; 元素仍然在if 条件之外
    • 正是@HastaDhana,在这种情况下,他必须检查数据库是否有颜色。它必须在sql查询之后完成。因为他没有给出查询和完整代码,所以我不能给他完整的工作代码。但是我将编辑 ans 并在那里添加行想法。感谢您指出我们的
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-01-13
    • 2013-02-27
    • 1970-01-01
    • 2018-08-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多