我试图检查是否isset is empty,如果是,那么我想做其他事情。

我的表单和ONE input field (hidden field and its name is keyword2)中有几个复选框。如果用户选中任何一个复选框并提交表格,将向他们显示mysql数据库中所请求的信息。这工作正常,并且应该如此。

在页面加载时,没有选中任何复选框,但是输入字段中始终会有一个值,并且永远不会为空。

因此,如果用户提交表单时未选中任何复选框,那么我将尝试在页面加载时加载一些其他数据/信息!

到目前为止,这是我所做的:

<?php
$searchList = "";
$clause = " WHERE ";//Initial clause
$sql="SELECT *
FROM `yt`
INNER JOIN `ATTRIBUTES` ON yt.id=ATTRIBUTES.id";//Query stub
    if(isset($_POST['keyword']) && !empty($_POST['keyword'])){

        foreach($_POST['keyword'] as $c){
            if(!empty($c)){
                $keyword2 = $_POST['keyword2'];
                ##NOPE##$sql .= $clause."`".$c."` LIKE '%{$c}%'";
                $sql .= $clause . " (ATTRIBUTES.sizes LIKE BINARY '$c' OR ATTRIBUTES.colors LIKE BINARY '$c') AND ATTRIBUTES.type='$keyword2'";
                $clause = " OR ";//Change  to OR after 1st WHERE
            }
        }
        $sql .= " GROUP BY yt.id";
        $query = mysqli_query($db_conx, $sql);
            $productCount = mysqli_num_rows($query);
            if ($productCount > 0) {
                while($row = mysqli_fetch_array($query, MYSQLI_ASSOC)){
             $id = $row["id"];
             $product_name = $row["product_name"];
                   $searchList .= '<a class="overlay" href="product.php?id='.$id.'"></a>';
                }
            }
        }

        ///////////////IF EMPTY////////////////
if(isset($_POST['keyword']) && empty($_POST['keyword'])){
   $keyword2 = $_POST['keyword2'];
   $sql = "SELECT * FROM ATTRIBUTES WHERE type='$keyword2'";
   $query = mysqli_query($db_conx, $sql);
   $productCount = mysqli_num_rows($query );
            $productCount = mysqli_num_rows($query);
            if ($productCount > 0) {
                while($row = mysqli_fetch_array($query, MYSQLI_ASSOC)){
             $id = $row["id"];
             $product_name = $row["product_name"];
                   $searchList .= '<a class="overlay" href="product.php?id='.$id.'"></a>';
                }
            }
        }
?>


如您在上面的代码中所看到的,我首先检查复选框($ keyword)是否不为空,如果不为空,我会做些事情,并且工作正常。

在代码的第二部分中,我正在检查它是否为空,是否想要做其他事情,但这实际上没有用,好像它不是在检查是否为空,我将提交表格后没有任何结果。

我希望我能正确解释,以便有人可以帮助我。

任何帮助,将不胜感激。

预先感谢。

最佳答案

如果未在HTML中打勾复选框,PHP将根本不会收到该变量。

您只需要使用array_key_exists()检查密钥是否存在:

if( !array_key_exists('keyword', $_POST) )
{
    // The checkbox was not checked
    // or at least there is no 'keyword' key in the $_POST array.
}

关于php - 如果isset为空,如果不是在PHP中为空?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/28982897/

10-15 11:50