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 に答える