0

複数の値(10)を持つ1つの製品の詳細をアップロードする別のフォームがありましたが、新着、黒、白を選択してデータベースにアップロードするとします。したがって、現在、私のデータベースのフィールド名は「category」で、値はNew Arrival、Black、Whiteになります。

今度は検索機能を実行したいのですが、実行しようとすると結果が表示されません。だから私は2つのレコードを作りました:

フィールドカテゴリと値が「新着」の1番目のレコードフィールドカテゴリと値が「新着、黒、白」の2番目のレコード

コードを再度実行しようとすると、最初のレコードの結果が返され、同じレコードを数行に複製しようとしましたが、カテゴリフィールドの値が1つしかない場合にのみ結果を返すことができます。

以下は私のコードのほんの一部です:

カテゴリフィールドへのレコードフォームの入力は次のとおりです。

add_new.html

<select name="category[]" size="10" multiple="multiple">
<options>New Arrival</options>
<options>Black</options>
<options>White</options>
</select>

add_process.php

$category = implode(", ", $_POST['category']);
$strSQL = "INSERT INTO products_list (category) VALUES ('$category')";

search_form.html

<input type="text" name="search_text" />
<input type="submit" name="submit" />

search_process.php

$category = mysql_real_escape_string($_POST['product_category']);
$select = mysql_query("select image1, image2, image3, image4 from products_list WHERE category IN ('new arrival') ORDER BY id ASC");

while($row=mysql_fetch_array($select)) {

    echo $row['image1'];
    echo $row['image2'];
    echo $row['image3'];
    echo $row['image4'];

}

私の質問を繰り返すために、そのカテゴリフィールドに(望ましい値)を含む行の結果を取得するにはどうすればよいですか?

次の質問は、カテゴリ値がデータベースにのみ「新着」として保存されていることです。フルネームではなく「到着」とだけ入力した場合、どのようにして戻り結果を取得できますか?現在、「arrival」のみを入力した場合、結果も返されません。

私が言おうとしていることを皆さんが理解してくれることを願っています。よろしくお願いします。

4

2 に答える 2

1

参照しやすいように、ここに説明を入れます。

$catsearch = $_POST["category"]; 
$keywords = explode(' ', $catsearch);  //if keywords entered is "white black new", will convert to array of "white","black","new". The delimiter here is the space.
$keywordsBits = array(); 
foreach ($keywords as $keyword) { 
          $keyword = trim($keyword); 
          if (!empty($keyword)) { 
                $keywordsBits[] = "category LIKE '%$keyword%'"; 
          } 
} 

$result = mysql_query("SELECT * FROM products_list WHERE ".implode(' OR ', $keywordBits));

これにより、次のようなクエリが生成されます

SELECT * FROM products_list WHERE category LIKE '%white%' OR category LIKE '%black%' OR category LIKE '%new%'

キーワードを「、」で区切る場合は、次のように使用できます。

$keywords = explode(',', $catsearch);  //if keywords entered is "white,black,new arrival", will convert to array of "white","black","new arrival". The delimiter here is the comma.

ありがとう。

于 2012-06-20T07:53:37.547 に答える
1

セルは言う:

$select = mysql_query("select image1, image2, image3, image4 from products_list WHERE category like '%new arrival%' ORDER BY id ASC");
于 2012-06-20T06:58:32.573 に答える