Сортировка товаров

Статус
В этой теме нельзя размещать новые ответы.

rasandrey

Участник
Регистрация
2 Апр 2009
Сообщения
214
Реакции
6
Подскажите, плиз, что не правильно делаю:
Есть таблица в которой много полей и поле "slova". Есть адресная строка "http://zu/index.php?order=qwd"

Обработка в php:
PHP:
	if (isset($_GET['order']) && trim($_GET['order']) != '') {
	//делаем запрос и выбираем все товары
	$q = mysql_query("SELECT * FROM ".PRODUCTS_TABLE." ORDER by productID DESC limit ".($count*$page).", {$count}");

	
	//обрабатываем sql запрос
	while ($row = mysql_fetch_array($q)){
		$b2 = array() ;
		//уже найден товар или еще нет
		$m = 1;
		//разбиваем значение поля slova с вида "слово1,слово2,слово3" на вид Array ( [0] => слово1 [1] =>слово2 [2] => слово3 )
		$b2 = preg_split('~\s*,\s*~', $row['slova']);
		//перебираем полученый массив со словами
		foreach($b2 as $k) {
			//проверяем совпадает одно из слов записи с поля slova у данного товара, если совпадает, устанавливаем $m в 2 и уходим на 2-ой това
			if ($k == $_GET['order'] && $m == 1 ) {
				$m = 2;
				$b[] = $d;
				$id[] = $row['productID'];
				$name[] = $row['name'];
				$desc[] = $row['description'];
				$price[] = $row['Price'];
				$image[] = $row['picture'];
				$user_id_add[] = $row['user_id'];
				$user_name_add[] = $row['user_name'];
				$d ++;
				}
	}
	}
	}

Смысл такой: в таблице "pr" есть поле "slova", которое содержит строку вида "слово1,слово2,слово3" . Нужно перебирать каждую запись и сравнивать значение в запросе $_GET['order'] если одно из слов(черзе запятую) совпадает со словом в GET, значит поля записи уходит в массив

Но почему-то получается неразбериха, то товары выводятся, то не выводятся. С русскими символами вообще не работает. Поправьте, плиз
 
вообще проще было бы добавить в запрос

WHERE slova =".$_GET['order']

( есно подумав про SQL иньекцию )

на счет русских -- делай urldecode($_GET['order'])
 
вообще проще было бы добавить в запрос
WHERE slova =".$_GET['order']
( есно подумав про SQL иньекцию )

а разве он найдет в поле со строкой "слово1,слово2,слово3" строку "слово2" ?
 
почитай про LIKE

SELECT * W?HERE slova LIKE ...
 
Статус
В этой теме нельзя размещать новые ответы.
Назад
Сверху