我试图检查是否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)是否为空,如果不为空,我会做一些事情,这样可以正常工作。
并且在代码的第二部分中,我正在检查它是否是空的,如果它是,那么我想做其他事情,但这并没有真正起作用,好像它没有检查它在我提交表格后,我不会得到任何结果。
我希望我能正确解释,以便有人可以帮助我。
任何帮助将不胜感激。
提前感谢。
答案 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.
}