Ответы пользователя по тегу PHP
  • Почему не работает UPDATE php?

    IgorPI
    @IgorPI
    Коллега, ваш код относительно правильный и в некоторых случаях он будет работать, в некоторых нет.
    Нельзя сказать что это не рабочий вариант.

    Когда вы составляете такой запрос вы подвергаете себя риску.
    Ответьте себе на вопрос, а что произойдёт, если в переменной $test будет строка?

    Опасно!
    $test = $_POST["test"];
    $sql = "UPDATE main_test1 SET name = $test  WHERE id = 2;";


    В вашем случае во так
    $test = $_POST["test"];
    $sql = "UPDATE `main_test1` SET `name` = '$test'  WHERE id = 2;";
    Ответ написан
    3 комментария
  • Как проверить наличие фразы в начале текста php?

    IgorPI
    @IgorPI
    Решение

    $re = '/id(\d+)/';
    $str = 'id123';
    
    preg_match_all($re, $str, $matches, PREG_SET_ORDER, 0);
    
    // Print the entire match result
    var_dump($matches);
    Ответ написан
  • Почему if не срабатывает?

    IgorPI
    @IgorPI
    == это оператор сравнения, который сравнивает значение переменных
    === это оператор сравнения, который сравнивает значение переменных и тип данных
    Ответ написан
    Комментировать
  • Как правильно обработать большой JSON файл, расположенный на удаленном сервере?

    IgorPI
    @IgorPI
    Интересно, за каким это **** 15 GB в JSON.
    Стандартными средствами не прочитать.

    Как минимум нужно разбить данные, по 1 MB, можно чуть больше.

    json_decode и file_get_contents не осилят эту задачу.
    Я уверен, что у вас недостаточно памяти, для решения этой задачи.
    Даже если на сервере 30 GB, всё ровно не хватит, так как в "оперативке" данных будет гораздо больше.

    Нужно писать парсер, локально парсить и больше так не делать!

    Побайтное чтение файла.
    3 строчки кода на delphi.

    На данный момент, в одном проекте я работаю с файлом 1,5 GB
    И поверьте, что бы подсчитать количество строк в нём, требуется 2 часа как минимум,
    Учитывая характеристики ПК, где выполняется эта программа.
    Но я себя хорошо чувствую с побайтовым чтеним.
    Да хоть 100 GB, если файловая система позволяет.
    Ответ написан
    7 комментариев
  • Будет ли падение в производительности, если несколько "сервисов" (nginx + php-fpm) сделать в одном Dockerfile?

    IgorPI
    @IgorPI
    Docker-compose для этих целей.
    Само название говорит за себя "compose"

    Да хоть тысячу сервисов, главное что бы железо было.
    Ответ написан
    Комментировать
  • Авторизация php без sql db?

    IgorPI
    @IgorPI
    JWT

    Позволяет выдавать токены и выполнять их проверку.
    Токены хранить не нужно.

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

    Сам токен выглядит так
    eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiaWF0IjoxNTE2MjM5MDIyfQ.SflKxwRJSMeKKF2QT4fwpMeJf36POk6yJV_adQssw5c


    Он разделён на три части
    eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9 - Заголовок, информация об алгоритме и типе токена
    eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiaWF0IjoxNTE2MjM5MDIyfQ - Что-то от себя, любые данные
    SflKxwRJSMeKKF2QT4fwpMeJf36POk6yJV_adQssw5c - Подпись


    Подробнее
    Ответ написан
    Комментировать
  • Нужен ли JS в back-end на PHP?

    IgorPI
    @IgorPI
    JS используют везде где только можно!
    И на сервере и на клиенте, и можно вообще без PHP обойтись.
    Можно писать мобильные приложения.

    PHP занимает 80% рынка серверных приложений


    1.
    JavaScript в браузере.
    PHP на сервере.

    2.
    JavaScript в браузере.
    JavaScript на сервере.

    "Если ссаный хостинг"
    JavaScript в браузере.
    PHP на сервере.
    Ответ написан
    Комментировать
  • Как правильно спарсить на phpQuery и разложить все по полочкам?

    IgorPI
    @IgorPI
    Для того что бы все было по полочками.

    Создайте объект.

    Например:

    $Street = new stdClass();
    $Street->street_name = "Генерала Лизюкова";
    $Street->street_type = "улица";
    
    $City = new stdClass();
    $City->city_name = "Воронеж"
    
    $MyObjectItem = new stdClass();
    $MyObjectItem->street = $Street;
    $MyObjectItem->city = $City;
    
    $MyObject = new stdClass();
    
    $MyObject->count = 1;
    $MyObject->items = []; // Сюда положим объекты
    $MyObject->items[] = $MyObjectItem;
    
    file_put_contents('data.json', json_encode($MyObject));


    И да, вот это unset($array_kldr); совсем не обязательно!
    На случай если далее скрипт не предполагает выполнения!
    Лишние такты для освобождения памяти.
    Ответ написан
    Комментировать
  • Почему кириллица выводится в виде знаков вопроса?

    IgorPI
    @IgorPI
    Есть вероятность что сам file PHP не, utf 8
    Ответ написан
    Комментировать
  • Как проверить работоспособность сайта на новой версии php?

    IgorPI
    @IgorPI
    Есть вероятность что зависимости тоже для PHP 5.4

    Как проверить?

    Как минимум запустить.
    Ответ написан
    Комментировать
  • Как работает Наследование и область видимости в PHP?

    IgorPI
    @IgorPI
    Давай по порядку.
    По теме наследования.

    Небольшой пример.
    <?php
    
    
    namespace Engine;
    
    
    abstract class Foundation
    {
        /**
         * Арматура (mm)
         * Я не хочу что бы моя арматура торчала из моего фундамента
         * Поэтому принял решение что этот параметр не выйдет за пределы класса
         * @var integer
         */
        private $fittings = 15;
    
    
        /**
         * Балка
         * Балка будет видна, прежде чем я постелю полы
         * Я планирую ещё работать с полом и мне нужен доступ к балкам
         * Которые лежат на фундаменте
         * @var string
         */
        protected $beam = "Охренительно ровная балка";
    
    
        /**
         * Мне нужен доступ в подвал
         * Я так же могу получить доступ к своему фундаменту
         * И возможно подогнуть торчащу арматуру из моего горе фундамента
         * @var string
         */
        public $сellar = "Вход в погреб";
    
        /**
         * Foundation constructor.
         */
        public function __construct()
        {
            // Строю дом
        }
    }


    <?php
    
    
    namespace Engine;
    
    /**
     * Стены
     * Я наслудую базовый класс Foundation
     * У меня есть доступ к балке.
     * Но у меня нет доступа к арматуре
     * Арматура была залита бетоном.
     *
     * Class Walls
     * @package Engine
     */
    class Walls extends Foundation
    {
        /**
         * Окно
         * @var string
         */
        protected $window;
    
        /**
         * Дверь
         * @var string
         */
        protected $door;
    
        /**
         * Walls constructor.
         */
        public function __construct()
        {
            parent::__construct();
    
            $beam = $this->beam; // Пожалуй воспользуюсь балкой
        }
    
    
        // здесь что-то будем делать со стенами
    }


    <?php
    
    
    namespace Engine;
    
    
    /**
     * Крыша
     * Class Roof
     * @package Engine
     */
    class Roof extends Walls
    {
        /**
         * Roof constructor.
         */
        public function __construct()
        {
            parent::__construct();
            // Я всё ещё имею к ним доступ, но только внутри класса
            $this->beam;
            $this->door;
            $this->window;
            $this->сellar;
        }
    }


    Строю дом, но у меня есть только доступ к подвалу (((
    $home = new Walls();
    $home->сellar;


    Не умею стоить дома.

    Прилагаю диаграмму
    5d6d9b8e96b10054415644.png

    Наследование классов можно сравнить с наследованием в жизни, от отца к сыну./
    У тебя или есть наследство
    Или нет
    Или есть, но ты воспользоваться не можешь.

    Главное что есть вход в подвал!
    Это важно!
    Ответ написан
    3 комментария
  • Как ограничить добавление в базу Mysql уже имеющегося элемента?

    IgorPI
    @IgorPI
    Коллега, для того что бы быть уверенным на 100%, что бы данные в таблице были разные.
    Можно следующее:
    Использовать unique key (Уникальный ключ) для одного или групп полей
    Ответ написан
  • Как создать ассоциативный массив без нумерации?

    IgorPI
    @IgorPI
    Пример на Json'e, То что получается


    Удивительно, каким это образом получается невалидный JSON

    Это не правильный JSON
    {"0": {"STEAM_0:1:421410864": 2}, {"STEAM_0:1:27660088": 1}}


    Вот это правильный JSON
    {
      "0": [
        {
          "STEAM_0:1:421410864": 2
        },
        {
          "STEAM_0:1:27660088": 1
        }
      ]
    }


    Создавайте массив объектов, так как свойства у вас динамические.
    Что если вам нужно будет добавить ещё какое-нибудь свойство?
    Вот что вам нужно, с точки зрения правильной логики
    [
      {
        "STEAM_0:1:421410864": 1
      },
      {
        "STEAM_0:0:109168821": 0
      },
      {
        "STEAM_0:0:138268647": 2
      }
    ]


    На случай расширения
    [
      {
        "STEAM_0:1:421410864": 1,
        "balance": "500"
      },
      {
        "STEAM_0:0:109168821": 0,
        "balance": "129"
      },
      {
        "STEAM_0:0:138268647": 2,
        "balance": "100"
      }
    ]


    Да, свойства тоже можно перебрать в цикле, но вы лишаете себя использовать функции для работы с массивами.
    Ответ написан
    Комментировать
  • Как обратиться к членам класса через конструктор (new Class()->method())?

    IgorPI
    @IgorPI
    Согласно ТС.
    Class User {
    public function __construct(){
    return $this;
    }
    
    public function myMethod (){
    
    return $this;
    
    }
    }


    По существу.
    Есть Паттерн singleton.
    Только там нужно создать статический метод и приватноне статическое свойство.

    Метод должен при необходимости создавать объект в приватное свойство и возвращать его.

    Так же объявить приватный конструктор.
    Ответ написан
  • Организовать структуру хранения контроллеров?

    IgorPI
    @IgorPI
    Храните контроллеры как вам удобно.
    Умеренная декомпозиция, контроллерам не навредит.

    Конечно, если в контроллере чёрт ногу сломит, то лучше разбить на части.
    Ещё один момент.
    Зачем инициализировать дополнительные строки кода которые не будут использоваться в данный момент. Это очен важно!

    Сами понимаете, если кода меньше то и интерпретатору будет легче работать.

    Это как если бы вы взяли 5 мешков цемента по 20 кг, когда вам нужен один, но в будущем понадобятся и другие.
    Потом можно сходить за цементом. Пока берём один мешок.

    Merci
    Ответ написан
    Комментировать
  • Существует ли простое решение такой задачи?

    IgorPI
    @IgorPI
    В общем всё понятно.
    Все манипуляции делайте в реляционной базе данных.
    Если вам нужно что-то посчитать, сравнить, хранить.

    В конце концов, вам же нужно хранить эти данные.
    И по-хорошему из можно вообще не доставать из базы.
    Ответ написан
  • Как понять структуру классов (объектов) в CMS?

    IgorPI
    @IgorPI
    Открываем проект в phpstorm.
    В некоторых случаях получится построить диаграмму связей классов.
    Устанавливаем расширение xdebug для php.
    Настраиваем отладку в phpstorm.
    Например кликаем на кнопку "Добавить в корзину"
    И понеслась...
    Ответ написан
    Комментировать
  • Как отправить форму через ajax и правильно ёё принять?

    IgorPI
    @IgorPI
    var settings = {
      "async": true,
      "crossDomain": true,
      "url": "http://api.srm.local/product.add",
      "method": "POST",
      "headers": {
        "Content-Type": "application/x-www-form-urlencoded",
        "cache-control": "no-cache"
      },
      "data": {
        "product_type": "1",
        "name": "Название моего замечательного продукта",
        "unique_code": "DR132",
        "product_pricing": "{\"type\":\"fixed\",\"price\":\"100.00\"}",
        "advertised_price": "100",
        "count_min": "1",
        "count_max": "1",
        "short_description": "Краткое описание",
        "long_description": "Длинное описание",
        "extras": "19,20,21",
        "quantity_label": "{\"singular\":\"Пассажир\",\"plural\":\"Пассажиры\"}",
        "images": [
          "1,3",
          "1,2,3"
        ],
        "terms_use": [
          "Какие-то условия...",
          "Мои особые условия"
        ],
        "options": "{}"
      }
    }
    
    $.ajax(settings).done(function (response) {
      console.log(response);
    });
    Ответ написан
    Комментировать
  • Как вывести данные из базы в формате JSON (с помощью php)?

    IgorPI
    @IgorPI
    Хотите сложную структуру в виде иерархии, используйте ORM.

    Мне кажется, так даже быстрее и качественней.
    Ответ написан