Профиль пользователя заблокирован сроком с 10 апреля 2022 г. и навсегда по причине: систематические нарушения правил сервиса
  • Как заменить урлы всех страниц в определенной категории на алиасы из базы данных?

    FanatPHP
    @FanatPHP
    Чебуратор тега РНР
    Подсказка: на этот вопрос на этом сайте примерно 100500 ответов

    Конкретно по новостям никаких алиасов получать не надо.
    ссылка должна быть вида site.ru/news/12-istoriya-companii
    из нее надо получить только цифру 12
    Ответ написан
  • Есть ли готовые скрипты запуска sql-запроса по заданию?

    FanatPHP
    @FanatPHP
    Чебуратор тега РНР
    указывать конкретный сервер БД важно потому, потому что хотя сам язык SQL во многом стандартный, но в данном случае выполнять его будет база данных и поэтому важно знать - какая именно

    далее надо понять, что это не одна задача, а две
    ну то есть можно в и самой базе через Event Scheduler, как написал Акина, но в общем случае это две задачи

    1. научиться исполнять sql из консоли. для mysql это будет либо mysql -e"SQL query" либо mysql < file.sql
    2. разобраться, как в своей операционной системе запускать консольные команды по расписанию. в линуксе это крон, в винде это либо команда АТ, либо вот это вот убожество под названием "Планировщик задач"
    Ответ написан
    Комментировать
  • Можно ли текстовую переменную хранить в таблице Mysql?

    FanatPHP
    @FanatPHP
    Чебуратор тега РНР
    Забавно, что месяц назад ему уже отвечали на этот вопрос
    Но видимо у детей, воспитанных ютубой, память настолько короткая, что даже такие простые вещи не держатся
    Ответ написан
  • Как написать команду на bash, переименующую все файлы в каталоге в 0.bmp 1.bmp 2.bmp...?

    FanatPHP
    @FanatPHP
    Чебуратор тега РНР
    насчет питония не знаю, но на пхпе это одна строчка,
    php -r 'foreach(glob("*.bmp") as $i=>$file) rename($file, "$i.bmp");'
    Ответ написан
    Комментировать
  • PHP как привязать код к странице?

    FanatPHP
    @FanatPHP
    Чебуратор тега РНР
    сделать надо сначала хоть как-то, а потом уже искать "более элегантное" решение, если первоначальное не устроит.
    заодно можно будет задать осмысленный практический вопрос, а не транслировать невнятные фантазии.
    Ответ написан
    Комментировать
  • Как вывести текст на страницу PHP не привязывая PHP скрипт к странице?

    FanatPHP
    @FanatPHP
    Чебуратор тега РНР
    Налицо классическая проблема ХУ
    задавая очевидно дурацкий вопрос, надо всегда подробно описывать ситуацию, в которой он возник.
    если причины осмысленные, то решение всегда найдется
    если же нет, то тогда вам помогут переформулировать проблему

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

    FanatPHP
    @FanatPHP
    Чебуратор тега РНР
    никак. на сервере его нет
    Ответ написан
    2 комментария
  • Выборочный вывод данных из массива foreach?

    FanatPHP
    @FanatPHP
    Чебуратор тега РНР
    Для начала надо открыть для себя то, как работает РНР.
    И в частности, что во момент клика никакого массива уже давно нет.
    Потому что клик делается в браузере, а РНР работает на сервере.

    После этого надо решить для себя, либо мы заранее все подробности заполняем для попапа, и тогда это вопрос чисто про HTML
    либо подтягиваем динамически, но тогда это вопрос не про "массивы", а про аякс и отдельный запрос к серверу.
    Ответ написан
    Комментировать
  • Как добавить в начало массива сумму элементов?

    FanatPHP
    @FanatPHP
    Чебуратор тега РНР
    1. посчитать сумму. в цикле, как обычно.
    2. погуглить, как добавить строку в начало массива
    3. добавить строку в начало массива
    Ответ написан
  • Как обойти два массива с условием?

    FanatPHP
    @FanatPHP
    Чебуратор тега РНР
    перед началом цикла сбрасывать флаг
    если совпадение найдено, то взводить флаг
    по окончании цикла проверять флаг

    но вообще это все делается не так.
    при создании массивов они индексируются не цЫферками по порядку, а по id
    и тогда цтився проверка сводится к
    if (isset($admins[$user->id]) {
    } else {
    }

    }
    Ответ написан
    Комментировать
  • Как убрать экранирование из JSON?

    FanatPHP
    @FanatPHP
    Чебуратор тега РНР
    к json_encode эта проблема никакого отношения не имеет.
    где-то добавляется дополнительное экранирование.
    надо найти тот говнокод, который его добавляет, и убрать

    и заодно научиться проверять свой код перед тем как писать вопрос на тостер
    Ответ написан
  • SUM столбца чисел с запятой?

    FanatPHP
    @FanatPHP
    Чебуратор тега РНР
    Если данные должны суммироваться, то никакой запятой в них быть не должно. Десятичный разделитель для данных в mysql - ТОЧКА.
    И числовые данные надо хранить в предназначенных для этого типах полей.
    Со списком можно ознакомиться в документации: https://dev.mysql.com/doc/refman/8.0/en/numeric-ty... и выбрать наиболее подходящий. Это может быть либо тип с фиксированной точкой (DECIMAL), либо с плавающей (FLOAT).
    Ответ написан
    9 комментариев
  • Как отправить с помощью mailer письмо, с нужной мне почты?

    FanatPHP
    @FanatPHP
    Чебуратор тега РНР
    Ну, если сам никак не можешь догадаться, то я подскажу: прописать в настройках пароль от этой почты.
    Можешь не благодарить
    Ответ написан
    Комментировать
  • Как провести соответствие между строкой и классом с точки зрения SOLID?

    FanatPHP
    @FanatPHP
    Чебуратор тега РНР
    Это всё очень плохо.
    В первом варианте человек должен знать, как мяукают кошки, а в последнем "правильном" варианте человек трогает не кошку, а кошачий голос(?!).
    В "идеальном" варианте опять же выбирается не животное, которое надо погладить, а его голос.

    Чтобы следовать принципам солид, надо понять в первую очередь ЗАЧЕМ это всё делается.
    А делается это для того чтобы уменьшить связность. Чтобы класс, использующий какой-либо функционал, не знал деталей его реализации. И, соответственно, мы могли бы менять реализацию без опасения поломать что-то в классе-пользователе.

    При этом extends, кроме как от абстрактного класса, эту связность всегда увеличивает.
    И его надо избегать. А использовать принцип Composition over inheritance. То есть нужный функционал получать не наследованием, а передачей независимых функциональных модулей в виде параметров.

    Соответственно, нам надо сделать иерархию: голос - животное - потрогать.
    И вот теперь у нас хоть голос, хоть животное, будут открыты для каких угодно изменений, до тех пор пока они поддерживают публичный контракт.
    / ******* голоса *******/
    abstract class VoiceEngine {
    	public function getVoice() {}
    }
    class CatVoiceEngine extends VoiceEngine {
    	public function getVoice() {
    		return "Meow!";
    	}
    }
    class DogVoiceEngine extends VoiceEngine {
    	public function getVoice() {
    		return "Bark!";
    	}
    }
    class HumanVoiceEngine extends VoiceEngine {
    	public function getVoice() {
    		return "Да пошёл ты!";
    	}
    }
    / ******* животные *******/
    abstract class Animal {
    	public function __construct(public VoiceEngine $voiceEngine) {}
    	public function say() {
    		echo $this->voiceEngine->getVoice();
    	}
    }
    class Cat extends Animal{}
    class Dog extends Animal{}
    class Human extends Animal{
    	public function touchAnimal(Animal $animal) {
    		$animal->say();
    	}
    }
    / ******* исполнение *******/
    $cat = new Cat(new CatVoiceEngine());
    $dog = new Dog(new DogVoiceEngine());
    $human = new Human(new HumanVoiceEngine());
    $human->touchAnimal($cat);
    $human->touchAnimal($dog);
    $human->touchAnimal($human);


    После того как я, раздуваясь от гордости, написал этот ответ, до меня вдруг дошло что на вопрос-то я так и не ответил.
    Соответственно, задачу выбора животного возлагаем на отдельную сущность:

    class AnimalFactory {
        public static function create($type) {
            return match($type) {
                'cat' => new Cat(new CatVoiceEngine()),
                'dog' => new Dog(new DogVoiceEngine()),
                'human' => new Human(new HumanVoiceEngine()),
            };
        }
    }
    $human = new Human(new HumanVoiceEngine());
    $human->touchAnimal(AnimalFactory::create('cat'));

    В итоге мы вернулись к тому же кейсу (match - это улучшенный case), но при этом у нас всё разделено, и каждый класс занимается строго своим делом.
    Ответ написан
  • Как исправить ошибку PHP Notice: Undefined variable?

    FanatPHP
    @FanatPHP
    Чебуратор тега РНР
    Undefined variable в переводе с английского означает, что такой переменной нет.
    Это значит что ошибка в логике, попытка вывести переменную, которой не было присвоено никакое значение.
    Соответственно, эту логическую ошибку надо исправить - либо присвоить какое-то значение, либо не выводить.
    Ответ написан
    Комментировать
  • Можно ли взять разметку из .txt и разместить её с помощью php?

    FanatPHP
    @FanatPHP
    Чебуратор тега РНР
    Ну что ж вы все никогда не читаете вопрос до конца?
    Видно же, что у нашего укуренного горемыки проблема не в том, чтобы прочитать файл, а в том что HTML не рендерится. То есть он его выводит не в браузер, ну или как-то ещё наступил себе на причинное место, и сойти не может.
    Я думаю, он утром проспится, и решит эту ужасно загадочную проблему.
    Ответ написан
  • Изучения языка BASH в 2022. Книги 2003 подходят?

    FanatPHP
    @FanatPHP
    Чебуратор тега РНР
    подходят.
    не изменился
    Ответ написан
    Комментировать
  • Как обрезать изображение перед его загрузкой на сервер?

    FanatPHP
    @FanatPHP
    Чебуратор тега РНР
    Здесь столько мусора в голове, что не знаешь даже за что вперёд хвататься
    То ли рассказывать про такую штуку, как интернет, и о том что в нем полно готовых ответов на вопросы
    То ли намекнуть про то, что РНР исполняется на сервере, то есть использовать РНР "перед тем как картинка загрузится" на сервер несколько проблематично.
    То ли совсем расстроить человека, открыв ему страшную тайну: у реального сайта бывает много пользователей, и каждый сидит за своим компьютером. А не все вместе на одном стуле перед компиком нашего горе-программиста. И им вряд ли нужен скриншот экрана сервера. У которого и экрана-то обычно и вовсе нет
    Ответ написан
    2 комментария
  • Как сгенерировать UUID из e-mail?

    FanatPHP
    @FanatPHP
    Чебуратор тега РНР
    Какая забавная коллекция заблуждений.

    • Композер - это программа на РНР. Если можно использовать РНР, то можно использовать и композер.
    • Библиотека ramsey/uuid - это набор РНР файлов. Которые, хотя и правильнее устанавливать и обновлять через композер, можно, тем не менее, скопировать на сервер точно так же, как копируются все другие файлы.
    • Необходимости делать UUID на основе емейла нет практически никакой. Обычный v4 прекрасно подойдет
    Ответ написан
    7 комментариев