• Как передать путь к файлу в базу данных?

    Lastor
    @Lastor
    В чем сила, брат? В ньютонах.
    1. Вам следует почитать о разнице между mysql и mysqli, использовать PDO и передавать данные в бд исключительно при помощи плейсхолдеров.
    2. Вы должны проверить, что полученные данные действительно являются изображением, а не вредным кодом.
    3. Загруженный файл может не открываться из-за отсутствия слеша в начале пути. Или иной опечатки в url файла.
    Но, в свете предыдущих пунктов, это не основная проблема. Первые два значительно важнее.
    Ответ написан
    Комментировать
  • Как получить трек вызовов методов и время их выполнения?

    Lastor
    @Lastor
    В чем сила, брат? В ньютонах.
    Если предположить, что при вызове каждого метода происходит измерение времени начала, времени окончания и запись в лог, то единственное, что можно по нему определить - это глубину метода в стеке.
    Целесообразно добавить функцию с логированием в те методы, которые в чем-то подозреваете.
    А еще лучше посмотреть логи sql.
    Ответ написан
  • Как исправить ошибку синтаксиса mysql?

    Lastor
    @Lastor
    В чем сила, брат? В ньютонах.
    Если вы не используете PDO, то по крайней мере уж не пихайте выражения в формирование строки sql.
    И константы тоже не пихайте.
    Подготовьте переменные заранее. Так, чтобы они без закрытия кавычек и конкатинации вставлялись.
    Тогда IDE сама всё подскажет и вам не придётся насиловать мозг ни себе ни окружающим.
    Ваш sql сейчас настолько нечитаем, что в нём даже нет смысла ковыряться.

    P.S. Если этот код - часть какого-то модуля, который вы не можете изменить, то дело в каких-нибудь символах, которых он не ожидает. Нужно во вторых избавить все входящие данные от любых символов кроме букв и цифр, во первых - прекратить с ним любые производственные отношения.
    Ответ написан
    1 комментарий
  • Как запретить Яндекс Диску изменять даты файлов при синхронизации с ПК ?

    Lastor
    @Lastor
    В чем сила, брат? В ньютонах.
    Исходя из того, что я понял из того, что мне объяснили в ТП Яндекса (занятный каламбур):
    они не сохраняют файл в буквальном смысле. Они создают новый файл с данными из полученного.
    И по некоторым слухам дополняют его еще и чем-то своим. Поэтому технически дата изменения не может остаться прежней.
    Бесит неистово.
    Ответ написан
    1 комментарий
  • В каких ситуациях можно обойтись без плейсхолдеров в запросе?

    Lastor
    @Lastor
    В чем сила, брат? В ньютонах.
    Обойтись без плейсхолдеров можно в случаях, когда вы точно уверены в типе, валидности и происхождении данных.
    На начальных этапах следить за этим не сложно. Но ваше приложение будет развиваться и расти. Помнить что где и откуда станет труднее. В моей практике и вовсе был случай, когда я, допустив ошибку, сам себе сделал инъекцию после которой пришлось поднимать бд из бэкапа.
    Сам процесс принятия решения плейсхолденить или не плейсходерить - уже когнитивный труд. А трудолюбие обратно пропорционально интеллекту. Проще всё всегда плейсхолдерить и жить спокойно. При этом освободившийся ресурс мозга найдет себе более рационально применение.
    Ответ написан
    Комментировать
  • Какая есть библиотека времени для Nuxt?

    Lastor
    @Lastor
    В чем сила, брат? В ньютонах.
    обновлялась 3 года назад

    Иногда это не плохо, а хорошо.
    Способы измерения времени за последние 100 лет не особо изменились.
    moment прекрасно работает.
    Ответ написан
    Комментировать
  • Как в цикле php установить значение по умолчанию если проверка на значение в цикле не было найдено?

    Lastor
    @Lastor
    В чем сила, брат? В ньютонах.
    До завершения цикла никому во всей вселенной неизвестно присваивать ли класс active первому элементу.
    А ваш выводит данные во время выполнения.
    Если он уже вывел на экран первый элемент, ему до фени что там в следующих.
    Принятие решения должно произойти до вывода.
    Пройдите в цикле $Array, поймайте что нужно, измените первый элемент, если требуется.
    А потом уже выводите на экран в новом цикле.
    У меня тоже всегда какие-нибудь траблы возникают, если смешивать логику и вывод данных.
    Лучше мухи отдельно, котлеты отдельно.
    Ответ написан
    Комментировать
  • Какое приложение написать для понимания ООП?

    Lastor
    @Lastor
    В чем сила, брат? В ньютонах.
    Полноценного понимания не существует.
    Я долго писал в процедурном стиле и долго не мог понять зачем вообще нужны эти классы какие-то.
    Всё решалось функциями. С ростом сложности проекта приходилось передавать в функции всё больше и больше аргументов. Когда аргументов стало слишком много, я стал передавать в качестве аргумента массив с переменными.
    Функция изменяла значения в этом массиве и возвращала.

    Иногда (часто) функция должна была вызвать другую функцию и передать туда этот массив. Количество функций росло, цепочки из них становились всё длиннее и я даже стал путаться в том, какая функция в какой цепочке (трейсе) участвует.
    Тогда я стал раскладывать группы функций по разным подключаемым файлам и называл эти файлы так, чтобы по названию понять какой группе переменных они нужны.

    А потом я случайно узнал, что эти какие-то непонятные методы, которые "являются поведением объектов класса" (как это обычно объясняют) на самом деле просто функции и есть. И оказалось, что можно не пропихивать массив через них, а наоборот - функции сложить в этот массив. Получилось, что класс это такой "массив" в котором есть не только переменные, но и функции. И эти функции могут видеть все эти переменные, даже если не написать global $var. И это было как раз тем, чего я очень желал и радости моей не было предела.
    Кстати, узнал я это, когда забавы ради кодил 2D платформер на C# в Unity.
    Ответ написан
    Комментировать
  • Заказывать CMS с 0 или использовать существующие?

    Lastor
    @Lastor
    В чем сила, брат? В ньютонах.
    Выбор фреймворка - это не ваша зона ответственности. Не потому что вы некомпетентны, а потому, что не вам его поддерживать.
    Вероятно, вы захотите, чтобы у вас было и мобильное приложение, которое "питается" от того же бэкенда.
    А значит бэкенд не должен заниматься никаким html, отдавать только json.
    И WP я тут вообще не могу как-то серьёзно рассматривать. А если проект надо будет поддерживать и расширять, то останется либо уволиться либо повеситься.
    Фронтенду до фени кто ему отдаст этот json. Даже если там нэтивный php.
    Поэтому более актуальными вопросами будут: Vue vs React, SPA vs PWA.
    А что работает с сервером и бд не важно. Laravel / Yii / Simfony / phpOnly - разработчик сам разберётся.
    Ответ написан
    Комментировать
  • Обледенение двух массива данных, как сделать?

    Lastor
    @Lastor
    В чем сила, брат? В ньютонах.
    // $row->name выглядит опрятнее, чем $row['name']
    // Для этого превращаем массив в объект. (object)
    while ($row = (object) mysqli_fetch_assoc($result)) {
    
        //$kol_grop++; Это не нужно
    
        // $name_grop .= $row['name'] . ',';
        // Не следует использовать конкатенацию в цикле.
        // Лучше собрать в массив и склеить в implode после цикла.
    
    
        // array_push($array_nama_g, array('name'=>$row['name'], 'subscriber_bes'=>$row['subscriber_bes']));
        // Это можно выразить иначе:
        // 'name' кладем в ключ, 'subscriber_bes' в значение
        $array_nama_g[$row->name] = $row->subscriber_bes;
    
    }
    
    // $name_grop .= $row['name'] . ','; <-- это было в цикле while
    // Вместо этого берём ключи из $array_nama_g и клеим в строку:
    $name_grop = implode(',', array_keys($array_nama_g));
    // А вообще я так и не понял зачем нужна эта переменная.
    // Да еще совпадающая с именем ключа в res_raspi. Очень запутывает.
    
    //api
    // Вместо array() можно использовать []
    $res_raspi = [
        ['name_grop'      => 158,
         'subscriber_bes' => '125588,87156978,899'],
    
        ['name_grop'      => 668,
         'subscriber_bes' => '188,8799']
    ];
    
    /*
    for ($i = 0; $i < $kol_grop; $i++) {
        $fed_key_array = array_search($res_raspi[$i]['name_grop'], array_column($array_nama_g, 'name'));
        $users_id = $array_nama_g[$fed_key_array]['subscriber_bes'];
        // $users_id будет перезаписываться каждую итерацию цикла.
        // Или планируется его применить до наступления следующей?
    }
    */
    
    // Записываем это более понятным образом
    foreach ($res_raspi as $rapi) {
        $users_id = $array_nama_g[$rapi['name_grop']];
    }


    убираем комментарии
    while ($row = (object) mysqli_fetch_assoc($result)) {
        $array_nama_g[$row->name] = $row->subscriber_bes;
    }
    $name_grop = implode(',', array_keys($array_nama_g));
    
    $res_raspi = [
        ['name_grop'      => 158,
         'subscriber_bes' => '125588,87156978,899'],
        
        ['name_grop'      => 668,
         'subscriber_bes' => '188,8799']
    ];
    foreach ($res_raspi as $rapi) {
        $users_id = $array_nama_g[$rapi['name_grop']];
    }

    Это в более цивилизованно выглядит, но работает так же.
    Чтобы что-то исправить надо задачу понимать.
    Что с чем нужно объединить?
    Ответ написан
    Комментировать
  • Двойная сортировка со стрелочной функцией. Как реализовать?

    Lastor
    @Lastor Автор вопроса
    В чем сила, брат? В ньютонах.
    const sortByJob = (d1, d2) => (d1.job_id < d2.job_id) ? 1 : (d1.job_id === d2.job_id) ? ((d1.last_name > d2.last_name) ? 1 : -1) : -1

    Неужели так?
    Тогда я хочу обратно в sql: ORDER BY job_id, last_name
    =)
    Ответ написан
    Комментировать