<tr class="brand_code1">
<td valign="top" width="50"><input type="checkbox" class="checkAll1" id="br1all"><label for="br1all">ALL</label></td>
<td>
<ul>
<!--{@ brands['F'] }-->
<li>
<input type="checkbox" id="br_{.key_}" name="br_code[]" value="{.key_}">
<label for="br_{.key_}">{.key_}</label>
</li>
<!--{/}-->
</ul>
</td>
</tr>$where = array();foreach($br_code AS $v)
{
array_push($where, "asr_product_code LIKE '{$v}%'"); // 我想问下,这边的语句只能在有一条数据选择的时候才能成功执行,但要是选择的数量超过了一个的话,这句就不管用了,该怎么修改呢? br_code($v)是
AA, BB, CC,DD, EE 等数据组合成的数组。

}
var br_code = [];
$.each($('.brand_code1 :checkbox:checked'), function(){
br_code.push(this.value);
});
glists.set_param('br_code', br_code);

解决方案 »

  1.   

    $where = array();if (count($br_code)==1){foreach($br_code AS $v)
    {
    array_push($where, "asr_product_code LIKE '{$v}%'"); // 我想问下,这边的语句只能在有一条数据选择的时候才能成功执行,但要是选择的数量超过了一个的话,这句就不管用了,该怎么修改呢? br_code($v)是
    AA, BB, CC,DD, EE 等数据组合成的数组。
    }
    }不知道你是不是要这样做
      

  2.   

    那如果br_code里有 AA,BB 的时候该怎么做啊?asr_product_code like 'AA%'  那BB怎么办啊?该怎么写这个sql 语句?
      

  3.   

    就是说,选择很多checkbox的时候,但这个checkbox的值是某个字段的前两位。比如checkbox的值是AA的话,通过 like 就能找到 AAdfdsf 这样的值。 现在问题是如果AA,BB,CC这样checkbox的值不止一个的时候,该怎么修改 like语句 才能找到 AAddsdf , BBdfdf, CCdfdsafdasf 这样的值
      

  4.   

    已知 checkbox的值是某个字段的前两位。这点很重要,他会影响到算法,乃至效率。like 是查询中最慢的一种,还不能利用索引。现在问题是如果AA,BB,CC这样checkbox的值不止一个的时候 该怎么做
    是写上一串 xxx like 'xx%' 吗?答案是否定的
    由于只有被选中的复选框才会被提交,所以 $_POST['br_code'] 是不会有空元素的,我们只需将它们连接成合法的串就行了
    $br_code = "'" . join("','", $_POST['br_code']) . "'";最后变成这样就行了
    ... left(asr_product_code,2) in ( $br_code ) ";