使用复选框过滤MySQLi

时间:2017-10-17 09:40:28

标签: php jquery html mysql

目前,我有一个显示一些帖子的页面。新闻帖子,博客文章等。我想要实现的是拥有复选框,以便用户可以查看,无论他/她想要看到什么类型的帖子。

例如,我应该能够查看“新闻”和“跟踪点数”,并且只能看到包含这些类别的帖子,而不会看到例如“博客”类别的帖子。

我当前的查询看起来像这样(获取所有帖子,无论类别)。我相信一些jQuery应该参与,但我不确定。如何连接查询复选框?

任何人都可以帮我吗?

$sql = "SELECT * FROM articles ORDER BY id DESC";

修改

我试过这个,但每当我使用复选框时,都没有显示但是我没有收到错误?

我的代码:

<?php
if(isset($_POST['submit'])){//to run PHP script on submit
if(!empty($_POST['check_list'])){
$categories = $_POST['check_list'];
// Loop to store and display values of individual checked checkbox.
foreach($categories as $selected){
echo $selected."</br>";
}
}
}
?>
<br /><br />
<?php

if(!empty($_POST['check_list'])){
	$sql = "SELECT * FROM articles ORDER BY id DESC WHERE `category` IN (".implode(',',$categories).")";
} else {
	$sql = "SELECT * FROM articles ORDER BY id DESC";
}

1 个答案:

答案 0 :(得分:0)

每个复选框都应该有一个值。当您提交表单(可能是$ _POST)时,您将在后端看到选中的复选框。您可以从本教程中获得启发:https://www.formget.com/php-checkbox/

重要 - 在SQL查询中使用表单数据之前,应先过滤表单数据。你可以从这里激发灵感:http://php.net/manual/en/function.filter-input.php

您应该在SQL Query中使用它之前准备变量:

$unsafe_variable = $_POST["user-input"];
$safe_variable = mysql_real_escape_string($unsafe_variable);

现在您知道选中了哪些复选框,您需要更改SQL查询以便按它们进行过滤。

所以我认为复选框值是数字(代表id)。因此,您将拥有一个名为 $ ids 的数组,其中包含所有选中的复选框。您的mysql查询将变为:

$sql = "SELECT * FROM articles WHERE `id_category` IN (".implode(',',$ids).") ORDER BY id DESC";