• Функция php setcookie то работает, что нет?

    ThunderCat
    @ThunderCat Куратор тега PHP
    {PHP, MySql, HTML, JS, CSS} developer
    Варианта 2: Пробел/перенос строки после ?>, или файл записанный с BOM. Первое лечится удалением лишних символов, второе через редактор кода - файл-кодировка-утф без бом.
    Ответ написан
    Комментировать
  • Как убрать вывод нуля при $amount = 1?

    sergiks
    @sergiks Куратор тега PHP
    ♬♬
    Округление дело такое. При коэффециенте 0.25 как ни округляй, будет 0 для $amount < 2

    refactor
    $rand = mt_rand(1, 1000);
    $bad = '...';
    
    if ($rand < 150) {
        $k = 1;
        $message = '$ (x0) ❌';
    } elseif ($rand < 300) {
        $k = 0.75;
        $message = "$ (x0.25) $bad";
    } elseif ($rand < 450) {
        $k = 0.5;
        $message = "$ (x0.5) $bad";
    } elseif ($rand < 600) {
        $k = 0.25;
        $message = "$ (x0.75) $bad";
    }
    
    $delta = round($amount * k);
    $res = $user->balance - $delta;
    $restxt = 'Вы проиграли ' . number_format($delta, 0, '', '.') . $message;


    Если "бизнес-логика" настолько странная, что и округлять в меньшую сторону, и сделать исключение для 1 и только для неё, то
    $delta = $amount === 1 ? max(1, floor($amount * k)) : floor($amount * $k);
    но следующий вопрос будет «а вот 2 при $k === 0.25 тоже округляется до 0»
    Ответ написан
    1 комментарий
  • Почему поступает пустой запрос, и выдает ошибку?

    Rsa97
    @Rsa97
    Для правильного вопроса надо знать половину ответа
    Бросайте вы эти видеоуроки, они вас плохому научат.
    1. Не надо напрямую подставлять переменные в запрос, для этого есть плейсхолдеры. Читать про SQL Injection.
    2. Не надо руками ловить ошибки mysqli. Надо устанавливать правильные опции при подключении. Читать https://habr.com/ru/post/662523/
    3. Если уж вы ловите ошибки самостоятельно, то выводите полный текст ошибки, а не просто паническое "Ой, что-то случилось!".
    4. Не надо хранить в своей базе данные кредитных карт клиентов, да ещё и вместе с CVV. Учитывая пункт 1, это всё равно, что писать их на заборе. Читать про PCI DSS.
    Ответ написан
    4 комментария
  • Как правильно объединить две таблицы?

    @alexalexes
    в гугле решения найти не смог

    sql join

    redbeanphp

    Научитесь сначала использовать базовый набор функций работы с СУБД:
    либо mysqli, либо PDO. Не нужно использовать ORM-ки на начальном этапе обучения.
    Ответ написан
    1 комментарий
  • Как упорядочить id записей в MySQL?

    @Akina
    Сетевой и системный админ, SQL-программист.
    Если речь об автоинкрементном поле-первичном ключе, то забудь про сию хотелку, и чем скорее, тем лучше.

    PRIMARY KEY выполняет в таблице только одну функцию - однозначно идентифицирует запись. В нормальных условиях значение такого поля используется исключительно для связывания данных (установления соответствия), и надобности видеть значение этого поля не существует в принципе.

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

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

    sergey-gornostaev
    @sergey-gornostaev
    Седой и строгий
    Согласится на низкооплачиваемую стажировку, получить год опыта, а заодно подтянуть себя с просто верстальщика до фронтендера.
    Ответ написан
    Комментировать
  • Как исправить ошибку Parse error: syntax error, unexpected 'if' (T_IF) in C:\OSPanel\domains\Game.loc\logreg.php on line 29?

    alexey-m-ukolov
    @alexey-m-ukolov Куратор тега PHP
    • Конструкция else по определению не принимает никаких дополнительных проверок.
    • Результат isset бессмысленно сравнивать со строкой.
    • В isset($dt[`password1`] не закрыта скобка.
    • Вместо бэктиков нужно использовать нормальные кавычки.


    Вооружитесь учебником и PhpStorm, тогда никакие ошибки парсинга вам не будут страшны.

    Олдскулы

    $type = array_key_exists('type', $_GET) ? $_GET['type'] : null;
    
    if ($type === 'logging') {
        if (isset($dt['login'], $dt['password'])) {
        }
    } elseif ($type === 'register') {
        if (isset($dt['login'], $dt['password1'], $dt['password2'], $dt['nickname']))) {
        }
    }
    
    // Вместо if-elseif может быть использован switch, если логика позволяет и читаемость не будет страдать


    Современность
    $type = $_GET['type'] ?? null;
    Ответ написан
    1 комментарий
  • Как исправить ошибку 500 Internal Server Error?

    kotomyava
    @kotomyava
    Системный администратор
    В таком виде на вопрос не ответить. Причина может быть любой.
    Надо смотреть логи веб сервера, на предмет того, что собственно вызывает ошибку. Дальше решать найденную проблему.
    Ответ написан
    Комментировать
  • Как правильно сделать запрос в бд?

    ipatiev
    @ipatiev
    Потомок старинного рода Ипатьевых-Колотитьевых
    Я даже не представляю, сколько раз на этот запрос здесь уже отвечали. Но разве ж тут что найдёшь...
    WHERE date BETWEEN '2021-10-01 00:00:00' and '2021-10-30 23:59:59'
    Ответ написан
    8 комментариев
  • Как вывести все остальные поля при операции GROUP BY?

    @Akina
    Сетевой и системный админ, SQL-программист.
    WITH cte AS (
        SELECT *, ROW_NUMBER() OVER (PARTITION BY user_id ORDER BY score DESC) rn
        FROM source_table
    )
    SELECT *
    FROM cte
    WHERE rn = 1
    -- ORDER BY score DESC LIMIT nnn
    ;
    Ответ написан
    Комментировать
  • Не могу выполнить sql INSERT yii2 mssql, как правильно составить INSERT?

    star52
    @star52
    Программист
    Ну так у вас в запросе на вставку ни одна строка получается, а 2 строки по два столбца.
    Во вторых у вас ' после Test.dbo.drivers , так надо?

    Test.dbo.drivers и Test.dbo.sprCar_Info каким образом соотносятся? Вы пытаетесь из двух разных таблиц взять по 2 столбца и соединить в третей Test.dbo.tb_info?

    Вот так, на месте знаков вопроса поставьте поле по которому можно объединить таблицы
    INSERT INTO  Test.dbo.tb_info (Driverid,CarCode,CarNumber,CarMark)
    SELECT 
    d.Driverid,d.CarCode, ci.CarNumber, ci.CarMark
    FROM
        Test.dbo.drivers d
        INNER JOIN Test.dbo.sprCar_Info ci ON ci.??? = d.???
    Ответ написан
    2 комментария
  • Cтоит ли использовать новостной движок CUTENEWS.RU?

    ThunderCat
    @ThunderCat Куратор тега PHP
    {PHP, MySql, HTML, JS, CSS} developer
    Cтоит ли использовать новостной движок CUTENEWS.RU?
    В общем случае - нет, движки без поддержки сообщества и без обновлений по сути бесполезны. По этому какой бы крутой движок не был "внутри", весь смысл в работе на постоянной основе и поддержке, а это без распространенности не бывает. Так что ответ - не стоит.

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

    den_rad
    @den_rad
    PHP разработчик
    Для начала стоит разобраться, сайт медленно работает из-за передачи данных (медленный канал), большой нагрузки на PHP или нагрузки на базу данных ?
    Ускорить загрузку можно, если пустить сайт через Cloudflare, например.
    Посмотреть, сколько времени генерируется страница можно с помощью профилирования
    Ответ написан
    Комментировать
  • Как вывести текст в консоль браузера через PHP?

    delphinpro
    @delphinpro Куратор тега PHP
    frontend developer
    function consoleLogFromPhp() {
      fetch("scripts/consoleLogText.php")
        .then(response => response.text())
        .then(response => console.log(response));
    }


    <?php
    echo 'Hello World';
    Ответ написан
    Комментировать
  • Как перенести длинную строку в коде?

    Newto
    @Newto
    Практика писать
    $text = "text " . "$param" . "...";
    Весьма распространенная, к сожалению.
    Гораздо читабельней написать
    $text = "text {$param}...";
    Исходя из этого и измените вашу строку. Вот как выглядело бы начало:
    $send .= "sudo screen -dmS screen_name docker run {$user_container } {$memory_container}  -d -it --cpus '1' --memory={$mem}m"

    А там уже переносы строк ставьте где хотите.

    P.S. Фигурные скобки, обрамляющие переменные, не обязательны. Но они выделяют эти переменные зрительно, а так же выделяются в разных IDE(средах разработки, проще говоря редакторах кода).
    Ответ написан
    1 комментарий
  • Как обновить версию php на сервере,где расположен сайт на битриксе?

    toxa82
    @toxa82
    Как и для других сайтов. Ставишь новую версию пыхи, переключаешь апач/нджинкс на новую пыху. В зависимости от разницы между версиями, офигеваешь от сломанного сайта и ошибок. Откатываешься назад, ибо обычно просто так апнуть версию без изменения кода не получиться. Поднимаешь версию для разработки на тестовом сервере с новой пыхой, фиксишь/обновляешь код, потом выливаешь это на прод и обновляешь пыху снова. Если руки прямые и из плеч то должно получиться.
    Ответ написан
    Комментировать
  • Почему происходит редирект на несуществующую страницу в Битриксе?

    Во-первых нужно понять кто редиректит - битрикс или сервак. htaccess при этом может быть не при чем - может у вас там nginx?
    При переходе на поддомен должен открываться index.php в корне. Добавьте в него первой строкой <?die('index.php');
    И откройте поддомен - если увидите белую страницу с текстом index.php и никакое переадерсации не произойдёт - дело в битрикс. Двигайтесь дальше по потоку выполнения и ищите где у вас переадресация. init.php проверьте в первую очередь.

    Если будет редирект - значит он серверный. Разбирайте настройки сервера.
    Ответ написан
    Комментировать
  • Как округлять числа?

    delphinpro
    @delphinpro Куратор тега PHP
    frontend developer
    нет точного условия

    1256 => 1300, а почему не 1250?
    138 => 140, а почему не 100?

    ну а в целом, если нужно округление, например до сотен, то делим на 100, округляем и умножаем на сто.
    Ответ написан
    3 комментария
  • Как менять Title у сайта каждые 30 минут?

    ipatiev
    @ipatiev Куратор тега PHP
    Потомок старинного рода Ипатьевых-Колотитьевых
    $titles = [
        '7:00' =>  "Название сайта one",
        '7:30' =>  "Название сайта two",
    ];
    $half_hour = date('G:i', floor(time()/1800)*1800);
    echo $titles[$half_hour] ?? "Default title";
    Ответ написан
    2 комментария