0

我有 2 个复选框。它们的值转到另一个 php 文件,如果它们中的任何一个被选中,它的值就是插入的 mysql 代码。我做到了,但是当复选框的数量增加并且出现更高级的东西时,我的代码将无法付诸实践。

这是 checkbox.php :(它在一个表单中)

<div>
  <label>Choose:</label>
  <label>Camera </label><input type="checkbox" name="kind[]" value="1" />
  <label>Video  </label><input type="checkbox" name="kind[]" value="2"/>
</div>  

单击表单时,它会通过 AJAX 和 jquery($.post) 转到 fetch_kind.php。
这是代码:

<?php

$kind = array();
$kind = $_POST['kind'];
$count = count($kind);

if ($count== 0) {
  echo "You did not checked any of checkboxes!!!";
}

if ($count == 2) {
  $sql = "SELECT id,kind FROM products";
} else {

   foreach ($kind as $value) {
     if ($value =="1") {
       $sql = "SELECT id,kind FROM products WHERE kind = " . $value;    
     }
     if ($value =="2") {
       $sql = "SELECT id,kind FROM products WHERE kind = " . $value;
     }
   }
} 

?>

你能举一个更好的例子吗?谢谢...

4

2 回答 2

1

您可以遍历所有复选框并向数组添加简单条件。你在最后内爆了数组。

就像是:

$conds = array();
foreach ($kind as $value) {
  $conds[] = '`kind` = ' . intval($value);
}

$sql = "SELECT id,kind FROM products WHERE " . implode(" OR ", $conds);
于 2012-05-25T21:52:18.823 回答
1

一种简单的方法是将所有值和我们分组IN

if ($count > 0){
    $sql = "SELECT id,kind FROM products WHERE kind IN (" . implode (',', $kind) . ")"; 
}

此外,您可能想研究对您的输入进行消毒。

于 2012-05-25T22:06:27.663 回答