2010-12-30 10 views
0

私の検索フォームの例$ _GET。MySQLの検索で動的選択列を作成する方法

  • $_GET['s'] =キーワード
  • $_GET['c'] =カテゴリ
  • $_GET['r'] =地域
  • $_GET['t'] =タイプ

例if文:

if(isset($s)) { 
    $s = "title LIKE '%{$keyword}%"; 
} 

if(isset($c)) { 
    $c = " AND category='{$category}'"; 
} 

if(isset($r)) { 
    $r = " AND region='{$region}'"; 
} 

if(isset($t)) { 
    $t = " AND type='{$type}'"; 
} 

は、次にMySQLのクエリ:

$select = "SELECT * FROM ads WHERE $s.$c.$r.t AND status='1'"; 

質問:

$selectを動的にすることができようにする方法は?現在の方法は、すべての入力が空でない場合にのみ機能します。それ以外は構文エラーです。 :P

は、複数の変数を作成しないでください

答えて

4

、あなたはこのような何かを行うことができます..私に教えてください:

$s = ''; 

if(isset($s)) { 
    $s .= " AND title='%$keyword%'"; 
} 

if(isset($c)) { 
    $s .= " AND category='{$category}'"; 
} 

if(isset($r)) { 
    $s .= " AND region='{$region}'"; 
} 

if(isset($t)) { 
    $s .= " AND type='{$type}'"; 
} 

$select = "SELECT * FROM ads WHERE status='1' $s"; 
+0

はそんなにSarfraz – haha

+0

@hahaをありがとう:あなたは歓迎:) – Sarfraz

1

は今あるとして、それはすべての入力がある場合でも動作しますあなたは確かにあります空ではない?

次のようにクエリを変更し、各基準の末尾にスペースを追加

if(isset($s)) 
{ 
    $s = " AND title LIKE '%$keyword%' "; //Changed the = to LIKE 
} 
if(isset($c)) 
{ 
    $c = " AND category='{$category}' "; 
} 
if(isset($r)) 
{ 
    $r = " AND region='{$region}' "; 
} 
if(isset($t)) 
{ 
    $t = " AND type='{$type}' "; 
} 

$select = "SELECT * FROM ads WHERE status='1' $s.$c.$r.t"; 
-1

あなたは$ S =「1 = 1」にinialization変更することができます。 問題を修正してください。

これが役に立ちます。

3

これは何ですか?ここで

$conditions = array("status='1'"); 
if(isset($s)) { 
    $conditions []= "title LIKE '%{$keyword}%'"; 
} 
if(isset($c)) { 
    $conditions []= "category='{$category}'"; 
} 
if(isset($r)) { 
    $conditions []= "region='{$region}'"; 
} 
if(isset($t)) { 
    $conditions []= "type='{$type}'"; 
} 
$select = "SELECT * FROM ads WHERE " . implode(" AND ", $conditions); 
+0

あるすべての空 – haha

+0

私の悪い場合は私にエラーを与える:私は私のメッセージを編集しました。 – Habax

1

あなたが行く:

$sArr = array("status='1'"); 

if(isset($s)) { 
    $sArr[] = "title LIKE '%{$keyword}%"; 
} 

if(isset($c)) { 
    $sArr[] = "category='{$category}'"; 
} 

if(isset($r)) { 
    $sArr[] = "region='{$region}'"; 
} 

if(isset($t)) { 
    $sArr[] = "type='{$type}'"; 
} 

$where = "WHERE " . join(' AND ', $sArr); 
$select = "SELECT * FROM ads " . $where; 
関連する問題