如果isset为空,如果在PHP中不为空?

时间:2015-03-11 09:35:38

标签: php mysql checkbox

我试图检查是否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)是否为空,如果不为空,我会做一些事情,这样可以正常工作。

并且在代码的第二部分中,我正在检查它是否是空的,如果它是,那么我想做其他事情,但这并没有真正起作用,好像它没有检查它在我提交表格后,我不会得到任何结果。

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

任何帮助将不胜感激。

提前感谢。

1 个答案:

答案 0 :(得分:1)

如果未在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.
}