Задать вопрос
Ответы пользователя по тегу PHP
  • Почему не отправляет формы в телеграм?

    pickHabr
    @pickHabr
    Костыльных дел мастер
    Возьми curl (а лучше сразу guzzle) вместо fopen и читай нормальные http ошибки, там все напишут
    Ответ написан
    Комментировать
  • Почему неправильно работает код?

    pickHabr
    @pickHabr
    Костыльных дел мастер
    Почему-то ничего не выводит, если вводишь диапазон дат для Козерога.

    Потому что условие
    $birthday >= (int)date('z', mktime(0, 0, 0, 12, 22, $currentYear)) && $birthday <= (int)date('z', mktime(0, 0, 0, 1, 19, $currentYear))
    для даты 1991-12-22 будет выглядить так: 358 >= 356 И 358 <= 18

    Можно в тупую проверить козерогов в начале года отдельно от козерогов в конце года
    case ($birthday >= (int)date('z', mktime(0, 0, 0, 12, 22, $currentYear)) && $birthday <= (int)date('z', mktime(0, 0, 0, 12, 31, $currentYear))):
            echo "Козероги: $horoscopes[Козероги]";
            break;
        case ($birthday >= (int)date('z', mktime(0, 0, 0, 1, 1, $currentYear)) && $birthday <= (int)date('z', mktime(0, 0, 0, 1, 19, $currentYear))):
            echo "Козероги: $horoscopes[Козероги]";
            break;


    Еще можно доработать код:
    function getZodiacSign($date) {
        $zodiacSigns = [
            ['Козерог', '01-01', '01-19'],
            ['Водолей', '01-20', '02-18'],
            ['Рыбы', '02-19', '03-20'],
            ['Овен', '03-21', '04-19'],
            ['Телец', '04-20', '05-20'],
            ['Близнецы', '05-21', '06-20'],
            ['Рак', '06-21', '07-22'],
            ['Лев', '07-23', '08-22'],
            ['Дева', '08-23', '09-22'],
            ['Весы', '09-23', '10-22'],
            ['Скорпион', '10-23', '11-21'],
            ['Стрелец', '11-22', '12-21'],
            ['Козерог', '12-22', '12-31']
        ];
    
        $birthDate = date('m-d', strtotime($date));
    
        foreach ($zodiacSigns as $sign) {
            // Тут 0, 1, 2 не очень хороший код, можешь улучшить его самостоятельно, для примера сойдет
            if ($birthDate >= $sign[1] && $birthDate <= $sign[2]) {
                return $sign[0];
            }
        }
    
        return null;
    }
    
    if (isset($_GET['birthday'])) {
        if ($_GET['birthday'] === '') {
            echo 'Вы не выбрали дату рождения!';
        } else {
            $res = getZodiacSign($_GET['birthday']);
            echo $horoscopes[$res] ?? "error";
        }
    }
    Ответ написан
    Комментировать
  • Почему код некорректно работает с кириллицей?

    pickHabr
    @pickHabr
    Костыльных дел мастер
    Потому что кириллица, когда ты берешь $uniqueSymbols[$i] ты берешь не итую букву, а итый байт

    $letter = mb_substr($uniqueSymbols, $i, 1);
    echo $letter .' - '. round((mb_substr_count($string, $letter) / mb_strlen($string)) * 100, 1) . ' %<br><br>';
    Ответ написан
    1 комментарий
  • Как можно отследить изменение файлов в директории?

    pickHabr
    @pickHabr
    Костыльных дел мастер
    В общем на PHP есть вот такой вариант https://habr.com/ru/articles/213895/
    Если не обязательно PHP то есть вот такое https://github.com/SpartanJ/efsw

    Если файлы таки меняются посредством http запросов, то просто делаешь класс слушателя и в нужных API методах дергаешь событие. Для Laravel https://laravel.com/docs/11.x/events, если на чистом PHP, то вызываешь в API метод который положит, нужные для обработки изменений, данные в очередь (например на редисе) и рядом делаешь демон, который из очереди будет вычитывать и что-то с этим делать
    Ответ написан
  • Выполняются оба метода из двух разных форм. Как исправить?

    pickHabr
    @pickHabr
    Костыльных дел мастер
    попробуй поменять button type="submit" на button type="button" и повесить событие не на $('#form-import').submit а на $('#button-import').click

    перед этим можешь сразу проверить верстку на странице через инструменты разарботчика, что у тебя эти 2 формы действительно вписываются как 2 разные формы, а не херится верстка
    Ответ написан
    Комментировать
  • Laravel Request - как работает?

    pickHabr
    @pickHabr
    Костыльных дел мастер
    Потому что у тебя в request1 и в request2 лежит индекс одного и того же объекта https://www.php.net/manual/ru/language.oop5.refere...
    Ответ написан
    24 комментария
  • Почему не работает POST-запрос от React(+Redux) к PHP?

    pickHabr
    @pickHabr
    Костыльных дел мастер
    Undefined array key "perem" on line 49


    $perem = $data['perem'];
    - вот тут у тебя нет в массиве data (а это переданный массив POST) нужной переменной.

    Пропиши
    var_dump($data);
    exit;

    перед
    $perem = $data['perem'];
    например и посмотри что там в принципе лежит (если будешь дергать из браузера то надо смотреть в разделе network response)

    UPD
    Не обратил внимание сразу, с фронта уходит

    Content-type: application/json


    PHP не умеет обрабатывать такое через суперглобальную переменную $_POST
    Поменяй либо получение данных с

    addTableNote($conn, $_POST);

    на
    $data = json_decode(file_get_contents('php://input'), true);
    addTableNote($conn, $data);


    либо с фронта отправляй как FormData
    Ответ написан
    2 комментария