• Почему не получается кольцо из точек координат при расчете?

    @Alk90 Автор вопроса
    php, mysql, jquery, css, html, api
    Разобрался сам.
    Для тех, кто будет искать: функция point принимает значения координат вот так: point(`lng`, `lat`)
    А координаты выдаваемые гуглом на картах пишутся наоборот: lat, lng
    поменял местами числа 55.754958 и 37.622650 - все заработало нормально
    Ответ написан
    2 комментария
  • Не могу понять для чего нужны Entities в ООП PHP, Yii?

    @Alk90
    php, mysql, jquery, css, html, api
    Что-то какие-то замудреные ответы вокруг да около. Ничего конкретного...
    Многие уже написали: "Entity" это сущность. Но никто так и не объяснил для чего... попробую вставить свои 5 копеек. Ну и мой ответ не будет привязан к Yii. как уже сказали там используется другой подход.

    Как уже сказали Entity представляет сущность, например пользователь.
    Итак, Entity у нас это пользователь. Мы знаем что у пользователя в любом случае есть идентификатор, имя, фамилия. Думаю, для примера хватит.
    Так вот.
    Когда вы достали данные из базы в некой модели пользователей, что вы сможете сделать? Ну допустим положить их в массив и в нужный момент вывести как вам угодно, но... по мере роста проекта, пользователь должен будет выводиться в разных частях веб приложения. В одном месте достаточно имени, в другом месте достаточно фамилии, а где-то нужно фамилия и имя. Допустим в БД вы будете хранить имя и фамилию в отдельных столбцах.

    И смотрите что получается. Если у вас есть комментарии и там нужно вывести "имя фамилия", так же есть страница подписчики. Там тоже нужно вывести "имя фамилия". И там и там выводится один пользователь, но внешний вид вывода будет разным. И если пойти по способу "данные в массиве". То для каждого вывода вам нужно будет делать что-то подобное:
    echo $user['name'].' '.$user['last_name'];

    А таких выводов может быть десятки.
    Но если вы вместо массива будете использовать объект (класс) user
    То внутри вам достаточно создать метод:
    public function getFullName(){
       return $this->name.' '.$this->last_name
    }


    Теперь во всем приложении и в любом файле вы будете знать, что у вас есть метод, который выведет имя и фамилию. Поэтому этот объект вы можете передавать куда угодно. Например в любое из десятков представлений (views) которые будут уверены в существовании одного метода.

    И когда вы решите поменять местами и писать "фамилия имя" во всем приложении. Вам достаточно будет поменять это в методе getFullName()
    Ответ написан
    Комментировать
  • Как обновить сессию при хите?

    @Alk90
    php, mysql, jquery, css, html, api
    session_regenerate_id ([ bool $delete_old_session = FALSE ] )
    Сессия в куках обновится сама
    Ответ написан
    Комментировать
  • Как сделать выдачу товаров?

    @Alk90
    php, mysql, jquery, css, html, api
    // разбиваем на строки
    $textarea = str_replace("\r", "", $_POST['textarea']);
    $textarea = preg_replace("/[\n+]/is", "\n", $textarea);
    $lines = explode("\n", $textarea);
    
    $query = 'INSERT INTO `table` (`text`) VALUES("'.implode('"), ("', $lines).'");'
    $db->query($query);


    Само собой не забываем делать проверки и удалять лишнее
    Ответ написан
    1 комментарий
  • Как при наведение изменить свойства элемента?

    @Alk90
    php, mysql, jquery, css, html, api
    Ответ написан
    Комментировать
  • Как правильно искать совпадение по словам в php?

    @Alk90
    php, mysql, jquery, css, html, api
    Вряд ли есть необходимость брать весь диалог, из-за возможности встречающихся ключевых слов в процессе разговора, не относящихся к сути обращения.
    Имеет смысл взять только первое сообщение от клиента, в котором он излагал суть обращения. А значит сократить объем обрабатываемых данных. Если нет, то не сильно это усложнит обработку, если обрабатывать все сообщения, даже если их миллионы - Это же одиночная обработка. Дальше вы будуте обрабатывать новые входящие обращения на лету. Значит:
    1. Выбрать первые сообщения всех диалогов из БД. (можно с использованием limit и пометкой после обработки, что этот диалог уже обработан).
    2. Циклом пробегаетесь по всем полученным данным. Внутри цикла foreach с массивом ключевых слов а внутри foreach функция stripos(). если есть совпадение с ключевым словом - кидаем в массив совпадений ID диалога и ID ключевого слова.
    3. После прохождения всех диалогов. Записываете в отдельную таблицу ID диалогов и ключевых слов одним запросом.

    Далее все новые вопросы обрабатываете таким же способом. А список диалогов получаете так же как и получали, но уже с использованием JOINа к новой таблице, чтобы вывести соответствующие пометки
    Ответ написан
    Комментировать
  • Не блокирующие стили без отображения голого html?

    @Alk90
    php, mysql, jquery, css, html, api
    Единственный вариант - вынести основные стили элементов в отдельный файл и загружать его не обращая внимание на Speed Test. Такие элементы как стили кнопок, ajax форм и прочего уже грузите в конце страницы. Но я не стал бы так заморачиваться, если там не значительное количество стилей...
    А вообще, не обращайте внимание на замечание Speed Test, если это исправляется только прыганием страницы или еще какими-то не удобствами для пользователя...
    У меня на всех сайтах CSS стоит в хедере (так же как и у вас 90-120кб). Но Speed Test пишет 95% скорости загрузки.
    Более того, браузеру проще накладывать DOM уже поверх существующих стилей, чем после подгрузки стилей пробегать по всему DOM для их применения. Это можно заметить и в Speed Test. Пробовал на нескольких сайтах... Если подключение css находится в конце документа, то Speed Test показывает меньшую скорость, чем когда он находится вверху.
    Ответ написан
    Комментировать