Михаил
Сработал этот вариант {$nalichie.0}
Михаил
Спасибо большое 🔥🔥
Pavel
Тогда это вполне верный путь.
а можно как-то через xpdo обновлять таблицы кастомные, если у них класс не указан?
Артур
а можно как-то через xpdo обновлять таблицы кастомные, если у них класс не указан?
Вот как-то так можно https://modzone.ru/blog/2016/02/04/database-queries-using-pdo/
Roman
Парни подскажите, как правильно в bash скрипте прописать чтобы приходил ответ на почту о выполненном задании. Иногда возникают ошибки, хотелось бы их тоже получать. Делаю так, но почему-то не получаю тело письма: echo "Backup: " | gunzip < /var/lib/phpMyAdmin/upload/modx.sql.gz | mailx -s "Backup success..." < /dev/null "test@ya.ru"
Степан
> /dev/null
Степан
вроде так указывается где исполнять
Степан
SHELL=/bin/bash MAILTO=nameuser@example.loc.org * * * * * ls
Степан
вместо ls ваша команда все это в файл и в crontab
Степан
господа, кто из вас получал настройки пользователя при помощи pdoUsers?
Степан
попробовал сам снипет допилить, но получается так что у нас множество к одному можно конечно через join (select) но может можно проще?
Степан
народ наверное туплю но как склеить массив Array ( [0] => Array ( [val_set] => Array ( [blabla] => 7777777 ) ) [1] => Array ( [val_set] => Array ( [tada] => 888888 ) ) ) в 1 при условии val_set уникальных
Алексей
Добрый день, подскажите есть ли в MODX метод для проверки введённых input'ов на вреданосы??
MODX Notification Bot
Новая статья [modx.pro] Раздел: Новые дополнения и их версии [videoGallery] 1.3.0 Поддержка MIGX Давно хотел внедрить поддержку MIGX, тем более, что уже очень давно пользователь Гитхаб под ником SintezCode отправил PR для этого. Единственное, у меня было несколько правок по его коду, поэтому никак не доходили руки, чтобы этим заняться. ...
Артур
Господа а как сделать sql так чтобы если записи нет, она создалась, а если есть обновилась, НО чтобы всё в один запрос? Это вообще реально? Важное уточнение в один запрос надо вставить или обновить сразу много строк, а не по одной.
Danil
Есть плагин SimpleSearch и есть модификации товаров с их артикулами. Так как способ поиска по артикулам модификаций я не нашел - я их все вывел через запятую в introtext. Поиск начал находить товары, но иногда нужны резулитат находится аж на 5-ой странице поиска. Можно ли как-то сделать так, что бы тот результат у которого в introtext между запятыми был искомый фрагмент целиком, то он выводился первым?
Danil
Или может как-то всё таки можно сделать поиск по артикулам модификаций
Артур
Никак
Прекрасно))) А как быстро загрузить 270 000 строк в базу данных?
Sergey_K
Прекрасно))) А как быстро загрузить 270 000 строк в базу данных?
Ну сделай файл считывай по 100 строк и кидай его в таблицу инсертом. В чем проблема?
Артур
Ну сделай файл считывай по 100 строк и кидай его в таблицу инсертом. В чем проблема?
Не понял, делать 100 запросов, а потом что? Или считать 100 строк, а потом что? В общем не понимаю.
Артур
Есть пример?
Артур
Может insert ignore поможет. Просто всех вводных данных не дал.
есть csv 270000 строк два поля А и В в каждой строке, если в таблице С есть запись содержащая значение из поля В надо обновить А, если такой записи нет надо записать А и В в таблицу С)))
Артур
Я сдуру лупанул вставку в цикле, но чёт сервак не вывез)))
Евгений
или отдельно читаешь и потом вставляешь?
Артур
в цикле читаешь файл?
В цикле читаю и вставляю, но 270000 не тянет, даже 130 не тянет.
Евгений
В цикле читаю и вставляю, но 270000 не тянет, даже 130 не тянет.
отдельно читай в json и потом в цикле только вставка
Евгений
а если ты будешь читать файл в каждой иттерации, то сервак помрет
Евгений
я так 100к закидывал за 35-40 сек
Артур
отдельно читай в json и потом в цикле только вставка
Я читаю файл так, что надо поменять?
Артур
Точнее как прочитать файл в json без цикла?
Евгений
$txt = file_get_contents($file['tmp_name']); $delimiter = ';'; $file_array = explode($delimiter, $txt); foreach ($file_array as $code) { if($code) { if (!$object = $this->modx->newObject($this->classKey, ['code' => $code])) { return $this->failure($this->modx->lexicon('codeverify_item_err_on_import')); } $object->save(); } }
Евгений
$txt = file_get_contents($file['tmp_name']); - вот тут чтение у меня из POST идет
Евгений
ты можешь сразу путь к файлу прописать
Евгений
записывал в базу процессором, sql буедт еще быстрее
Roman
Можно загрузить всю таблицу через импорт в MySQL, сделать статус у каждой строки и вызывать по крону 50-100 строк для проверки, после обработки строки менять статус. Вариантов на самом деле много. Можно массив создать по нему проверять есть ли запись в базе.
Артур
$txt = file_get_contents($file['tmp_name']); $delimiter = ';'; $file_array = explode($delimiter, $txt); foreach ($file_array as $code) { if($code) { if (!$object = $this->modx->newObject($this->classKey, ['code' => $code])) { return $this->failure($this->modx->lexicon('codeverify_item_err_on_import')); } $object->save(); } }
Есть проблема у меня же в файле пары ключ=значение, т.е. мне нужно ну как минимум по концу строки разбивать, вот только разделитель '\r\n' не работает.
Sergey_K
Надо читать по 100 строк, а не весь файл
Евгений
мне надо единарозово было загрузить, оно загрузило, все, дасвидания
Sergey_K
Вино, кстати, было хорошее)
Артур
Надо читать по 100 строк, а не весь файл
Пожалуйста, скажи как читать по 100 строк?
Евгений
Вино, кстати, было хорошее)
еще б) сам выбирал))
Евгений
Пожалуйста, скажи как читать по 100 строк?
https://www.google.com/search?q=%D1%87%D1%82%D0%B5%D0%BD%D0%B8%D0%B5+%D1%84%D0%B0%D0%B9%D0%BB%D0%B0+%D0%BF%D0%BE+100+%D1%81%D1%82%D1%80%D0%BE%D0%BA+%D0%BD%D0%B0+php&rlz=1C5CHFA_enMD924MD924&ei=ehYyYsawC9DssAfHyryABQ&ved=0ahUKEwjG1ee7jMv2AhVQNuwKHUclD1AQ4dUDCA4&uact=5&oq=%D1%87%D1%82%D0%B5%D0%BD%D0%B8%D0%B5+%D1%84%D0%B0%D0%B9%D0%BB%D0%B0+%D0%BF%D0%BE+100+%D1%81%D1%82%D1%80%D0%BE%D0%BA+%D0%BD%D0%B0+php&gs_lcp=Cgdnd3Mtd2l6EAMyBQghEKABMgUIIRCgATIFCCEQoAEyBQghEKABOggIIRAWEB0QHjoHCCEQChCgAUoECEEYAUoECEYYAFD2AljmC2ClDGgEcAB4AIABkQGIAa4FkgEDMS41mAEAoAEBwAEB&sclient=gws-wiz
Евгений
Вино, кстати, было хорошее)
только сейчас открыл?)))
Sergey_K
Sergey_K
только сейчас открыл?)))
Не, прошлым летом )
Артур
https://www.php.net/manual/ru/function.fgets.php
Не понимаю я как это должно работать😭 Вот читаю я файл построчно, считаю строки, пока меньше 100 - читаю, а когда 100, что делать? Записать отступ и... записать данные в базу, а как потом вернуться к чтению файла?
Sergey_K
Делать
Sergey_K
Но если ты хочешь использовать хромой XPDO, то, видимо, только по одной
Артур
По уму тебе надо INSERT INTO ... VALUES() VALUES()
Ну наверное, но как быть если запись уже есть, мне же её надо обновить, а ты сказал, что так не работает.
Sergey_K
Тогда ищи запись с айди и апдейть, но это жопа будет
Артур
Я чистые запросы шлю, без объектов
Sergey_K
Что значит хромой?
Он кривой, косой и абсолютно не рассчитан на работу с +- значительным кол-вом строк. Там нет, напримет, курсоров и перебора фрагментами
Sergey_K
Я чистые запросы шлю, без объектов
Ну тогда по одной. Вставляешь - если фолит, значит запись есть - откидывай в лог.
Sergey_K
Все вставил - после этого по логу делай апдейт.
Sergey_K
Думаю, это самое оптимальное
Артур
Артур
Но мы возвращаемся к началу, как читать файл по 100 строк😭
Sergey_K
Только это не один запрос
Артур
Только это не один запрос
С визуальной точки зрения один, а с технической не знаю.
Sergey_K
Один запрос это один стейтмент select, delete и пр. Без подзапросов
Nikolay
Ребят подскажите а где править сожержимое вот этого плейсхолдера? [[+fi.validation_error_message]]
Nikolay
В вызове сниппет validationErrorMessage
неа 'validationErrorMessage' => 'Форма содержит ошибки', вот так в вызове и меняется всплывашка jGrowl
Nikolay
а в форме в месте вызова - This field is required.
Евгений
в словаре видимо
Артур
неа 'validationErrorMessage' => 'Форма содержит ошибки', вот так в вызове и меняется всплывашка jGrowl
Если там ajaxform то как ты вообще видишь значение этого плейсхолдера оно же доступно только после обновления страницы?