2014-07-06 4 views
0

나는 회사의 목록을 자신의 필드와 크기를 포함시켜 만들었습니다. 나는체크 박스 검색 php

<tr> 
<td><input type="checkbox" name="field[]" value="Water">Water </td> 
<td><input type="checkbox" name="size[]" value="Small">Small </td> 
</tr> 
<tr> 
<td><input type="checkbox" name="field[]" value="Energy">Energy </td> 
<td><input type="checkbox" name="size[]" value="Medium">Medium </td> 
</tr> 
<tr> 
<td><input type="checkbox" name="field[]" value="Wind">Wind </td> 
<td><input type="checkbox" name="size[]" value="Big">Big </td> 
</tr> 
<tr> 
<td><input type="checkbox" name="field[]" value="Earth">Earth </td> 

그리고 여기의에게 PHP 확인란 검색을 필터링하기 위해 몇 가지 체크 박스를 만들어 :

if(isset($_REQUEST['submit'])) 
{    

    //if(count($_POST['field']) > 0) 
    if (isset($_POST['field'])) 
    {  
     $field = implode(',',$_POST['field']); 
     $str = "AND company_field LIKE '$field'"; 
    } 
    else 
    { 
     $str = ""; 
    } 

    //if(count($_POST['size']) > 0) 
    if (isset($_POST['size'])) 
    {   
     $size = implode(',',$_POST['size']); 
     $str1 = "AND company_size LIKE '$size'"; 
    } 
    else 
    { 
     $str1 = ""; 
    } 
    $run = "SELECT * FROM company WHERE 1=1 ".$str.$str1; 
    $reslt = mysql_query($run); 

체크 박스 잘 작동 내가 하나를 선택하거나 중 하나를 선택하지 않은 경우 각 열. 그러나 1 열에서 2 개 이상을 선택하면 쿼리가 다음과 같이 표시됩니다. SELECT * FROM company_info WHERE 1=1 AND company_size LIKE 'M, B'이 쿼리가 잘못되었음을 알고 있습니다. WHERE 1=1 AND company_size LIKE 'M' OR company_size LIKE 'B'이어야합니다. 그래서 해결책이나 코드를 찾고 있습니다. 도움을 주시면 감사하겠습니다. 감사!

답변

1

당신은 사용할 수

$ 필드 = 내파 ('', $ _ POST [ '필드']); $ str = "AND company_field IN (". $ field. ")";

+0

내가 그것을 시도하려고하지만 쿼리는 다음과 같이이다 : 은 "SELECT * 1 = 1 AND가 LIKE ('M, B')를 company_size 곳에서 company_info"그것은하지 않습니다 "* 회사의 정보가 어디서 왔는가에 따라 달라진다. 왜냐하면 각 요소가 따옴표로 덮여 있기 때문이다. – SlashBunny

+0

$ field =" 'company_info where 1 = 1 AND company_size LIKE ('M ', B' ".implode (" ',' ', $ _POST ['field ']). "'" $ str = "AND company_field IN (". $ field. ")"; – AbhishekTaneja

+0

은 매력처럼 작동합니다. 고마워요! – SlashBunny

0

간단하게이

<?php 

if(isset($_REQUEST['submit'])) 
{    
    $str = NULL; 
    //if(count($_POST['field']) > 0) 
    if (isset($_POST['field'])) 
    {  
     $field = implode(',',$_POST['field']); 
     $str =" AND company_field IN ($field) "; 
    } 

    //if(count($_POST['size']) > 0) 
    if (isset($_POST['size'])) 
    {   
     $size = implode(',',$_POST['size']); 
     $str .= " AND company_size IN ($size) "; 
    } 

    $run = mysql_query("SELECT * FROM company WHERE ".$str); 



?> 
+0

고마워요.하지만 제가 시험해 보았을 때, 마지막 답변에 대한 위의 의견과 같은 문제가있었습니다. – SlashBunny

+0

1 = 1을 제거하고 지금 시도하십시오 –

+0

도움을 주셔서 감사합니다, 위의 문제가 해결되었습니다. 감사합니다. – SlashBunny