Задать вопрос
  • Как выяснить и устранить причину пропадания кнопки при изменении ширины экрана?

    quasko
    @quasko
    Добрый день!
    Кнопка "обратная связь" на скрине это элемент
    <div class="navMobile-body-nonres js-openMobileForm" style="cursor: pointer;">ОБРАТНАЯ СВЯЗЬ</div>

    Он находится в родительском блоке
    <div class="navMobile js-navMobile open" style="height: 770px;">

    который отображается только на экране до 800px
    @media screen and (max-width: 800px)
    .navMobile {
        display: block;
    }


    А когда "кнопка пропала", это уже отображается другой блок html, в котором находится только кнопка "пожертвовать"
    5b3f1c8ed9be5361605579.png
    Который на экране до 800px скрыт
    @media screen and (max-width: 800px)
    .navWrap {
        display: none;
    }


    В итоге можно в последний блок добавить недостающую кнопку как вариант
    Ответ написан
    4 комментария
  • Как выяснить и устранить причину пропадания кнопки при изменении ширины экрана?

    azerphoenix
    @azerphoenix
    Java Software Engineer
    Здравствуйте. Найдите ширину экрана при которой кнопка видна. Обычно стили заданы в файле style.css и если они видны при определенной ширине, то значит добавлен в виде медиа запросов.
    В консоли браузера ищите что-то media ....
    Например, media (min-width:768px) AND (max-width:1024px) {} и т.д. соответственно минимальная и максимальная ширина будет указывать на то, при каком разрешении отображать этот элемент. А на ver... можете не обращать внимания. Сам файл стилей лежит в папке с темой.
    Ответ написан
    4 комментария
  • Как выяснить и устранить причину пропадания кнопки при изменении ширины экрана?

    @boga-net
    Если пропадает или появляется при определённый ширине, то значит ищите стили в media queries

    слева на скриншоте вы навели на элемент. У его родителя (navMobile-body-bottom) в атрибуте style задаётся display: block. Скорее всего через скрипт задаётся display: none

    И как сам файл со стилями найти
    кликните по style.css?ver=_b.... что справа.
    Ответ написан
    2 комментария
  • Как реализовать многострочное редактирование данных на PHP?

    @Arik
    Нужно из простых строк сделать массивы, допустим редактируете записи:
    <input name="data[$id]name"
    или
    <input name="name[$id]"
    $id - id записи в БД

    дальше смотрите что у вас в $_POST, обходите циклом, собираете SQL и отправляете запрос.

    ПС Обратите внимание на SQL injection и Cross-Site Scripting
    Ответ написан
    Комментировать
  • Как реализовать многострочное редактирование данных на PHP?

    kawabanga
    @kawabanga
    Вопрос обширный очень. Если кратко, то вот вам несколько пунктов подумать:
    1) если доступ нужен к каждой отдельной строчке интерактивный, то смотрите в сторону ajax запросов.
    2) структура, будь то ajax запросы, пусть просто целый POST, у input будет name="[{id_elemnt}] price" , и на post, вы можете как отдельный эдемент обрабатывать, так и несколько перебором.
    3) в tr добавьте аттрибут - data-id, чтобы проще ориентировать в строчках было.
    4) Максимальный размер POST запроса. изучите вопрос. так как мне раз 5 точно попадалась задача решать такую недоработку от разработчиков.
    Ответ написан
    Комментировать
  • Текущий уровень реализации - это как?

    @balamut108
    Py
    Андрей, добрый день. Данный термин носит общий характер, и говорит лишь о том, что, например, в проекте длительностью 12 месяцев на 1-2-3 месяц намечен важный (milestones) релиз и в процессе обсуждения этого самого релиза уместно употребить "текущий уровень реализации", т.е. сейчас это всё так ущербно, потому что мы только в начале пути и у нас есть ещё планы развивать эту функциональность.
    Ответ написан
    Комментировать
  • Текущий уровень реализации - это как?

    @redakoc
    Ничего не подразумевается.
    Это слишком общий термин.
    Как договоришься в каждом конкретном случае.
    Ответ написан
    Комментировать
  • Текущий уровень реализации - это как?

    Учитывая что вы недавно про парсер спрашивали - вам таким вопросом рано задаваться.
    Это:
    1) Что на данный момент сделано
    2) Как это сделано
    Ответ написан
    Комментировать
  • Как обработать данные input PHP?

    kimono
    @kimono
    Web developer
    Я знаю, что все делает просто через $_get и post Запрос

    Никак по-другому вы не отправите данные со страницы на сервер.
    Только используя ссылки или формы.
    Ваша задача решается на фронтенде:
    <input type="number" min="1" step="1">
    + на бэкенде:
    $num = $_GET['num'] ?? 0;
    if ($num <= 0) {
        return false;
    }
    Ответ написан
    3 комментария
  • Как быстрее/правильнее загружать данные?

    @AlexndrNovikov
    Solution Architect in Spiral Scout
    Пара кейсов, после которых идея "передать на фронт и фильтровать там" перестает казаться такой хорошей

    1) Прилетел массив на 10 000 элементов. Клиент зашел с Samsung galaxy S2 , попробовал загрузить/фильтрануть, посмотрел, как завис браузер, и ушел. Не забывайте, что не все пользователи сидят с десктопов как у разработчиков с 16-32Gb оперативы. Мобилка может поперхнуться банально из-за большого json-а

    2) Как только потребуется сделать паджинацию - фильтрация на фронте станет выдавать неожиданно некорректные данные

    Пинайте сервер-сайд, пусть разрабы или кэшируют, или расставят индексы в базе правильно, если у них SQL, или перейдут на подходящий поисковый движок с фасетным поиском

    Я верю, что можно сделать выдачу и фильтрацию чисто на фронте с любым количеством элементов, если команда состоит из сплошных ниндзя и рокстаров, но практика в 3 подобные ситуации показывает, что в итоге эту фильтрацию придется переписывать как минимум на гибридную (и поддерживать 2 решения, на фронте для малого количества записей, и на бэке для большого), либо полностью на сервер сайд, так как к сожалению команда никогда не состоит из идеальных разработчиков, чаще из обычных живых людей
    Ответ написан
    2 комментария
  • Зачем нужен Gulp?

    @artinnok
    бекенд-программист
    CSS и JS:
    К примеру, у вас имеется большое количество (Х штук) css или js файлов, которое вы подключаете на своих страницах посредством тэгов <link> и <src>.
    При загрузке страницы, браузер клиента будет отправлять X запросов к вашему серверу, а ваш сервер должен будет ответить на X запросов.
    Это:
    1. Тормозит загрузку страницы - будете ждать ответа от сервера
    2. Загружает ваш сервер

    С помощью сборщиков фронтэнда вы можете "склеить" все файлы в один - main.css и main.js, которые будут отдаваться 2 запросами с сервера. Также, вы сможете минифицировать CSS и JS. Под минификацией подразумевается уменьшение размеров файла на диске. Естественно, более легкий файлы будет быстрее прогружаться + минимальное количество запросов к серверу.

    IMG:
    К примеру, у вас имеется Х изображений размером 700 Кбайт. Клиенту надо будет загрузить 700 * X Кбайт. Если вы пропустите свои изображения через Gulp, то вы получите изображения с меньшим размером на диске и такого же качества, т.е. клиенту придется прогрузить примерно (500-600) * X Кбайт.
    Ответ написан
    1 комментарий
  • Как подключить файл js и не засветить его?

    OtshelnikFm
    @OtshelnikFm
    Обо мне расскажет yawncato.com
    js - это клиентская технология (node не считаем). Если что вам нужно незаметно - то только на бекенде: отправляете ajax - сервер в php отрабатывает - фигачит как надо и возвращает. В принципе так.

    А если все же надо на клиенте - обфусцируете js, и предварительно там творите ад - чтобы было кучи зависимостей, подвязок с сторонними скриптами - так вы усложните жизнь. Ну и еще можно как Авито сделать - при включенной консоле творить ад. Но это тоже обходится.
    Ответ написан
    Комментировать
  • Как подключить файл js и не засветить его?

    rockon404
    @rockon404
    Frontend Developer
    Что бы вы не подключали, на вкладке network это будет видно.
    Ответ написан
    Комментировать
  • Что не так с кодом Express?

    @shushus
    Если расширение hbs, то надо написать
    в конфигурации handlebars при создании указать
    extname: '.hbs' типа
    var handlebars = require('express-handlebars').create({extname: '.hbs'});

    а в назначении шаблонного движка:

    app.engine('hbs', handlebars.engine);
    app.set('view engine', 'hbs');
    Ответ написан
    2 комментария
  • Как выполнить миграцию базы данных в Laravel?

    @iljaGolubev
    в .env файле нужно указть параметры подключения:
    DB_HOST=localhost
    DB_DATABASE=laravel_todoapp
    DB_USERNAME=laravel_todoapp_username
    DB_PASSWORD=laravel_todoapp_username_password
    Ответ написан
    Комментировать
  • Как выполнить миграцию базы данных в Laravel?

    @EvgeniiR
    https://github.com/EvgeniiR
    Access denied for user 'root'@'localhost' (using password: YES)
    Ответ написан
    Комментировать
  • Как стащить книгу в оффлайн с Google books?

    I_CaR
    @I_CaR
    программист в прошлом.
    Мне лично понравилась "Google Books Downloader"
    Поле для ссылки + Одна кнопка и путь куда сохранить и всё!
    Ещё есть выбор формата.
    Просто, удобно, быстро!
    Ответ написан
    4 комментария
  • В чем суть роутера на php?

    onqu
    @onqu
    weasy
    1. Здесь пугают всякими контроллерами, ларавелями. Давайте жить проще. Для начала дадим определение модному слову роутер. Это маршрутизатор. Что делает маршрутизатор? Правильно. Обрабатывает маршруты, являясь связующим звеном. Маршрутом для web сайта принято считать метод запроса [GET, POST, PUT и другие] и компоненты URI.

    например: https://ru.wikipedia.org/wiki/URI?foo=bar#title
    [схема: https] :// [источник: ru.wikipedia.org] [путь: /wiki/URI] [запрос: ?foo=bar] [фрагмент: #title]


    Но для определения маршрута может браться любая другая информация передаваемая серверу, определение выше это лишь наиболее употребляемые параметры.

    Сама работа, как правило проста: от клиента приходит запрос, маршрутизатор перебирает все заданные ему пути до первого совпадения. При совпадении вызывается определенная вами функция, которая возвращает ответ клиенту.

    2. Он необходим, если в приложении одна точка входа, когда любой запрос приходит на один файл.

    3. Простой пример
    // файл index.php
    
    // Маршруты
    // [маршрут => функция которая будет вызвана]
    $routes = [
        // срабатывает при вызове корня или /index.php
        '/' => 'hello',
        // срабатывает при вызове /about или /index.php/about
        '/about' => 'about',
        // динамические страницы
        '/page' => 'page'
    ];
    
    // возвращает путь запроса
    // вырезает index.php из пути
    function getRequestPath() {
        $path = parse_url($_SERVER['REQUEST_URI'], PHP_URL_PATH);
    
        return '/' . ltrim(str_replace('index.php', '', $path), '/');
    }
    
    // наш роутер, в который передаются маршруты и запрашиваемый путь
    // возвращает функцию если маршшрут совпал с путем
    // иначе возвращает функцию notFound
    function getMethod(array $routes, $path) {
        // перебор всех маршрутов
        foreach ($routes as $route => $method) {
            // если маршрут сопадает с путем, возвращаем функцию
            if ($path === $route) {
                return $method;
            }
        }
    
        return 'notFound';
    }
    
    // функция для корня
    function hello() {
        return 'Hello, world!';
    }
    
    // функция для страницы "/about"
    function about() {
        return 'About us.';
    }
    
    // чуть более сложный пример
    // функция отобразит страницу только если
    // в запросе приходит id и этот id равен
    // 33 или 54
    // [/page?id=33]
    function page() {
    
        $pages = [
            33 => 'Сага о хомячках',
            54 => 'Мыши в тумане'
        ];
    
        if (isset($_GET['id']) && isset($pages[$_GET['id']])) {
            return $pages[$_GET['id']];
        }
    
        return notFound();
    }
    
    // метод, который отдает заголовок и содержание для маршрутов,
    // которые не существуют
    function notFound() {
        header("HTTP/1.0 404 Not Found");
    
        return 'Нет такой страницы';
    }
    
    
    // Роутер
    // получаем путь запроса
    $path = getRequestPath();
    // получаем функцию обработчик
    $method = getMethod($routes, $path);
    // отдаем данные клиенту
    echo $method();


    На практике используют более сложные маршрутизаторы, у которых гораздо большие возможности.

    4. Обойтись без него можно. Если каждая страница в вашем приложении будет являться отдельным файлом, который отвечает за отдачу информации.
    index.php
    about.php
    contact.php
    ...


    Это олдскульная структура, в новых проектах почти не применяется.
    Ответ написан
    13 комментариев
  • Как диагностировать ошибку установки Laravel?

    Austin_Powers
    @Austin_Powers
    Web developer (Symfony, Go, Vue.js)
    Судя по тому, что написано в доках по ссылке:
    CURLE_COULDNT_CONNECT (7)
    
    Failed to connect() to host or proxy.

    и тому, что через прокси сайт cabinet.laravel.com возвращает ответ, это все еще проделки РКН
    Ответ написан
    6 комментариев
  • Как создать правильный SQL-запрос с группировкой и условием?

    Rsa97
    @Rsa97
    Для правильного вопроса надо знать половину ответа
    Начиная с MySQL 5.7 используется строгий подход к GROUP BY. Все поля в запросе должны либо входить в список полей, по которым идёт группировка, либо быть в агрегатной функции.
    Варианты решения:
    - переписать запрос с учётом стандарта;
    - использовать агрегатную функцию ANY_VALUE(), явно указав, что вам всё равно, какое из значений в объединяемых строках использовать;
    - вернуть старый режим работы MySQL через системную переменную sql_mode.
    Ответ написан
    Комментировать