0

フォームを使用して検索する codeIgniter 上に構築されたプロパティ サイトがあります。2つの単語で検索しない限り、すべてがうまく機能しており、キーワードがそこにあるにもかかわらず結果が表示されません. どこが間違っているのかわかりません。URLは問題ないように見え、そこにキーワードを入れます

例えば:

    /family%20home/

しかし、結果は返されません。家族を検索すると、結果は正常に返されます。

誰かがこれを手伝ってくれることを願っています! :-)

コントローラーは次のようになります。

function index($page=0,$keyword='0',$min='0',$max='0',$bed='0',$rentbuy='0',$ord_by='DESC')
{ 
  $condition=" where 1 ";
  $keyword=empty($keyword)?(!empty($_POST["keyword"])?trim($_POST["keyword"]):'0'):$keyword;
  if(!empty($keyword)){
    $data['keyword']=$keyword;
    $condition.=" and (town like '%$keyword%' or street like '%$keyword%' or postcode like '%$keyword%' or main_advert like '%$keyword%' or main_advert2 like '%$keyword%' or main_advert3 like '%$keyword%' or main_advert4 like '%$keyword%')";
  }
  $bed=empty($bed)?(!empty($_POST["bed"])?$_POST["bed"]:'0'):$bed;
  if($bed>0){
    $condition.=" and bedrooms>=$bed";
  }    
  $min=empty($min)?(!empty($_POST["min"])?$_POST["min"]:0):$min;
  if($min>0){
    $condition.=" and price>=$min";
  }       
  $max=empty($max)?(!empty($_POST["max"])?$_POST["max"]:0):$max;
  if($max>0){
    $condition.=" and price<=$max";
  }       
 $orderby=' order by price DESC';
 // $ord_by=(!empty($_POST["ord_by"]))?$_POST["ord_by"]:$ord_by;      
  $rentbuy=empty($rentbuy)?(!empty($_POST["rentbuy"])?$_POST["rentbuy"]:'0'):$rentbuy;
  if(!empty($rentbuy)){
  $rarry=array('','Residential Sales','Residential Lettings');
    $condition.=" and department='".$rarry[$rentbuy]."'";
  }
  //echo $condition;
  $perpage=4;
  $start=($page);

  $limit=" LIMIT ".$start.",".$perpage."";

    $data["count"] = $this->property->get_count($condition);
    $data["list"] = $this->property->get_list($condition.$orderby.$limit);
    $config['urlpara']='/'.$keyword."/".$min."/".$max."/".$bed."/".$rentbuy."/".$ord_by."/";
    $config['total_rows']=$data["count"] ;
    $config['uri_segment']=3;
    $config['per_page']=$perpage;
    $config['base_url']=base_url().'/properties/index/';

    $this->load->library('pagination');
    $this->pagination->initialize($config);

    $data['links']=$this->pagination->create_links();
    if($_POST){
        redirect(base_url().'properties/index/0'.$config['urlpara']);       
    }
    $data['page']=$page;
    $data['bed']=$bed;
    $data['min']=$min;
    $data['max']=$max;
    $data['rentbuy']=$rentbuy;
    $data['ord_by']=$ord_by;       
    $this->_common($data);
    $this->load->view('property_results',$data);
}
4

3 に答える 3

1

クエリ文字列またはキーワードが次のようなコントローラーに送信されると、codeigniter で

$query="World Hospital";
echo site_url('Controller/Controller_Function/'.$query);

Codeigniter は $query を URL と見なし、エンコードして World%20Hospital にします。もちろん、mysql はこの文字列では結果を返しません。必要なのは、コントローラーで変数を実際に使用する前に、上記の回答で述べた JCO として文字列をデコードすることです。としてそれを行います;

Public function something()
{
   $my_query=urldecode($this->url->segment(3));
   // Now you can use $my_query in your query.
}

これがうまくいくことを願っています。

于 2013-03-19T13:43:10.610 に答える
0

キーワードが「Family%20home」の場合、urldecode()を使用してurlエンコードを削除しましたか?

于 2013-03-19T13:22:27.757 に答える
0

あなたが実際に何をする必要があるのか​​ 理解できません。複数のキーワードを使用して検索を実行する場合は、キーワード変数を配列に分解できます

$keywords=explode(' ',$keywords);

次に、ループを作成して検索クエリを作成します

于 2013-03-19T13:33:30.930 に答える