2011-12-14 3 views
0

Iは、以下のチェックボックスがありますPHPでチェックボックスを使用してコンテンツをフィルタリングする最も良い方法は何ですか?

[] Jackets 
[] Jeans 
[] T-Shirts 
[] Shoes 
[submit button] 

ユーザ、例えば、小切手[X]ジャケットと、[X] Tシャツやクリックを[送信ボタン]、フォームが送信されます要求を自身に送信する。次に、選択されたチェックボックスに基づいて動的クエリが生成され、選択されたカテゴリのみがクエリされ、ページに表示されます。

問題は、投稿要求後に動的にクエリを作成しようとしていることです。

+0

あなたの努力は重いアヤックスに関係すると思います。 –

+0

POSTを使用してそれを作成する方法はありませんか?そのように情報を抽出する方法はありますか? – diesel

+0

あなたはPOSTを使うことができますが、なぜポストを使うのですか?誰かがページをブックマークしたい場合はどうなりますか? –

答えて

1
// options 
$options = array(
    'Jackets' => 'jackets', 
    'Jeans' => 'jeans', 
    'T-Shirts' => 't_shirts', 
    'Shoes' => 'shoes' 
); 

// create sql where 
$sql_where = array('1'); 
foreach ($options as $option) 
{ 
    if (isset($_POST[$option])) $sql_where[] = "field = '$option'"; 
} 

// query data 
mysql_query("SELECT * FROM table WHERE " . implode(' AND ', $sql_where)); 

// create html 
$sql_where = array('1'); 
foreach ($options as $name => $option) 
{ 
    ?> 
     <input type="checkbox" name="<?= $option?>" id="<?= $option?>" value="1" /> 
     <label for="<?= $option?>"><?= $name?></label> 
    <? 
} 
+0

うわー、これは私が必要なものかもしれません!ありがとう! – diesel

+0

配列から入力を生成することもできます。 (更新しました) – PiTheNumber

1

使用 "HTMLアレイ" ..

<input type="checkbox" name="item[]" value="1" /> 
... 
<input type="checkbox" name="item[]" value="4" /> 

PHPよりも、それをフェッチ:

if ($_POST["item"][1]) 
... 
if ($_POST["item"][6]) 

チェックこの:http://davidwalsh.name/checkbox-form-input-arrays

+0

ありがとう、これを確認してください。 – diesel

0

一つの方法を、それはだかどうかわかりません最も良いのは、クエリの一部をパートごとに作成することです。

テーブルのすべてmembresあなたは(SQLを使用)を選択したいと想像:

$sql = "SELECT * FROM `clothes`" 

は、その後、あなたの要求の制限を追加します。

$options = array(
    'jackets', 
    'jeans', 
    't_shirts', 
    'shoes' 
); 

$firstClause = true; 
foreach ($options as $option) 
{ 
    if (isset($_POST[$option])) 
    { 
     if ($firstClause) 
     { 
      $sql .= " WHERE "; 
      $firstClause = false; 
     } 
     else 
     { 
      $sql .= " OR "; 
     } 
     $sql .= "field = '$option'"; 
    } 
} 
0

どうかに拡大し、次の

についてグラファは言った:

$checked = $_POST['item']; 
$query_where = ""; 
$N = count($checked); 
for($i=0; $i < $N; $i++) 
{ 
    if($i=0) 
    $query_where = $query_where . "WHERE field = '". $checked[$i] . "'"; 
    else 
    $query_where = $query_where . "AND field = '". $checked[$i] . "'"; 
} 

これを残りの選択クエリに追加してください。値が設定されているかどうかを忘れずにチェックしてください。

関連する問題