$categories = $this->model_catalog_category->getCategories(0); foreach ($categories AS $category) { $product = $this->db->query("SELECT product_id FROM " . DB_PREFIX . "product_to_category WHERE category_id = '" . (int)$category['category_id'] . "'"); if ($product->num_rows == 0) { $this->model_catalog_category->deleteCategory($category['category_id']); } }
Но его проблем в том, что он удаляет также родительские категории, т.е. если в подкатегории есть товар, а в родительской нету, то сносит и родительскую.
Помогите пожалуйста оптимизировать запрос, извращался по разному, знания не позволяют добиться нужного...
MikeTheRaven, большое спасибо! Этот вариант сразу рассматривал, но т.к. ко следующим статьям это правило применять не нужно, они сразу будут нормально заполняться, то такая необходимость отпала. Поэтому и остановился на БД :(
Купил этот https://shop.opencart-russia.ru/udalenie-pustyih-proizvoditeley-kategoriy а он отказывается работать как надо. Понял что надо другим путём, он работает как запрос:
$categories = $this->model_catalog_category->getCategories(0);
foreach ($categories AS $category) {
$product = $this->db->query("SELECT product_id FROM " . DB_PREFIX . "product_to_category WHERE category_id = '" . (int)$category['category_id'] . "'");
if ($product->num_rows == 0) {
$this->model_catalog_category->deleteCategory($category['category_id']);
}
}
Но его проблем в том, что он удаляет также родительские категории, т.е. если в подкатегории есть товар, а в родительской нету, то сносит и родительскую.
Помогите пожалуйста оптимизировать запрос, извращался по разному, знания не позволяют добиться нужного...
Или может кто подскажет как удалить категории в которых нет товаров ?
MikeTheRaven, большое спасибо! Этот вариант сразу рассматривал, но т.к. ко следующим статьям это правило применять не нужно, они сразу будут нормально заполняться, то такая необходимость отпала. Поэтому и остановился на БД :(
_SP_, да дело в том, что в DLE meta тэги выводятся из БД. Скрипт уже отдает все готовые данные. В шаблоне можно только вывести все тэги сразу :(
Оптимизайка, пробую вот так вот:
if ($matches != NULL) {
$xml->content[$i]['address'] = implode(', ', array_unique(explode(', ', $matches[1]))), "\n";
}
и пишет что кома не закрыта: Parse error: syntax error, unexpected ',' in .../engine/inc/rss.php on line 248
LEOnidUKG, Ура !!! Получилось ! Спасибо огромное Вам, LEOnidUKG, !
Вот так намудрил:
preg_match("/(\+7.*?)<strong>/im", $content, $matches);
echo $matches[1]; exit;
эх......
вот такая вот у меня схема теперь:
$matches=array();
preg_match('@\+7(.*?)<br', $content, $matches);
echo $matches[1]; exit;
Только выводит пустоту... уже как только не пробовал...
LEOnidUKG, сделал первым делом это, ничего не поменялось, более того, почему-то в другие строки вписывает значение адреса... бред какой-то
с preg_match выводит данные с этой строки:
if ($matches != NULL) {
$xml->content[$i]['address'] = $matches[1];
}
и другие строки тоже почему-то затрагиваются и тоже в разнобой начинают эту инфу отдавать
вы перед:
$xml->content[$i]['telefon'] = $matches[1];
напишите:
echo $matches[1]; exit;
посмотрите есть ли там данные.
Пишет Array
Пробую так:
if ($matches != NULL) {
$xml->content[$i]['telefon'] = $matches[1];
}
Выводит данные из строки выше (этой):
if ($matches != NULL) {
$xml->content[$i]['address'] = $matches[1];
}
Если телефон 1, тогда
вместо:
preg_match_all
пишем:
preg_match
и оно запихнётся тогда
большое спасибо за ответы ! Но в том то и дело, что результат мне нужно запихнуть в поле content[$i]['telefon']
---------- Добавлено 02.11.2018 в 21:23 ----------
Пробую вот так:
if ($matches != NULL) {
$xml->content[$i]['telefon'] = $matches[1];
}
Но результат выходит: Array
P.s. телефоны вида +7 999 879-35-68