• Почему советуют не выбирать yii2 для разработки?

    @sidni
    Php Developer
    Yii не советуют только по двум простым причинам
    1) фреймверк делается "по фану" программистами в свободное от работы время (субботы и воскресения ))) )
    2) практически никто из разработчиков Yii не используют Yii в своих комерческих проектах.

    отсюда миллион выводов и заключений
    Ответ написан
  • Этот код сильно ужасен)?

    @sidni
    Php Developer
    Все зависит в рамках какой задачи Вы пишите.
    Как бы если этот скрипт написан за минимальный прайс и минимальный тайминг, на какой нибудь халтурке (фриланс), то ничего страшного другими словами "а на что Вы надеялись".
    Если Вы являетесь штатным программистом в конторе или этот проект долгосрочен для Вас и Вы потеряли кучу времени на реализацию этого кода, то Вам нужно пересмотреть свои взгляды на будущее, в современном пхп мире так уже никто не пишит.
    1) Сейчас стараются писать в ООП стиле Ваш код имеет вид процедурного кода больше перетекающий в "лапшекод".
    Как минимум необходимо находить независимые атомарные операции и обворачивать в классы
    например голый sql запрос не может быть на одном уровне бизнес логикой и проверкой входных данных (см. паттерн Репозиторий), так же нельзя тут же обращаться к апи телеграмма может быть стоить выделить в отдельный универсальный класс отправки сообщений (вдруг вам надо будет отправлять вместо телеграмма, в вайбер) (можно глянуть паттерн Декоратор) и т. д.
    2)
    include "bitrix.php";

    include "function.php";
    require_once '../src/db.php';

    Но при этом
    use Aura\Database;

    3) избегайте if else особенно когда они занимают пол экрана это очень ухудшает читаемость и дальнейшее расширение приложения
    4) используйте Exception правильное использования сократит количество if else
    можно дальше продолжать но начните с этого
    Ответ написан
  • Зачем нужно обновлять токены доступа oauth2?

    @sidni
    Php Developer
    Если быстро и примитивно:
    Иногда случается что "человеку1" нужно провести какие то важные операции вот прямо сейчас (допустим перевести денег с карты на карту) он заходит на какой-то сайт (который использует oauth2) начинает производить манипуляции в аккаунте и каждый запрос на сервер сайте уходит с access_token, и вроди как все хорошо, но вот немного усложним человек находится в метро (кафе) и пользуется публичным wifi и "рядом" сидит "человек2" (даже не обязательно администратор этой wifi очки), который может запустить снифер который может считать этот токен и воспользоваться им по своим нуждам.
    Но в силу того что access_token имеется не большой срок службы, есть большая вероятность, что "человек2" не успеет им воспользоваться т. к. сработает refresh_token, а новые токены допустим будут получены когда "человек1" уже выйдет из метро (кафе), и будет подключен в другой сети.
    Ответ написан
    Комментировать
  • Как узнать имя хоста сервера Mysql к которому мне подключаться?

    @sidni
    Php Developer
    Если ваш php скрипт находится на том же бесплатном хостинге то то скорее всего можно использовать localhost но лучше глянуть настройки панели хостинга или в крайнем случае урле phpmyadmin.
    Если Ваш скрипт находится на Вашем локальном компьютере то тут есть сложности обычно хостеры отключают удаленный доступ к базе, тут тоже надо внимательно смотреть в настройках панели хостинга
    Ответ написан
    Комментировать
  • Что за ошибка с GROUP BY в запросе?

    @sidni
    Php Developer
    Там же написано чтобы этот запрос работал нужно на сервере выключить мод я так понял ваш сервер работает в режиме strict, поменяйте настройки

    [mysqld]
    sql_mode = STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION
    Ответ написан
  • Как лучше реализовать sender?

    @sidni
    Php Developer
    Как вариант бросьте эксепшен (лучше создать свой).
    А в клиентском коде (или лучше создайте декоратор) и перенесите туда try...catch уже ловите его и обрабатывайте как надо.
    ну если лень заморачиваться или оставьте как есть и в return $exception->getMessage(); вернется сообщение пустого респонса
    Ответ написан
  • MVC пару вопросов. Поможете?

    @sidni
    Php Developer
    1) рекурсия в контроллере если Вы создаете "плоский" массив данных и потом передаете его во вьюху
    рекурсия во вьюхе если вы генерируете дерево с хтмл тегами.
    2) нет необязательно. экшен контроллера может не иметь модели или вьюхи, например поставить какую нибудь задачу в очередь, но желательно вернуть ответ (статус).
    Ответ написан
    Комментировать
  • Почему выскакивает ошибка SQLSTATE[42000]: Syntax error or access violation: 1067 Invalid default value?

    @sidni
    Php Developer
    Ошибка свидетельствует о том что нет значения по-умолчанию для поля в таблице, а в запросе остсутствует значение для этого поля.
    Вариантов решения два изменить таблицу и добавить дефолтное значение для поля допустим NULL если эта ошибка будет повторяться с другими полями необходимо для базы даных добавить моды NO_ZERO_IN_DATE и NO_ZERO_DATE.
    Возможно понадобятся и другие моды чтоб отключить строгий режим в mysql
    Ответ написан
    Комментировать
  • Php DateTimeImmulable как проверить даты в диапазоне?

    @sidni
    Php Developer
    помоему можно в тупую объекты DateTimeImmulable сравнивать <,>,==....
    Ответ написан
  • Почему date_diff возвращает неправильное число?

    @sidni
    Php Developer
    $countOfDays = date_diff($val2 , $val1)->format("%R%a");
    Ответ написан
    Комментировать
  • Как правильно и поэтапно сделать поиск на сайте?

    @sidni
    Php Developer
    традиционно чаще всего данные передаются через
    - POST
    - GET
    - COOKIE
    - SESSION

    в случаее поиска обычно есть форма которая отправляет данные на сервер пусть это будет через POST на урл вывода результата, сервер читает POST данные и ищет допустим в базе данные соответствующие данные и возвращает готовый хтмл с результатом поиска
    Ответ написан
    2 комментария
  • Как связать рецепт и продукты?

    @sidni
    Php Developer
    Можно попробовать оттолкнуться от этой структуры:

    Table: Recipes
    Recipe_ID, Recipe_Name, Cooking_time

    Table: Ingredients
    Ingredient_ID, Ingredient_Name

    Table: Recipe_Ingredients
    Recipe_Ingredient_ID, Ingredient_ID, Recipe_ID, Ingredient_Qty
    Ответ написан
    2 комментария
  • Как в Yii2 безболезненно подменить одну таблицу из другой БД?

    @sidni
    Php Developer
    Ответ из SO
    return [
    'components' => [
        'db1' => [
            'class' => 'yii\db\Connection',
            'dsn' => 'mysql:host=localhost;dbname=db1name', 
            'username' => 'db1username',
            'password' => 'db1password',
        ],
        'db2' => [
            'class' => 'yii\db\Connection',
            'dsn' => 'mysql:host=localhost;dbname=db2name', 
            'username' => 'db2username',
            'password' => 'db2password',
        ],
    ],
    ];

    QueryBuilder:
    Yii::$app->db1->createCommand((new \yii\db\Query)->select('*')->from('tbl_name'))->queryAll();
    Yii::$app->db2->createCommand((new \yii\db\Query)->select('*')->from('tbl_name'))->queryAll();

    ActiveRecord
    public static function getDb() {
        return Yii::$app->db2;
        // return Yii::$app->db1;
    }
    Ответ написан
    4 комментария
  • Как получить связанные данные из БД (mysql) в одном элементе массива?

    @sidni
    Php Developer
    начните с этого, может поможет
    SELECT dta.id, dta.doc_name, dta.doc_title, dta.link, dta.status, GROUP_CONCAT(DISTINCT dty.doc_id ORDER BY dty.doc_id ASC SEPARATOR ', ') AS type_id
    FROM doc_table dta
    INNER JOIN docs_types dty ON dta.id=dty.doc_id
    GROUP BY dta.id;

    или
    SELECT dta.id, dta.doc_name, dta.doc_title, dta.link, dta.status, GROUP_CONCAT(DISTINCT t.type_name ORDER BY t.id ASC SEPARATOR ', ') AS type_name
    FROM doc_table dta
    INNER JOIN docs_types dty ON dta.id=dty.doc_id
    INNER JOIN types t ON t.id=dty.type_id
    GROUP BY dta.id;
    Ответ написан
    2 комментария
  • Как адаптировать код OpenCart 1.X под OpenCart 2.3?

    @sidni
    Php Developer
    я давно не брал в руки опенкарт((
    1) Нужно дебажить (хорошо если установлен и настроен x-debug), если нет то тогда старое доброе var_dump();die;
    2) узнать что приходит $product_total (см пункт 1) там должно быть количество продуктов
    3) по нажатию на кнопку должен вызывается аякс запрос в консоле надо убедиться что он происходит и нет ошибок js. Далее нужно проверить статус ответа существует ли соответствующий экшен на который отправляется запрос.
    так же смущает
    product_div = '.products';
    ....
          $("." + product_div)

    по идеи должно быть
    $(product_div)
    тк две точки это наверно перебор
    и дальше поэтапно глядеть
    Ответ написан
    Комментировать
  • Спустя сколько времени после запуска сайта поисковики проиндексируют первую страницу?

    @sidni
    Php Developer
    Все зависит от сайтмапа скормленного в вебмастерах соответсвующих поисковиков, так же у них есть сервисы для ускорения индексирования отдельных страниц.
    если сайтмап успешно отправлен то в районе двух-трех недель
    Ответ написан
    Комментировать
  • Как нормально зарегистрироваться в Payoneer, живя в ЛНР?

    @sidni
    Php Developer
    Не стоит палиться и переводить на личную карту есть риск что это модет непонятно закончиться с налоговой.
    Закажите карточку пионера на загран паспорт я помоему вообще на права водительские оформлял международные.
    И Роял меилом на какой угодно адресс придет карта мастеркард ей и расплачивайтесь, покупать через терминал без комисии снимать наличные зависит от банкомата некоторые любят снимать дополнительную сумму просто за услуги, несмотря на обычный процент.
    Ответ написан
    Комментировать
  • Как подключить почту для домена на openserver?

    @sidni
    Php Developer
    Насколько я помню если письма отправляются с помощью функции mail то они сообщения храняться в текстовых файлах. в папке примерно userdata/tmp/email
    если хочется "реальных писем" то нужно в настройках указать smtp сервер чтоб письмо шло через вашу почту (гугл, яндекс, маил)
    Ответ написан
    Комментировать
  • Как передать data-id кнопке?

    @sidni
    Php Developer
    $('body').on('change', '#mySelect', function() {
        $('#myButton').attr('data-id', $(this).val());
    });
    // Если не устанавливаются значения по-умолчанию можно поступить и так.
    $('#mySelect').change();
    Ответ написан
    Комментировать
  • Как постоянно генерировать различные дизайны шаблонов для сайтов одной тематики?

    @sidni
    Php Developer
    Схожесть это нормально, многие сервисы (студии, компании...) предоставляют какой-то базовый функционал за какую-ту базовую стоимость в том числе и дизайн.
    А далее люди берут дополнительные деньги за кастомизацию и в том числе за уникальность дизайна, а то еще каким образом можно отбить многочисленный штат больших фильм, за каждый "чих" платит клиент, но раз всех все устраивает значит клиет получает приемлемое для него качество услуг.
    Понятное дело я не знаю Ваших мощностей и может Вы один на все руки мастер, понятно что это тяжело совместить в себе на первых порах и дизайнера и верстальщика и девелопера поскольку этим Вы растягиваете срок сдачи сайта, но начать надо с базового шаблона для ускорения процесса я советую взять не сильно навороченный даже на базе какого-нибудь пресловутого бутстрапа и черт-побери джквери, чтоб можно было легко манипулировать расположением блоков, а также подобрать разные цвета, сделать на нем 2-3 сайта, а потом уже исходя из практики постепенно "усложнять".
    Ответ написан
    Комментировать