我有2个多个复选框,如果勾选了多个复选框,则无法正确显示。在“选择”查询中,只有最后一个复选框用于过滤器。
我在网上搜索了很多东西,但没有找到与此同时有问题的人。
HTML代码:
<aside><h3>Filter:</h3>
<details open="open">
<summary><label>Categorie</label></summary>
<div>
<label>
<input type="checkbox" name="filter_categorie[]" value="dog">
Dogs
</label>
</div>
<div>
<label>
<input type="checkbox" name="filter_categorie[]" value="fish">
Fishes
</label>
</div>
<div>
<label>
<input type="checkbox" name="filter_categorie[]" value="other">
Other
</label>
</div>
</details>
<details>
<summary><label>Land</label></summary>
<div>
<label>
<input type="checkbox" name="filter_country[]" value="germany">
Germany
</label>
</div>
<div>
<label>
<input type="checkbox" name="filter_country[]" value="austria">
Austria
</label>
</div>
</details>
<br><input type='submit' name ='update' value='Update'>
PHP代码:
include("server.inc");
$cxn = mysqli_connect($host,$user,$password,$database) or die ("No connection to Server");
if(isset($_POST['update']) ){
foreach ($_POST['filter_categorie[]'] as $item){
$query = "
SELECT *
FROM artikel
WHERE Categorie=\"{$_POST['filter_categorie']}\"
";}
$resultat = mysqli_query($cxn,$query) or die ("No results.");
最佳答案
尝试这样的事情(未经测试,只是一个想法):
include("server.inc");
$cxn = mysqli_connect($host,$user,$password,$database) or die ("No connection to Server");
if(isset($_POST['update']) ){
$query = 'SELECT * FROM artikel WHERE Categorie IN ('.implode(',', $_POST['filter_categorie']).')';
$resultat = mysqli_query($cxn,$query) or die ("No results.");
}
因此,基本上使用
$_POST['filter_categorie']
而不是$_POST['filter_categorie[]']
并使用implode将所有类别作为字符串提供给您的查询。无需使用foreach,您不想在前端运行尽可能多的类别选择查询。
关于php - 如何将SELECT(sql)与多个复选框一起使用?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/53745286/