Ответы пользователя по тегу PHP
  • Как принять данные от JQuery.ajax на сервере php?

    ThunderCat
    @ThunderCat Куратор тега PHP
    {PHP, MySql, HTML, JS, CSS} developer
    На сервере пытаюсь принять так:
    Нет, ищите в $_POST

    header: 'Content-Type: application/json', а это лишнее.

    А вообще нужно уметь открыть инструменты хорма и посмотреть в нетворке что и как отправляется.

    Ну или если хочется отправить в боди, то сделать
    $.ajax({
        contentType: 'application/json',
        dataType: 'json',
        data: JSON.stringify({ some valid JSON})
    ...
    Ответ написан
  • Почему запрос возвращает пустоту?

    ThunderCat
    @ThunderCat Куратор тега PHP
    {PHP, MySql, HTML, JS, CSS} developer
    выводите свой запрос в строчку:
    $sql .= " LIMIT " . (int)$data['start'] . "," . (int)$data['limit'];
    var_dump($sql); exit;
    $query = $this->db->query($sql);
    Идете в пхпмайадмин или консоль мускуля, вставляете и выполняете. Хотя для начала убедитесь что все вставленные значения хоть как-то похожи на правду.
    Смотрите что наотвечал вам сервер, если ответ вернул нифига - смотрите глазками что может быть не так с условиями в запросе, например какие из предоставленных данных точно отсутствуют в бд, или какие условия в энд противоречат друг другу... В конце концов начинайте удалять условия по одному, чтобы определить какое условие портит всю малину, затем думайте почему, есть ли данные удовлетворяющие этому условию в полученных результатах...
    Ответ написан
    Комментировать
  • Как внутри массива найти значения с разделителем и разбить эти строки?

    ThunderCat
    @ThunderCat Куратор тега PHP
    {PHP, MySql, HTML, JS, CSS} developer
    В цикле делать explode по разделителю, если полученный массив имеет длину более 1 - вложенный цикл, перебираете полученный массив, если длина = 1 то просто берете само значение.
    Ответ написан
  • Как на php окрашивать прямоугольник при наведении на него курсора?

    ThunderCat
    @ThunderCat Куратор тега PHP
    {PHP, MySql, HTML, JS, CSS} developer
    Если речь идет про хтмл, то никак, пхп серверный язык, и может реагировать только на запросы к серверу, изменение хтмл - работа для яваскрипта.
    Ответ написан
    1 комментарий
  • Как грамотно сделать поиск по фильтрам и где хранить характеристики?

    ThunderCat
    @ThunderCat Куратор тега PHP
    {PHP, MySql, HTML, JS, CSS} developer
    Для неоднородных сущностей с произвольными наборами свойств обычно используют EAV таблицы, что позволяет создать любой набор свойств для любого экземпляра сущности (например уникальные свойства для каждого товара).

    Минус - для поиска нужно строить достаточно объемные запросы, не помещающиеся в обычную логику по типу "селект вэа..." и требующие некоторого конструктора запросов. Так же, в большинстве случаев скорость запросов будет падать с ростом используемых атрибутов, но тут как раз нужно будет использовать фасетный поиск, то есть для группы товаров можно резко ограничить выборку через признак группы атрибутов, свойственные только этой группе, что сужает выборку и ускоряет поиск по тарибутам.
    Ответ написан
    2 комментария
  • Что не так в моем методе утаения товаров из корзины?

    ThunderCat
    @ThunderCat Куратор тега PHP
    {PHP, MySql, HTML, JS, CSS} developer
    Начнем с того что роуты так не пишутся. А хелпер роута работает не так как у вас предполагается.
    //router 
    ...
    Route::post('/add/{productId}', [CartController::class, 'addToCart'])->name('add.product.toCart');
    Route::delete('/remove/{productId}', [CartController::class, 'remove'])->name('product.remove');
    ...
    
    //Controller
    public function remove($productId)
    {
    /* это вообще в мидлваре должно происходить, тут ему делать нечего, впишите роут в ауч группу...
        if (!Auth::check()) {
            return redirect()->route('login');
        }
    */
        $cart = Session::get('cart');
        if (array_key_exists($productId, $cart)) {
            unset($cart[$productId]);
            Session::put('cart', $cart);
        }
        return redirect()->route('cart.index');
    }
    ...
    //HTML
    <form action="{{ route('product.remove', ['productId'=>$productId]) }}" method="post">
    // читать как работает хелпер route, посмотреть какой урл он выдает у вас сейчас, плакать, править...


    на первом просто редиректит,
    Во первых - редирект куда? Во вторых, стоит заглянуть в сгенерированный хтмл и посмотреть какой там реальный урл формы. Так же при отправке посмотреть нетворк и посмотреть что и куда реально отправляется и с какими данными.
    Ответ написан
  • Как подсчитать и вывести количество совпадений значения в строке при запросе в MySQL?

    ThunderCat
    @ThunderCat Куратор тега PHP
    {PHP, MySql, HTML, JS, CSS} developer
    group by + count()
    или
    count(distinct())
    Ответ написан
  • Почему постраничный вывод данных из бд не работает?

    ThunderCat
    @ThunderCat Куратор тега PHP
    {PHP, MySql, HTML, JS, CSS} developer
    $count_m = "82;Тут очевидно синтаксическая ошибка сразу. Молчу про то, что числа намеренно передаются строками...

    if($this->page==1) {
    	$page = 1;
    }
    else {
    	$page = (int) $this->page;
    }
    Это что за магия? Что оно вообще делает? Что будет если единица ВНЕЗАПНО попадет в блок else??

    $start = ceil($count_m/$m_per_page);А теперь подумайте, как должна называться переменная, считающая общее количество страниц.

    суть в том, что когда формируется limit 72, 24, т.е 3 страница,
    Стоит пройти курс арифметики за 2 класс, и посчитать что 3 страница будет limit 48, 24.
    limit 24, 24 - вторая и limit 0, 24 - первая.
    Ответ написан
    1 комментарий
  • Проблемы с mail в php. Что я делаю не так?

    ThunderCat
    @ThunderCat Куратор тега PHP
    {PHP, MySql, HTML, JS, CSS} developer
    var_dump($_POST);

    PS: Ладно, ждать подробностей долго, по этому кратко по основам.
    mail() будет работать в случае если у вас, помимо прочего, настроена отправка почты через smtp сервер, который либо у вас установлен локально (в чем есть сомнения), либо вы запускаете скрипт в среде уже настроенной (например у хостера с поддержкой отправки почты). В противном случае эта функция просто бесполезна. Так же, mail() возвращает true не в случае отправки почты, а в случае успешной постановки в очередь отправки, что саму отправку совершенно не гарантирует.
    Ответ написан
  • Странное поведение str_replace() при заменах в HTML?

    ThunderCat
    @ThunderCat Куратор тега PHP
    {PHP, MySql, HTML, JS, CSS} developer
    $html = str_replace(' /" ', '/" ' ,$html);Есть ненулевая вероятность попасть в какой-то текст, но в целом ей можно пренебречь.
    Ответ написан
    Комментировать
  • Как понять, почему падает PHP-FPM?

    ThunderCat
    @ThunderCat Куратор тега PHP
    {PHP, MySql, HTML, JS, CSS} developer
    А у вас случайно бэкап сервера не настроен? Настораживает динамика потребления оперативки, но чтение-запись прям тонко намекают на создание большого файла из кучи маленьких...
    Ответ написан
  • Почему в ответ добавляется тело запроса?

    ThunderCat
    @ThunderCat Куратор тега PHP
    {PHP, MySql, HTML, JS, CSS} developer
    Если читать возвращаемый ответ, видно что он отличается от отправленного важной частью - ошибкой, а конкретнее - ошибочными креденшлсами. Соответственно, скорее всего протухает токен. Предположу что время жизни токена не большое, а перезапуск сервера заставляет клиента получить новый токен принудительно. Что было бы очевидно, если сравнить ексепшн в AuthService.php и строку в ответе.
    Ответ написан
  • Как обойти sql запрос в циклах по группировкам?

    ThunderCat
    @ThunderCat Куратор тега PHP
    {PHP, MySql, HTML, JS, CSS} developer
    похоже вам нужен JSON_ARRAYAGG()
    Ответ написан
  • Как оформить данный CURL запрос на PHP?

    ThunderCat
    @ThunderCat Куратор тега PHP
    {PHP, MySql, HTML, JS, CSS} developer
    Комментировать
  • Корректно ли составлен запрос?

    ThunderCat
    @ThunderCat Куратор тега PHP
    {PHP, MySql, HTML, JS, CSS} developer
    Мне необходимо только узнать есть ли такой заказчик с такими данными.

    1) Оформляйте запрос строками, так будет гораздо проще и вам, и другим разработчикам понять что вы пишете и как оно работает:
    SELECT * 
    FROM `orders2022` 
    WHERE LOWER(`surname`) LIKE CONCAT('%', ?, '%') 
    AND LOWER(`name`) LIKE CONCAT('%', ?, '%') 
    AND LOWER(`fathername`) LIKE CONCAT('%', ?, '%')

    2) Синтаксис верный, но если вам важно найти "хоть одно совпадение", лучше использовать LIMIT 1, это остановит базу в поиске всех вхождений, то есть перебора ВСЕЙ таблицы вместо выхода по первому вхождению. Кроме того, CONCAT('%', ?, '%') можно использовать если вместо ? будет SQL выражение (например каой-то селект), в данном случае это просто трата ресурса процессора. Просто добавьте % в начале и конце подставляемой переменной.
    3) Неплохо давать более четкое описание проблемы, чтобы другим не пришлось гадать о чем код, так как никто кроме вас в контекст задачи не погружен.
    Ответ написан
    Комментировать
  • Как правильно сделать отправку с проверкой условий?

    ThunderCat
    @ThunderCat Куратор тега PHP
    {PHP, MySql, HTML, JS, CSS} developer
    Код ничего не делает, чего вы от него ждете? Либо форму добавьте, либо какой-то код, отправляющий чекбоксы на бэкенд аяксом, например...
    Ответ написан
    Комментировать
  • Как вывести нужную запись по id из бд?

    ThunderCat
    @ThunderCat Куратор тега PHP
    {PHP, MySql, HTML, JS, CSS} developer
    <!--ССЫЛКА ПЕРЕХОДА НА ЭТОТ ФАЙЛ -->
    <a href="?content=single_city.php&city=<?=$myrow["id"];?>">
    где тут ссылка на файл? у вас ссылка на текущую страницу, в ваше случае - корень сайта/проекта (читай index.php), куда передаются GET параметры. Ничего удивительного что выводится та же страница.
    Ответ написан
  • Если ли PHP-библиотека для конвертации HTML c CSS Grid в PDF?

    ThunderCat
    @ThunderCat Куратор тега PHP
    {PHP, MySql, HTML, JS, CSS} developer
    Принципиально у этой проблемы всего 2 варианта решения:
    1) как уже написали - хедлесс хром на бэкенде - максимально красиво и точно, единственный минус - собсно сам софт, который кроме того что сам по себе жрет проц и память, так еще и не везде есть возможность поставить свой софт на сервер.
    2) Рендер на клиенте через html2pdf, который тоже неплохо справляется, но естественно тоже не без проблем. Во первых - готовый пдф будет не в виде документа с текстом и прочими плюшками, а тупо картинкой. Во вторых - все минусы решений на клиенте в ассортименте: нестандартные шрифты, настройки под "улучшайзинг" визуала по типу изменения масштаба странички, увеличение/уменьшение шрифтов и прочие мелкие радости жизни...

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

    ThunderCat
    @ThunderCat Куратор тега PHP
    {PHP, MySql, HTML, JS, CSS} developer
    Вопросы такие: какие есть способы ускорить загрузку страницы?
    Во первых - выяснить что тормозит: бэкенд или фронтенд. Сделать профайлинг бэкенда, сделать анализ загрузки фронта. Соответственно сначала понять что тормозит.

    Можно ли её рендерить на клиенте при помощи js?
    Можно, но скорее всего прироста вы особо не получите. Если проблема на бэкенде - метод рендера будет абсолютно по барабану. Если на форнте - скорее всего будет медленнее, так как вы сначала получите все данные, а потом еще будете средствами языка (а не движка браузера, который очевидно быстрее) отрисовывать хтмл.

    И почему на смартфоне в мобильном safari та же самая страница грузится за пару секунд?
    Опять же, вопрос скорее к вам чем к кому-либо еще. Возможно кеширование, которое на мобильных браузерах практически всегда более агрессивное. Возможно вы просто не видите как тормозит загрузка, например в силу другого метода рендеринга, который сразу при получении данных выводит все что возможно, в то время как на стационаре рендеринг идет только после загрузки тега целиком. Достаточно например быстро промотать на сафари вниз при загрузке, чтобы увидеть что загрузилось далеко не все... А возможно в мобильной версии отображается сильно меньше элементов...

    Можно ли этот эффект повторить на десктопе?
    Если есть что повторять... Можно попробовать сделать таблицу не цельной, а разбить на несколько таблиц, по 100-300 строк. Или еще адкеватнее - сверстать дивами.

    Как вариант - лэзилоад, по мере прокруки страницы подгружать новые данные по мере необходимости, что сильно снизит как трафик в целом, так и тормоза рендера.

    PS:
    я тоже склоняюсь к неэффективной вёрстке. Если я эту вёрстку буду генерировать js’ом, процесс ускорится?
    Скорее всего, как я уже написал, скорости не прибавится. Вообще что мешает проверить эффективность верстки? Тупо выведите все строки дивами, без всяких разделителей, одна строка - один див с данными, разделенными "|" например, и посмотрите на разницу.
    Ответ написан
    Комментировать
  • Как мне настроить .htaccess?

    ThunderCat
    @ThunderCat Куратор тега PHP
    {PHP, MySql, HTML, JS, CSS} developer
    добавить файлы статики в исключения. Хотя по идее у вас и так перенаправляться будут только отсутствующие файлы и папки...
    RewriteCond %{REQUEST_URI} !\.(css|jpg|gif|png|zip|rar|doc|xls|js|tif|tiff|docx|xlsx|ico)$
    RewriteRule ^(.*)$ index.php [L,QSA]
    Ответ написан
    3 комментария