2012-11-23 38 views
0

這是從我的表單字段來:匹配我的表單字符串與數據庫中的條件在PHP?

$subject="physics with maths"; 

這是在我的數據庫:

$keywordsindatabse="(physics && electronics) || (electronics & communication) || (electronics and communication)"; 

在提交表單我想與$subject符合條件$keywordsindatabse。 任何想法?

任何幫助將不勝感激。

代碼:

<form id="myform" name="myform"> 
<select name="sselect" id="itmn"> 

         <option value="">Select</option> 

      <option value='1'>1</option> 
         <option value='2'>2</option> 
         <option value='3'>3</option> 
         <option value='4'>4</option> 
         <option value='5'>5</option> 
         <option value='6'>6</option> 
         <option value='7'>7</option>    
      </select> 
<input type='text' name='gmajorsub' id=""" value="" onblur="chkdegree(document.getElementById('itmn').value,this.value);"> 
</form> 

<script> 
function chkdegree(item_id,keyword) 
{ 


$.ajax({ 
      type: "GET", 
      url: "degree_match.php", 
      dataType: 'html', 
     data: {item_id : item_id,keyword : keyword}, 
      success: function(data){ 
       if(data=="0") 
     { 
     alert("Dear Applicant, You are not allowed to register.You Subject not matching our essential qualification requirements."); 
        document.getElementById("gmajorsub").value=""; 
        document.getElementById("gmajorsub").focus(); 
        return false; 
     } 
      } 
    }); 
} 

</script> 

degree_match.php:

<?php 
include("../../lib/dbc/dbConnection.php"); 
require('../../lib/dbc/commonFunc.php'); 
require('../../lib/dbc/dbHandler.class.php'); 
$dbObject = new dbHandler(); 
$dbObject->connect(); 
$query="select * from advt_110_post_details where recNo='".$_REQUEST['item_id']."'"; 
$result=mysql_query($query); 
$num=mysql_fetch_array($result); 
$keyword=strtolower($_REQUEST['keyword']); 

$degree=$num['subject_keywords']; 

$degree1=explode("|",$degree); 





$max = array(null, 0); // category, occurences 
/*foreach($degree1 as $k => $v) { 
    $replaced = str_replace($v, '##########', $keyword); 
    preg_match_all('/##########/i', $replaced, $matches); 
    if(count($matches[0]) > $max[1]) { 
    $max[0] = $k; 
    $max[1] = count($matches[0]); 
    } 
} 


if($max[1]>=count($degree1)) 
{ 
    echo"1"; 
} 
else{ 
    echo"0"; 
} 
*/ 
/*foreach($degree1 as $k => $v) { 

if (strstr($membership, "member")) 
{ 

} 

} 
*/ 

?> 
+0

你能微塵具體一點嗎?你想要什麼,你想要什麼(實際的代碼會有幫助) –

+0

我已經提供了我的代碼.. –

回答

-1

據我從您的文章,下面的代碼可能有助於瞭解..

$subject="physics with maths"; 
$keywordsindatabse="(physics && electronics) || 
(electronics & communication) || 
(electronics and communication)"; 
$pieces = explode(" ", $subject); 
$piecesDB = explode("||", $keywordsindatabse); 
$subsDBv=array(); 
foreach($piecesDB as $key=>$subsDB){ 
    $subsDBv[$key] = str_replace(array("(",")"),"",explode(" ", $subsDB)); 
    } 
foreach($subsDBv as $subslvd){ 
foreach($subslvd as $subslv){ 
    $ao = next($subslvd); 
foreach($pieces as $subs){ 
if((strpos($subslv,$subs) !== false) AND (strpos($ao,$subs) !== false)){ 
    echo "Match found..<br />"; 
    } 
    else{  
     echo "Sorry, no match found..<br />"; 
     } 
} 
} 
} 
+0

$主題是不固定的,它將由用戶填充...我們還需要根據提供的條件檢查它as($ subject)&&'electronics'(($ subject))||中的'physics') ($ subject)中的'electronics'&&($ subject)中的'communication')等。 –

+0

我已更新了我的答案。 –

0

注意: '代碼是SQL注入的主題。查看使用PDO準備的語句或mySQLi準備的語句。至少,將字符串輸入包裝到mysql_real_escape_string中的hte數據庫中。


看着你的代碼,你從數據庫中獲取項目,然後過濾。我假設mySQL。

你可能會更好地做到這一點與數據庫結束。查看「full text search」。這隻適用於MyISAM表格,所以如果需要的話更改。然後,在'subject_keywords'的表格中添加一個FullText索引,並且需要使用全文設置布爾seaerch。有關boolean search are here的詳細信息。

(如果做不到這一點,仙人的回答上面已經介紹了你所需要的循環 - 這是從您嘗試丟失)

相關問題