2012-06-20 3 views
0

У меня была другая форма для загрузки информации о 1 продукте, который имеет несколько значений (10), но предположим, что мы выбираем New Arrival, Black, White и загружаем в базу данных. Поэтому прямо сейчас моя база данных будет иметь имя поля как «категория», которое имеет значения New Arrival, Black, White.mysql select query 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']; 

} 

Чтобы повторить мой вопрос, как получить результат строк, который содержит (нужное значение) в поле этой категории?

Следующий вопрос: значение категории хранится как «Новое прибытие» только в базе данных, как мне получить результат возврата, если я должен был ввести «прибытие» только вместо полного имени? В настоящее время он также не будет возвращать результат, если я буду вводить только «прибытие».

Надеюсь, вы, ребята, понимаете, что я пытаюсь сказать. Спасибо заранее, ребята.

+1

Только одно ключевое слово для поиска в категории или может быть более 1 ключевого слова поиска? – sel

+1

Предлагайте использовать как. Например, 'code'where Категория LIKE '% new arrival%'' code' – sel

+0

Привет, он работает! Благодаря!! Даже работает, если я просто поставлю «прибытие», но он не будет работать снова, если я ставлю% прибытие белого черного%. Btw, это может быть более 1 ключевое слово поиска. – Dr3am3rz

ответ

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. 

Спасибо.

+0

Я вижу, спасибо за объяснение. Я пытаюсь решить строку запроса, поскольку у вас было еще 1 "в строке, и все равно не могу получить ее правильно. – Dr3am3rz

+0

Shd be' implode ('OR', $ keywordBits)); ' – sel

+0

Привет, Sel, я наконец получил его работу На самом деле .implode ('OR', $ keywordBits)); В любом случае, спасибо за вашу большую помощь !! =) – Dr3am3rz

1

Сель говорит:

$select = mysql_query("select image1, image2, image3, image4 from products_list WHERE category like '%new arrival%' ORDER BY id ASC"); 
Смежные вопросы