2011-02-26 3 views
1
                 <?php 
//get data 
session_start(); 

$button = $_GET['submit']; 
$search = $_GET['search']; 
if (!$button) 
    echo "YOU DIDNT SUBMIT A KEYWORD"; 
else 
{ 
    if (strlen($search)<=2) 
     echo "SEARCH TERM TOO SHORT"; 
    else 
    { 
     echo"You searched for <b>$search</b><hr size='1'>"; 


    //connect to database 
    include("connect.php"); 



    // a bit of filtering 
$search = strtoupper($search); 
$search= strip_tags($search); 
$search = trim ($search); 

$search_exploded = explode(" ",$search); 

foreach ($search_exploded as $search_each) 

     { 
      //construct query 
      $x++; 
      if ($x==1) 
      $construct .= "CONCAT(role_category1, role_category2, role_category3, role_category4) LIKE '%$search_each%'"; 
      else 
       $construct .= " OR CONCAT(role_category1, role_category2, role_category3, role_category4) LIKE '%$search_each%'"; 

     } 
    //echo out construct 
$construct = "SELECT * FROM jobdescription WHERE $construct"; 
$run = mysql_query($construct); 

$foundnum = mysql_num_rows($run); 

if ($foundnum==0) 
    echo "No results found."; 
else 
    { 
    echo "$foundnum results found!<p>"; 

    while ($runrows = mysql_fetch_assoc($run)) 
     { 

     $jobdescriptionid = $runrows['jobdescriptionid']; 

     $companyid = $runrows['companyid']; 
     $companyid = $runrows['companyid']; 
     $role_1= $runrows['role_1']; 
     $role_location_1 = $runrows['role_location_1']; 
     $role_category_1 = $runrows['role_category_1']; 
     $role_term_1 = $runrows['role_term_1']; 
     $role_description_1 = $runrows['role_description_1']; 
      $role_2= $runrows['role_2']; 
     $role_location_2 = $runrows['role_location_2']; 
     $role_category_2 = $runrows['role_category_2']; 
     $role_term_2 = $runrows['role_term_2']; 
     $role_description_2 = $runrows['role_description_2']; 

     echo " 
     <b>$companyid 
      <b>$jobseekerfirstname $jobseekerlastname </b><br> 
     $role_1<br> 
     $role_location_1<br> 
     $role_category_1<br> 

      $role_2<br> 
     $role_location_2<br> 
     $role_category_2<br>"; 




} 
     }}} 

?> PHP 스크립트를 사용하지만 검색중인 항목을 식별 할 수 있습니다. 같은 테이블의 필드하지만 서로 다른 열을 검색하려고 제안PHP를 사용하여 검색하십시오. 동일한 표의 키와 여러 열을 비교하는 것

+1

글쎄, 네 질문은 뭐니? –

답변

1
$construct .= "'role_category_1' || 'role_category_2' || 'role_category_3' || 'role_category_4' OR preferedlocation LIKE '%$search_each%'"; 
MySQL은

는 연결은 CONCAT() 함수를 통해 이루어집니다 (이 열 헤드 ..... role_category1, role_category2 있습니다) - 뿐만 아니라

0 || 0 || 0 || 0 LIKE '%blahblah%'; 
0 || (0 LIKE '%blahblah%') 
0 

된다

string || string || string || string LIKE '%blahblahblah%' 

당신이 따옴표를 넣어 이후 : 당신의 구조로 처리되도록 당신은 문자열에 비트를 OR 작업을하고있는 당신은 당신이 원하는

role1_category1role_category2role_category3role_category4 

과 같은 고정 된 문자열에 대한 귀하의 입력 텍스트 문자열과 일치하려고 효과가 있었다 있도록 필드 이름 주위들, MySQL은,하지 필드 이름으로, 문자열로 취급하므로

$construct .= "CONCAT(role_category1, role_category2, role_category3, role_category4) LIKE '%blahblah%'"; 

대신. 필드 이름을 따옴표로 묶지 말아야합니다.

+0

포스트 그레스와 다른 데이터베이스 사용 || 연결을 위해, 그것은 미친 오류가 아닙니다 :-) –

+0

Yah. 여러 DB 공급 업체가 자체 후배에서 각자의 지장을 얻을 수없고 보편적으로 지원되는 표준에 동의하지 않는 것은 너무나 나쁩니다. –

+0

PHP 스크립트를 사용하고 있지만 아직 무엇을 검색하고 있는지 식별하고 있습니다. 동일한 테이블의 필드를 검색하려고하지만 다른 열 (이 열의 머리글은 role_category1, role_category2 .....입니다) 제안 사항 – ope

관련 문제