Виталий Бохин
953 повідомлення
#10 років тому
Приветствую. подкиньте идейку как грамотно разделать строку. имеется база с тысячами товаров, в распоряжении имеются только поля тайтл и декрипшн, специальных полей нет, все параметры свалены в дескрипш (Габаритные размеры (В*Ш*Г): 15*3*3 см, Цвет: черный/серый, Вид гарантии: по чеку, Вес: 0.045 кг, Максимальная нагрузка: 0.325 кг). возникла задача сделать расширенный фильтр. нужно разобрать строку таким образом - ищем в строке ключевое слово "цвет" если находим: создаем переменную или ячейку массива с названием цвет и присваиваем то, что идет за словом цвет до запятой "черный/серый", потом ищем "вес" и так далее
$param = "черный/серый";
$param = 0.045;

решаю кучей функций, регулярками через танец с бубном, может кто подскажет элегантное быстрое решение в несколько строчек
Василий С.
402 повідомлення
#10 років тому
$param = array();
$descr_arr = explode(',', $description);
foreach($descr_arr as $val) {
    $param_arr = explode(':', $val);
    $param] = param_arr;
}
Сергей Глушко
834 повідомлення
#10 років тому
lufter, неплохо было бы увидеть полную строку данных=)
А вообще я бы сделал скриптик и разбил строку данных для записи в отдельные поля в базу, по которых будете сортировать.
Почему? да потому что фильтр ликвидный проще ( правильней и быстрей) сделать на этапе выборки данных из базы, и хотя в точки зрения НЕДОкодинга(имхо) можно регуляркой в запросе делать выборку, и искать то что надо - но это же долго, с точки зрения скорости работы.
А вариант хранения характеристик товара в отдельных ячейках даст вам возможность автоматически определять набор характеристик к каждой группе товаров, подсчитывать их количество по каждой характеристике (да это все и регуляркой в запросе можно, но скорость работы печалька будет при норм количестве товаров) - и все это быстро и правильно(имхо).
Артем Л.
11416 повідомлень
#10 років тому
Поддерживаю micros, именно так и нужно сделать. Проапдейтить базу данных, а уже по ней делать фильтр.
Иначе есть большая вероятность того, что фильтр будет валить сайт из-за нехватки памяти.
Виталий Бохин
953 повідомлення
#10 років тому
Я и хочу на этапе залива в базу разделывать дискрипшн и заносить в отдельные поля. Строки данных разные бывают по формату и длине. В примере это полная строка, есть где только цвет, есть с кучей параметров. tarakan_, формат тоже разный, бывает раздел пробелом точкой с запятой, точкой, посте ключ слова тоже разные знаки, я бы сам так сделал как вы предложили, если б все было так просто...
Артем Л.
11416 повідомлень
#10 років тому
Тогда тут ничего уникального особо не предложить, либо руками, либо изобретать ИИ