Ответы пользователя по тегу PHP
  • Что неправильного в моем коде?

    Как минимум, Вы не вникли в задачу. Я вот в футболе практически не разбираюсь - получив такое задание, я пошёл бы в гугл узнавать, как проводятся матчи в турнирах, когда команда играет на своём поле, а когда - нет. Даже по своим скудным знаниям могу кое-что предположить:
    1) Первый круг: команды надо разбить на пары случайным образом. Это shuffle() + array_chunk() . У Вас этого нет.
    1.1) Учесть ситуацию, когда команд - нечётное количество. Этого тоже нет.
    2) в парах какую-то команду назначить хозяином. Соответственно, в выводе в колонке "Хозяева" должно быть не повторение "Хозяева", "Хозяева", "Хозяева", а имена команд
    3) дальше надо смотреть, на каких условиях проводится второй круг, кто в него попадает, на своём поле играют или на чужом..

    Получается, из этого:
    загружать через форму файл json со списком команд, а потом сводить эти команды в турнируную таблицу с условиями (гость, хозяин), круг 1, круг 2 и еще 5-6 условий, которые влияют на список
    Вы выполнили только "загружать через форму файл json", причём зачем-то этот файл сохраняете на диск, а потом немедленно читаете обратно.

    Сергей Вам справедливо указал на "разделение обязанностей", то бишь первую букву в SOLID - Single Responsibility Principle. Даже если оставить на месте выверт с сохранением на диск, получается:
    1. Repository - хранилище данных
    2. метод контроллера, отвечающий за приём данных именно в виде сабмита формы и сохранение их Repository
    3. Генератор текущего круга
    4. View, который отвечает за генерацию html-разметки круга,
    5. метод контроллера, который может извлечь данные из Repository, скормить их генератору, получить результат и скормить его во View.


    И не факт, что методы из 2 и 5 пункта принадлежат одному классу.
    Ответ написан
    Комментировать
  • Для чего нужен wakeUp в Битрикс?

    если посмотреть код, то видно, что при wakeUp не выполняется никаких обращений к БД.
    Метод в файле bitrix/modules/main/lib/orm/objectify/entityobject.php
    смотрите разницу:
    fill*() - подгружает значение из БД
    set*() - задаёт значение свойства, но при несовпадении со старым значением переводит объект в состояние State::CHANGED
    wakeUp() -создаёт объект с указанными значениями свойств, не переводя объект в изменённое состояние, но только при условии, что в аргументе есть первичный ключ.
    Ответ написан
    Комментировать
  • Вставка изображений в png шаблон по параметрам Wordpress?

    Что-то вроде водяного знака, но только наоборот?

    Почему наоборот? Ровно так же, если я правильно Вас понял.
    Для водяного знака:
    1) берётся исходное изображение,
    2) берётся изображение с водяным знаком,
    3) второе накладывается поверх первого,
    4) результат сохраняется

    В вашем случае:
    0) пользователи отсылают форму с файлом фотографии и какими-то текстовыми полями (например, ФИО)
    1) берётся изображение-шаблон пустого бейджа,
    2) берётся изображение из присланной формы,
    3) второе накладывается поверх первого,
    4) также поверх пишется текст из текстовых полей,
    5) результат сохраняется.

    Это можно сделать средствами GD.
    Ответ написан
    Комментировать
  • Как убрать отступы в коде?

    два варианта:
    1)_ просто всё прижать влево:
    <?php
    $chunk = '
      <url>
      <loc>'.$site.'/look/'.$sitemap['tag'].'</loc>
      <lastmod>'.date('Y-m-d').'T'.date('h:i:s+01:00').'</lastmod>
      <priority>0.8</priority>
      </url>
      ';
    $data[] = preg_replace('/^\s+</m', '<', trim($chunk));


    2) вытянуть всё в строку:
    <?php
    $data[] = preg_replace('/>\s+</ms', '><', trim($chunk));

    Эти регулярки только для данного случая! ( потому что никаких значимых пробелов в сайтмапе быть не должно)

    Несколько замечаний:
    1) показывать код скриншотом неэтично (я про готовый сайтмап). Здесь его можно было запихнуть в тег code (кнопка в панельке) с типом XML
    2) если не используете числовые индексы, то вместо mysql_fetch_array() берите mysql_fetch_assoc()
    3) mysql_* функции - древность, используйте хотя бы mysqli ( как объект, конечно же)
    Ответ написан
    Комментировать
  • Как вытащить данные из формы в дополнительных настройках пользовательского поля?

    Дисклаймер: давно копался в этом ужасе, могу ошибаться.

    есть 2 ситуации:
    1) Вы только добавляете новое поле Вашего типа к какому-то объекту (допустим, USER). Вот когда Вы на форме добавления выбираете "Тип данных ..." и страница обновляется, только тогда срабатывает метод GetSettingsHTML()
    2) Вы уже сохранили поле, оно получило ID. Тогда то, что было задано в дополнительных настройках, будет в массиве по ключу SETTINGS поля. Пример кода:
    <?php
    $arUserField = CUserTypeEntity::GetByID(316); // 316 - это ID поля в моём случае, его тип - "связь с HL блоком"
    var_export($arUserField);
    Ответ написан
  • Как решить проблему с дублированием при ajax?

    а Вы не пробовали убрать этот инлайновый скрипт в script.js шаблона? Я считаю, что у Вас в data прилетает этот javascript, исполняется, и становится 2 обработчика $(document).on('click', '.load_more',..) , на следующей подгрузке три и так далее. Это можно увидеть в DevTools - посмотрев, сколько ajax запросов порождает нажатие кнопки
    Ответ написан
    Комментировать
  • Как правильно использовать python скрипт через PHP backend?

    Если этот python скрипт можно запустить из шелла, то используйте shell_exec(), или backtick operator, или ещё что-нибудь ( в конце страниц онлайн мануала есть секция "See also" )
    Ответ написан
    Комментировать
  • Как найти функцию в файлах проекта?

    ответ при наличии Linux:
    find . -type f -exec grep 'function showMsg2'  '{}' \+

    запускать в корневой папке проекта. Не сработает, если используются магические методы.

    Вариант 2: разобраться с подключением и настройкой xdebug и использовать режим отладки в IDE или трассировку (она идёт в файл, так что IDE не нужна)

    Вариант 3: в main_frame.php
    $temp = _top();
    echo get_class($temp);
    die;

    а затем найти этот класс и копаться в нём.
    Ответ написан
    Комментировать
  • Как обернуть все таблицы с помощью preg_replace?

    Решение Вашего затыка - в модификаторе "s": https://www.php.net/manual/en/reference.pcre.patte...
    Ответ написан
    Комментировать
  • Как из php передать ошибки в js?

    сделайте обработку формы на ajax и это решит Вашу проблему. Потому что поменяется формат взаимодействия:
    1) форма отправляет на бэкенд сообщение - например, массив данных формы,
    2) бэкенд в ответ тоже шлёт сообщение - например, массив, упакованный с помощью json_encode() .
    3) обработчик формы решает, что делать с полученным ответом. Например, если в ответе есть непустое поле error , то вызвать displayNotificationerror( response.error ) . Или что-то ещё сделать.
    Ответ написан
    Комментировать
  • Как подключиться из PHP к memcached с использованием socket?

    попробуйте так:
    <?php
    $memcache_obj = new Memcache;
    $memcache_obj->addServer('unix:///tmp/memcached.sock', 0);

    У меня на Bitrix VA пример из документации работает именно так ( только надо real на float заменить )
    Ответ написан
  • Почему возникает ошибка Maximum execution time exceeded?

    Минут через 10-15 работы останавливается скрипт (но никак не через 120 секунд, как указано в логах)

    Посмотрите примечание в мануале, там всё описано. Несколько неудобно, что это примечание не продублировано в описании max_execution_time , но уж как есть
    Ответ написан
    Комментировать
  • Как вытащить только одну строку из json?

    у Вас JSON невалидный. Если предположить, что правильный JSON такой:
    {
      "128.3.3.1:1231":
        {"name":"NAME SERVER 1","gamemode":"mods","url":"https://url.ru","lang":"ru","players":412,"peak":521,"maxplayers":3333},
      "127.0.0.1:1234":
        {"name":"NAME SERVER","gamemode":"mods","url":"https://url.ru","lang":"ru","players":598,"peak":609,"maxplayers":3000}
    }

    то нужная часть извлекается элементарно:
    $json= "https://jsonurl";
    $data = json_decode(file_get_contents($json),true);
    
    $ip = "127.0.0.1:1234";
    $item = $data[$ip];
    Ответ написан
    1 комментарий
  • Как правильно сформировать логическое условие в php?

    Если минуты не нужны , то можно их отбросить и работать только с часами, как с числами. Только нужно не "09", а 9.
    Если минуты нужны, то можно перевести время в минуты ( например, "9:30" -> 9*60+30) и снова работать с числами.
    Ответ написан
    Комментировать
  • Как сократить число с округлением в меньшую сторону?

    Арамаис Мирзоян , у Вас пример неудачный. Если Возьмёте число топикстартера или 10559555, то увидите, что Ваша функция не работает, как нужно.
    Ответ написан
  • Ошибка на друпале 9. Only variables should be passed by reference с чем может быть связана?

    Очевидно, с тем, что hrutka_preprocess_page принимает аргумент по ссылке . Загляните в мануал, там полезное пишут.
    Ответ написан
    Комментировать
  • Как повысить уровень создания проектов на чистом php?

    Да какой там патерный?

    А вот те самые, которые в Laravel и заложены. То, что фреймворк заставляет Вас их использовать, а не Вы добровольно это делаете, не играет роли - Вы их используете. Если Вы знаете, что используете какие-то паттерны, но не понимаете, что это и зачем - ну почитайте про каждый используемый паттерн.
    И вот Вам такой пример: скрипт обмена данными может быть на уровне "приняли строку, разобрали регулярками, отдали строку", а может быть иерархия классов, тесты. Результат на выходе одинаковый, а уровень работы с кодом совершенно другой.
    Ответ написан
  • Почему я получаю ошибку?

    У Вас есть это:
    require __DIR__ . '/vendor/autoload.php'; // Путь к вашей установленной библиотеке Ratchet

    А есть ли где-то require для AudioStream.php ? Не вижу
    Ответ написан
  • Почему usort работает не так как ожидаю?

    Ошибка была в том, что вещественные числа нельзя сравнивать напрямую. ( подробнее - в комментарии к вопросу)
    Ответ написан
    Комментировать