1

このようなチェックボックスがあります

<form action="tt.php" method="post">
<input type="checkbox" name="lvl[]" value="0">0&nbsp
<input type="checkbox" name="lvl[]" value="1">1&nbsp
<input type="checkbox" name="lvl[]" value="2">2&nbsp
<input type="checkbox" name="lvl[]" value="3">3&nbsp
<input type="checkbox" name="lvl[]" value="4">4&nbsp
<input type="submit" value="Ok">

チェックされたものから次のようにSQLクエリに値を追加するにはどうすればよいですか?:

2と4をチェックした
select name,lvl,team from $table where lvl=2 or lvl=4
場合2と4をチェックした場合AND0をチェックした場合
select name,lvl,team from $table where lvl=2 or lvl=4 or team='abc'(0をチェックした場合は'select'にteam='abc'の文字列が含まれている必要があり、そうでない場合は-しない)
何も選択されていない場合
select name,lvl,team from $table

4

1 に答える 1

2
$where = '';

if (isset($_POST['lvl']) && $vals = $_POST['lvl']) {

   // Begin WHERE string
   $where = 'WHERE '; 

   // Remove '0' from array
   if ($key = array_search('0', $vals)) {
      $where .= 'team = "abc" ';
      unset($vals[$key]);
   } 

   // Append `WHERE lvl IN (2,4)`
   $where .= 'AND lvl IN (' . implode(',', $vals) . ')';

   // Final statement

}

$sql = "select name,lvl,team from $table $where";

編集

これを置き換えるとどうなりますか:

if ($key = array_search('0', $vals)) {
   $where .= 'team = "abc" ';
   unset($vals[$key]);
} 

と:

if ($vals[0] === '0') {
   $where .= 'team = "abc" ';
   unset($vals[0]);
} 

コードを次のように変更します。

$first = false;
if ($vals[0] === '0') {
    $where .= 'team = "neutral"';
    unset($vals[0]);
    $first = true;
}
if (count($vals)) {
    if ($first) $where .= ' OR ';
    $where .= 'lvl IN (' . implode(',', $vals) . ')';
}
于 2013-01-20T12:37:15.047 に答える