我试图检查是否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/