Василич#

Василич#
Рейтинг
111
Регистрация
10.03.2009

Купил этот https://shop.opencart-russia.ru/udalenie-pustyih-proizvoditeley-kategoriy а он отказывается работать как надо. Понял что надо другим путём, он работает как запрос:

$this->load->model('catalog/category');

$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 тэги выводятся из БД. Скрипт уже отдает все готовые данные. В шаблоне можно только вывести все тэги сразу :(

Оптимизайка, пробую вот так вот:

preg_match("/(Московская область.*?|Москва.*?)<\/p>/im", $content, $matches);

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, !

Вот так намудрил:

$matches=array();
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 выводит данные с этой строки:

preg_match("/(Московская область.*?|Москва.*?)<\/p>/im", $content, $matches);
if ($matches != NULL) {
$xml->content[$i]['address'] = $matches[1];
}

и другие строки тоже почему-то затрагиваются и тоже в разнобой начинают эту инфу отдавать

LEOnidUKG:
вы перед:

$xml->content[$i]['telefon'] = $matches[1];

напишите:
echo $matches[1]; exit;
посмотрите есть ли там данные.

Пишет Array

Пробую так:

preg_match_all('@\+7(.*?)<br \/>', $content, $matches);
if ($matches != NULL) {
$xml->content[$i]['telefon'] = $matches[1];
}

Выводит данные из строки выше (этой):

preg_match("/(Московская область.*?|Москва.*?)<\/p>/im", $content, $matches);
if ($matches != NULL) {
$xml->content[$i]['address'] = $matches[1];
}
LEOnidUKG:
Если телефон 1, тогда
вместо:
preg_match_all

пишем:
preg_match

и оно запихнётся тогда

большое спасибо за ответы ! Но в том то и дело, что результат мне нужно запихнуть в поле content[$i]['telefon']

---------- Добавлено 02.11.2018 в 21:23 ----------

Пробую вот так:

preg_match_all('@\+7(.*?)<@smi', $content, $matches);
if ($matches != NULL) {
$xml->content[$i]['telefon'] = $matches[1];
}

Но результат выходит: Array

P.s. телефоны вида +7 999 879-35-68

Всего: 392