Есть перечень файлов в директории (более 15 тыс.)
Пробовал сначала данные о файлах вносить в отдельную таблицу, а потом делать выборку. Но чтобы внести данные, опять надо делать много запросов, а если одним через implode
$sql="INSERT INTO `".$this->_exist_image."` (`image_name`) VALUES ('".implode("','",$array)."')";
то сервер подвисает и не срабатывает, т. к. в VALUES() более 15 тыс. значений получается.
Есть идеи?
p.s.
Решил проблему вставкой VALUES по 1000 шт.
А вообще неправильный запрос был, т. к. там надо было каждый элемент VALUES брать в (), иначе получается я в одно поле пытаюсь засунуть тысячи полей.
вот так
isset - проверяет на существование переменной. Если вы прямо до проверки берете и создаете эту переменную то isset всегда даст true. Я не вникал в то, что вам нужно, но попробуйте посмотреть в сторону empty
пробовал и empty - результат такой же. По условию while ни каким образом не получается завершить цикл.
Если до
echo'Существует ссылка на следующую страницу '.$nextPage->href.'<br>';
выводит на экран соответствующее сообщение. В противном случае!!! (else) на экран должно выводиться 'Ссылка на следующую страницу отсутствует', но не выводится ничего! Т. е. нельзя получить if(!isset())=true. Соответственно цикл не может завершиться.
Я уже даже не знаю как правильно проверку провести. Приходит в голову только, что на длину строки полученный элемент проверять
Получил с помощью simple html dom вышеуказанную строку.
Значение href из неё можно получить просто $e->href
Можно ли подобным образом получить значение data-code ?
Если нет, то подскажите, пожалуйста, регулярное для preg_match, чтобы получить это значение.
по всем канонам ооп вам нужно разделить импортируемые сущности и на каждую сущность создать свой класс
Я это понял. Не понял как в моем случае это реализовать. Ну отделить импорт csv от всего остального не проблема. А с остальным то что делать?
Гугл даёт лишь определения. Без конкретных примеров, связанных с подготовкой запросов, их использованием и прочим, описанным выше, боюсь я ничего не пойму.
То что ты привёл это не класс в стиле ооп, ооп даже близко нет.
Дам подсказку, работу с бд нужно вынести в отдельный класс/ы, я бы взял для этих целей ActiveRecord из yii2.
Поэтому и спрашиваю как это должно выглядеть.
yii2 - даже не представляю что это такое.
Привёл подробное описание именно для того, чтобы можно было его разложить на функции и классы.
Мне не надо детально всё разделять. Просто напишите или дайте ссылку: вот это вот так обычно делают, это - эдак и т. д.
Пишу класс для актуализации товара магазина joomshopping.
В ООП не силён.
Поэтому сделал класс для подключения к базе, класс для обработки изображений и класс где собственно и происходит актуализация.
Вот его схема
1. функция function __construct, где вызываем родительскую функцию подключения к БД.
2. функция function _loadCSV($flnamecsv), где:
2.1. создаём таблицу $priceTable для импорта данных из прайса
2.2. парсим csv в ранее созданную таблицу $priceTable
2.3. получаем массив $results с теми записями из $priceTable, которых ещё нет в магазине
2.4. вставляем новые записи из $priceTable в магазин
2.5. снимаем с публикации те записи, которых нет в $priceTable
2.6. публикуем новые записи и обновляем цену у всех товаров
2.7. вставляем имена файлов изображений в соответствующую таблицу
2.8. подготавливаем все необходимые в дальнейшей работе запросы
2.8.1 выборка категории с заданными наименованиями и родительской категорией
2.8.2 определяем максимальный order для конкретной родительской категории
2.8.3 определяем id для соответствующего кода товара
2.8.4 вставляем в таблицу с категориями запись с заданными именами файла изображения, родительского id, очередного order, наименованием категории
2.8.5 в таблицу соотношения товара и категории делаем соответствующую запись
2.8.6 определяем id производителя
2.8.7 определяем максимальный order для производителя
2.8.8 вставляем в таблицу с производителями запись с соответствющими наименованием и очередным order
2.8.9 меняем в таблице с товаром id производителя на определённый в запросах ранее
2.9. для каждого элемента массива $results делаем цикл, в котором в перечисленные ранее запросы передаём параметры и выполняем соответствующие операции, а также загружаем файл изображения, делаем для него превьюшку и средних размеров изображение. Для этого вызываем функцию _downloadImage
3. функция _downloadImage($sourceName, $targetName, $quality, $width, $height)
Эта функция работает с классом обработки изображения
4. функция buildReport()
Она вызывает функцию function _loadCSV($flnamecsv) и пишет в итоге, что операция завершена.
-------------------------------- -------------------------------
Очевидно, что функцию function _loadCSV($flnamecsv), наверное, надо разбить на несколько отдельных функций, тексты запросов или даже подготовленные запросы вынести в отдельный класс? Операцию по выполнению всех этих запросов вынести в отдельную функцию? Тогда в новой функции опять заново присваивать имена таблиц БД переменным? Подскажите как сделать красиво.
Что не так? Обычный рэндом в параметрами min и max.
Дело не в этом. До рэндома даже не доходит. Для вывода чего-либо должен начаться цикл foreach, а в массив $last_prod пуст, и откуда он должен принимать значения - совершенно непонятно. (Добавление)
Ура! Я починил его
Оказывается правильно смотрел в оба файла.
В итоге предположил (и это очевидно из текста), что массив с последними продуктами находится в переменной
Помогите побороть модуль Latest Products.
Вывожу его в позиции Slider - пусто.
За вывод его на экран отвечает templates\it_theshop2\html\mod_jshopping_latest_products\default.php.
В общем, насколько я понял, у меня $last_prod пустое значение.
Не могу понять из какого файла должен браться этот массив. Соответственно не могу определить в чём проблема.
пробовал дублировать код из modules\mod_jshopping_latest_products\mod_jshopping_latest_products.php
Здесь на этапе $cat_str = $params->get('catids',NULL); сайт "вываливается" в белый экран, хотя echo $params->get('catids',NULL); работает, на экране в это время появляется слово Array.
Выручайте. Осталось побороть только этот Latest Products и captcha.
Сайт http://141[dot]8[dot]196[dot]250/babysize[dot]ru
Пока ничего особо критического, кроме вот этого плагина, не заметил.
Viper пишет:
Конкретно ваш случай это проблема с JCaption.
Я догадывался. Но после вашего сообщения стал копаться только в этом направлении. Решение нашёл в отключении caption.js. Слайдер заработал. Теперь обнаружилось, что код в javascript немного "корявый". Суть в том, что при переключении слайдов автоматом - всё в порядке. При переключении в обратном порядке в ручную (от 4 к 1) - тоже всё в порядке. А вот если вручную переключать по порядку, от 1 к 4 - два раза срабатывает код
Играюсь с шаблоном от IceTheme. Никак не могу заставить работать кнопки в "каруселе" на главной странице.
Вот ссылка на тестовый сайт http://141[dot]8[dot]196[dot]250/babysize[dot]ru
Здесь сверху у слайдера есть стрелки влево и вправо - они работают. А слева на самом слайдере есть 3 кнопочки (по количеству отображаемых материалов). В образце (на http://demo.icetheme.com/) они работают. У меня никак не получается их заставить работать.
В консоле ошибка отображается
набросал на коленке. не уверен в работоспособности, не проверял.
и ещё не уверен насчёт next и prev в цикле, я не знаю как себя ведут эти функции внутри цикла, но по логике должны работать корректно.
в любом случае будет пища для размышлений
Вопрос я писал на ночь глядя. Утром после прочтения вашего ответа никак не мог сообразить как же ваш пример должен работать.
Вы итоге по поводу "пищи для размышлений" вы оказались правы. И только в этом.
Сам пример абсолютно не рабочий. Проблем в том, что разбор категорий не с конца надо вести, а именно с начала.
А вообще всё просто оказалось: