Задать вопрос
  • Как словить и прочитать http запрос?

    FanatPHP
    @FanatPHP
    Чебуратор тега РНР
    Приветствую.
    Каждый сайт во всемирной сети вэвэвэ делает то же самое.
    Каждый.
    Это одна из самых часто встречающихся задач в веб-разработке.
    В интернете есть миллионы примеров, как это сделать.

    Попробуйте раз в жизни воспользоваться поиском.
    Ответ написан
    2 комментария
  • Почему значение даты на php записывается задом на перёд, какие исторический предпосылки обусловили этот феномен?

    FanatPHP
    @FanatPHP
    Чебуратор тега РНР
    Записывать дату в РНР можно практически в любом формате. Хоть 12/12/12
    А вот сравнивать значения можно только тогда, когда старшие разряды идут впереди младших. В частности, строки, содержащие дату, можно сравнивать и сортировать только в формате "задом наперёд". Что делает её очень удобной. Например при именовании папочек с фоточками на домашнем компе

    Ну и как правильно отмечено выше, здесь ничего не записывается, а просто выводится. То есть вопрос к тому, кто выводит.
    Ответ написан
    Комментировать
  • Как переписать подключение к базе данных, по принципам ООП?

    FanatPHP
    @FanatPHP
    Чебуратор тега РНР
    Никак.
    Это не стёб и не троллинг. Это единственный возможный ответ на этот хороший, в сущности, вопрос.

    ООП - это не картина, которую купил и на стенку повесил, для красоты.
    Это инструмент для решения какой-либо задачи.
    Если задачи нет, то и ООП применять не следует.

    в данном случае перед ООП надо выучить куда более базовые вещи.
    Например научиться применять готовые классы, такие как mysqli
    узнать почему за использование @ программистам в аду льют кипяток на самые нежные части тела
    выучить что exit('Ошибка подключения'); - это говнокод
    ну и открыть для себя разделение логики работы с данными и логики отображения. То есть сначала получить все данные, а потом только выводить.

    Эту страницу можно переписать в соответствии с принципами аккуратного кода

    Сначала сделать файл config.php.
    Этот файл можно будет исключить из системы контроля версий и таким образом иметь на каждом сервере свой

    <?php
    return [
        'db' => [
            'host' => '127.0.0.1',
            'port' => 3306,
            'db'   => 'pizza',
            'user' => 'root',
            'pass' => '',
            'charset' => 'utf8mb4',
        ]
    ];

    потом сделать файл mysqli.php
    Этот файл можно будет включать во все скрипты, которым нужно соединение с БД
    <?php
    mysqli_report(MYSQLI_REPORT_ERROR | MYSQLI_REPORT_STRICT);
    $db = new mysqli(
        $config['db']['host'], 
        $config['db']['user'], 
        $config['db']['pass'], 
        $config['db']['db'], 
        $config['db']['port']
    );
    $db->set_charset($config['db']['charset']);
    $db->options(MYSQLI_OPT_INT_AND_FLOAT_NATIVE, 1);


    Потом сделать страницу pizza.tpl.php в которую поместить весь HTML
    .
                <select id="single" class="form-control" name = '1234' >
                    <option value="" disabled selected style='display:none;'>выберите тип</option>
                    <?php foreach($types as $object): ?>
                        <option value ="<?=$object['id']?>"><?=$object['name']?></option>
                     <?php endforeach ?>
                </select>


    И потом сделать страницу pizza.php на которой собрать это всё вместе
    <?php
    $config = require 'config.php';
    require 'mysqli.php';
    
    $sql="SELECT * FROM pizza";
    $types=$db->query($sql)->fetch_all(MYSQLI_ASSOC);
    
    include 'pizza.tpl.php';


    После этого можно будет потихоньку приглядываться к ООП.
    Например сделать класс pizzaModel
    Но делать его будет иметь смысл только тогда, когда мы будем знать, какие еще действия с пиццей будет производить этот код
    Ответ написан
    5 комментариев
  • Пагинация через Rest API?

    AlexNest
    @AlexNest
    Работаю с Python/Django
    Пробовал писать подобные функции, но url никак не меняется.

    А как они поменяются, если они захардкожены (т.е. 'https://reqres.in/api/users?page=1' всегда будет отправлять на первую страницу. Нужно формировать ссылку динамически: например
    function fetch_data(page) { // Номер страницы
    	const getProducts = async () => {
    		const obj = await fetch('https://reqres.in/api/users?page=' + page); //
    		const result = await obj.json();
    
    	}
    }
    fetch_data(1);
    fetch_data(2);
    fetch_data(315);
    Ответ написан
    Комментировать
  • Как на PHP по формату даты 00.00.0000 вывести текстом, типа "second saturday of february"?

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

    Это же все смехотворные задачи, каждая из которых решается за 30 секунд

    Ох, я забыл про last. Может быть, это и является арифметическим камнем преткновения? ;-)
    Ответ написан
    Комментировать
  • Нужно ли изучать PUG и насколько он эффективен?

    DevMan
    @DevMan
    нет ничего НУЖНОГО.
    есть только то, что РЕШАЕТ поставленные задачи.

    он тебе помогает? нужен!
    я спокойно обхожусь без него.

    сейчас мало кто обходится голой вёрсткой: или spa, или server-side.
    и там и там есть свои шаблонизаторы. корячить туда паг конечно можно, но, имхо, не уперлось.

    хотя может дать незначительный профит для прототипов. хотя и для них уже есть куча инструментов.
    Ответ написан
    1 комментарий
  • Почему WHERE не работает с диапазоном дат php?

    roswell
    @roswell
    и швец, и жнец, и на дуде игрец
    Следовало бы представить в запросе отметки дат как строковые данные, а не как литералы: 1))=>'2022-01-07', иначе они выродятся в целое число.
    Ответ написан
    4 комментария
  • Стоит ли использовать Blazor?

    profesor08
    @profesor08
    Неужели единственный плюс Blazor это c#?

    В точку.

    Далее по старой информации(если не ошибаюсь технология Wasm тогда толко развивалось) производительность blazor может быть лучше чем в React.js только в Firefox.

    Срочным делом надо разобраться и понять что такое WebAssembly и какие там ограничения. Приготовься в большому огорчению.
    Ответ написан
    Комментировать
  • Как переносятся базы данных Postgresql и Mysql?

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

    Stalker_RED
    @Stalker_RED
    JS тут не при чем, это особенности вычислений с плавающей запятой, и они описаны в стандарте IEEE 754, и именно так работает большинство процессоров.
    Если вы хотите чтобы работало "согласно ожиданиям", то есть варианты:
    1. подкорректировать свои ожидания, и работать как все.
    2. использовать библиотеки для всяких длинных арифметик и прочих повышенных точностей, платя за эту точность скоростью вычислений.
    3. использовать языки, которые будут маскировать проблему, округляя числа втихаря (и рисковать нарваться на неточности уже из-за этих округлений, ага).

    https://0.30000000000000004.com/ -- тут подробно, с примерами на разных языках.
    Ответ написан
    3 комментария
  • Разница в стримах коллекций и массива?

    @Akela_wolf
    Extreme Programmer
    Потому что в Java массивы и коллекции - это совершенно разные вещи (хоть и похожие по своему назначению). Массив, находится максимально близко к сишному массиву (разве что на джаве встроена проверка выхода за пределы, а в остальном - практически также). Соответственно, массив не может иметь своих методов, т.к. не является объектом (аналогично примитивным типам данных, по сути массив - это примитивный тип данных в Java). Коллекция же, наоборот, суть объект. Что и обуславливает разницу между ними. Эту разницу можно было бы сгладить на уровне языка, но во времена разработки Java не было понимания как удобнее сделать. А затем - бремя обратной совместимости пришлось нести через годы (аналогичная история приключилась с type erasure). Причем это настолько фундаментальная разница, существующая на уровне JVM, поэтому даже современные языки, например Kotlin, не в состоянии уйти от этой нее (так в Kotlin, класс Array не реализует интерфейс Iterable именно по этой причине).
    Ответ написан
    Комментировать
  • Как выходить из ситуации, когда 2 действия возвращают один результат?

    Immortal_pony
    @Immortal_pony Куратор тега PHP
    В первом случае должен быть код 400, а не 404.
    Ну и код будет красивее (на мой взгляд) выглядеть, если эту проверку вынести в начало, избавившись от else-спагеттин c помощью концепта "early return":

    // Валидируем 
    if (count($path) !== 3) {
        http_response_code(400); //  вот тут 400, потому что это корявый запрос, мы даже ничего и не искали
        die();    
    }
    
    // Получаем данные 
    $result  = getGesult();
    
    // Валидируем данные 
    if ($result !== true) { 
        http_response_code(404);
        die();    
    }
    
    // Дальше код, который выведет данные
    Ответ написан
    Комментировать
  • Не отправляются данные из формы в базу данных, что не так?

    FanatPHP
    @FanatPHP
    Чебуратор тега РНР
    ошибок и не будет
    потому что ПДО не настроен показывать ошибки
    чтобы настроить, вместо того говнокода который сейчас, должно быть примерно так (не забыть подставить свои значения)
    $host = '127.0.0.1';
    $db   = 'weekly_journal';
    $user = 'root';
    $pass = '';
    $port = "3306";
    $charset = 'utf8mb4';
    $options = [
        \PDO::ATTR_ERRMODE            => \PDO::ERRMODE_EXCEPTION,
        \PDO::ATTR_DEFAULT_FETCH_MODE => \PDO::FETCH_ASSOC,
        \PDO::ATTR_EMULATE_PREPARES   => false,
    ];
    $dsn = "mysql:host=$host;dbname=$db;charset=$charset;port=$port";
    $pdo = new \PDO($dsn, $user, $pass, $options);

    после этого если не получится записать, то БД сама скажет - почему.
    Ответ написан
    Комментировать
  • Удаление данных с жесткого диска для продажи?

    gbg
    @gbg
    Любые ответы на любые вопросы
    Если поставить Linux или BSD несколько раз на диски. Поставить и удалить, и заново поставить, то будет же уже другая файловая система, и возможности вытащить файлы даже программами (старые, которые были под Windows) не будет?

    Смысла большого нет, информация о старой ФС - это несколько байт в начале диска.

    Есть маленькая консольная программа sdelete которая умеет многократно затирать диски, ей и воспользуйтесь.
    Ответ написан
    1 комментарий
  • Как правильно отправлять почту через PHP?

    FanatPHP
    @FanatPHP
    Чебуратор тега РНР
    И снова в который раз я поражаюсь той вакханалии безнаказанности, с которой роскомнадзор блокирует интернет для отдельных граждан страны.
    Казалось бы - взял теги и заголовок вопроса, PHP ЭЛЕКТРОННАЯ ПОЧТА ПОЧТОВЫЙ СЕРВЕР Как правильно отправлять почту через PHP?
    и скопипастил в адресную строку своего браузера - что может быть проще?
    Но коварное полицейское государство не дремлет, и вместо результатов поиска показывает только товарища майора, грозно покачивающего пальцем.
    Ответ написан
    1 комментарий
  • Как прикреплять пользователей к проектам?

    BorLaze
    @BorLaze
    Java developer
    users <---> projects

    у одного пользователя один проект? one-to-one
    у одного пользователя больше одного проекта? one-to-many
    много пользователей на один проект? many-to-one
    каждый пользователь может иметь больше одного проекта, и на одном проекте может быть больше одного пользователя? many-to-many
    Ответ написан
  • Возможно ли прочитать с помощью php файл который находится на удаленном сервере?

    @rPman
    это basic http auth
    скачать можно простым file_get_contents а логин и пароль указать в самой ссылке в формате:
    https://login:password@site.com/...
    Ответ написан
    Комментировать
  • Как захешировать строку согласно ГОСТ 34.311, чтобы это была строка в base64?

    Rsa97
    @Rsa97
    Для правильного вопроса надо знать половину ответа
    А зачем нужны библиотеки?
    let data = '12345678901234567890123456789012';
    let base64data = Buffer.from(data).toString('base64');
    
    console.log(base64data); // MTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTI=
    Ответ написан
    Комментировать
  • Как правильно спроектировать замену классов?

    Fragster
    @Fragster
    помогло? отметь решением!
    Заменить классы на интерфейсы, передавать в "обработчик" экземпляр класса, реализующего интерфейс параметром. https://habr.com/ru/post/350068/
    Ответ написан
    3 комментария