Задать вопрос
  • Как переписать скрипт, чтобы AJAX возвращал ответ на запрос в правильном порядке?

    AlexNest
    @AlexNest
    Работаю с Python/Django
    Собственно, непонятно зачем делать 4 отдельных запроса.
    В идеале - делайте один запрос на сервер (в текущем примере - на /cart/deleteOneAjax/<id>). А сервер сам должен обработать все необходимые изменения и вернуть новый вариант корзины.
    Ответ написан
    Комментировать
  • Почему base64 увеличивает длину строки?

    SagePtr
    @SagePtr
    Еда - это святое
    Потому что вы закодировали текстовое представление этой последовательности, которое занимает в 2 раза больше байт, чем сама исходная последовательность.
    Если закодировать саму 12-байтную последовательность в base64, получится YoVpJUGj0kcVXHXf (16 символов).
    Ответ написан
    Комментировать
  • Как лучше проверять строку на пустоту в php?

    sergiks
    @sergiks Куратор тега PHP
    ♬♬
    Недостатки исходных вариантов проверки:
    $str = "0";  // непустая строка, содержащая цифру ноль
    if (!$str) echo "bool false\n"; // сработает
    if (empty($str)) echo "is empty\n"; // сработает
    
    $str = null; // не строка
    if ($str == "") echo "equals empty str\n"; // сработает
    if (strlen($str) === 0) echo "zero length str\n"; // сработает


    Поэтому лучший вариант, как и предложил Rsa97, проверять строгое равенство === с пустой строкой.
    Ответ написан
    Комментировать
  • Почему у меня не получается учиться, даже когда я все делаю все в точности как в видеоуроках?

    QuiShimo
    @QuiShimo
    Держу путь на бекэнд :)
    Привет!

    В этом весь процесс обучения по курсам или самостоятельно. Ты смотришь ролик, повторяешь, попадается проблема идешь в гугл искать её решение.

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

    Идеально - это найти сообщество, где помогут найти решение проблемы, которое не удалось нагуглить. Либо использовать для этого такие ресурсы, как этот. Чтобы оптимизировать процесс обучение и решения проблем.

    А также, разбавить обучение различными источниками - книгами, статьями и так далее, особенно с актуальной информацией.

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

    gbg
    @gbg
    Любые ответы на любые вопросы
    Потому что обучение, которое состоит в тупом повторении за учителем - это самый примитивный уровень освоения знаний.

    IT же - это в основном как раз навыки решения проблем и поиска информации (1 час пишем код, 12 часов отлаживаем), которые являются вольными творческими процессами - их надо проделывать самостоятельно, собирая факты по кусочкам.
    Ответ написан
    Комментировать
  • Кто знает самый быстрый шаблон сайта?

    ThunderCat
    @ThunderCat Куратор тега HTML
    {PHP, MySql, HTML, JS, CSS} developer
    Дарю:
    <html>
    <head></head>
    <body>Hello world!</body>
    </html>
    gps близкий к 100 на любом устройстве
    Ответ написан
    3 комментария
  • Не получается float при явном преобразовании textContent. Что не так?

    alexey-m-ukolov
    @alexey-m-ukolov Куратор тега JavaScript
    Number.prototype.toFixed()
    Возвращаемое значение
    Строка, представляющая numObj, не использующая экспоненциальную запись и содержащая ровно digits цифр после десятичной запятой.

    https://developer.mozilla.org/ru/docs/Web/JavaScri...
    Ответ написан
    1 комментарий
  • Какова реальная предельная длина сегмента сети на базе витой пары?

    martin74ua
    @martin74ua Куратор тега Компьютерные сети
    Linux administrator
    откройте учебник и почитайте как работает ethernet. Как именно передается пакет, что такое преамбула и т.д. И многое станет понятно.
    Ответ написан
    5 комментариев
  • Как защитить WiFi пароль?

    SignFinder
    @SignFinder
    Wintel\Unix Engineer\DevOps
    В организации не нужно использовать пароль, а нужно использовать авторизацию, привязанную к логину и паролю пользователя, например через Radius.
    Ответ написан
    8 комментариев
  • Как переписать подключение к базе данных, по принципам ООП?

    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 комментариев
  • Не отправляются данные веденные из input в бд (Mysql, PHP)?

    FanatPHP
    @FanatPHP
    Чебуратор тега РНР
    И не будет никакой ошибки, потому что код взят из какого-то древнего руководства, написанного обезьяной.
    Меня вот поражает, ну ОТКУДА вы вы выкапываете это дерьмо мамонта? На каком ютуб канале, какой гамадрил вот это вот всё вещает?

    - print "Ошибка!: " . $e->getMessage() писал дебил, потому что специально выводить ошибки не нужно - РНР и так выведет ошибку, если его об этом попросить.
    - try {} catch (PDOException $e) { писал дважды дебил, потому что ПДО будет кидать исключения только если ему об этом сказать при соединении. А дебил об этом не сказал
    - try {} catch (PDOException $e) { писал трижды дебил, потому что см. выше. Не нужно ловить ошибку, чтобы её вывести.
    - VALUES ('{$name}', '{$surname}', '{$age}', '{$email}', '{$phone}', '{$index}'"); - а вот это уже, я думаю, не руководство, а самодеятельность автора кода. Даже в дебильном руководстве такое вряд ли можно увидеть.
    - enter' => $submit - это уже тоже автор кода, от излишнего усердия и ПОЛНОГО не понимания своих действий
    - ну и да, почему-то в списке полей id_user есть, а в VALUES внезапно нету. "Где логика, где разум?" (с)

    В общем учимся работать с БД в РНР заново
    .
    // Параметры для подключения
    $db_host = "localhost";
    $db_user = "root"; // Логин БД
    $db_password = "root"; // Пароль БД
    $db_base = 'test'; // Имя БД
    $db_encoding = "utf8mb4" // кодировка 
    
    // Подключение к базе данных
    $db = new PDO("mysql:host=$db_host;dbname=$db_base;charset=$db_encoding", $db_user, $db_password);
    // Просим ПДО сообщать об ошибках
    $db->setAttribute( PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION );
    
    // Собираем данные для запроса
    $data = array( 'name' => $name, 'surname' => $surname, 'age' => $age, 'email' => $email, 'phone' => $phone, 'index' => $index);
    // Подготавливаем SQL-запрос
    $query = $db->prepare("INSERT INTO `users`(`user_name`, `user_surname`, `user_age`, `user_email`, `user_phone`, `user_index`) 
                         VALUES (:name, :surname, :age, :email, :phone, :index)");
    // Выполняем запрос с данными
    $query->execute($data);


    Хотя бы так
    Ответ написан
    6 комментариев
  • Почему выдает ошибку 1442?

    @Akina
    Сетевой и системный админ, SQL-программист.
    CREATE DEFINER=root@localhost
    TRIGGER bi_trigger_in_employees
    BEFORE INSERT ON employees 
    FOR EACH ROW 
    SET NEW.entpr_name = COALESCE( NEW.entpr_name, 
                                   ( SELECT ap_name 
                                     FROM companies 
                                     WHERE id = NEW.entpr_id 
                                     LIMIT 1
                                    )
                                  ),
        NEW.employee_name = COALESCE( NEW.employee_name, 
                                      ( SELECT CONCAT_WS(' ',np_surname,np_name,np_patronymic) 
                                        FROM people 
                                        WHERE id = NEW.employee_id
                                        LIMIT 1
                                       )
                                     );

    1) Суть ошибки - именно та, что написана в сообщении. Нельзя UPDATE таблицы, на которой определён триггер (и другие DML - тоже нельзя).
    2) Изменять вставляемые значения надо до вставки, а не после. Потому BEFORE триггер.
    3) По-хорошему, нужен ещё аналогичный BEFORE UPDATE триггер.
    4) Все SET выполняются в одном операторе (см. https://dev.mysql.com/doc/refman/8.0/en/set-variab...). А триггер из одного оператора обходится и без BEGIN-END, и без DELIMITER.
    5) При скалярном присвоении из подзапроса ВСЕГДА добавляйте LIMIT 1. А по-хорошему ещё и ORDER BY. На показанный код ни то, ни другое не влияет - всё равно одна запись, ибо отбор по PK. Но вдруг структура поменяется, а про триггер забудете? Начнутся ошибки - оно надо?

    тогда да, ошибка на бесконечный цикл. Но тут почему?

    Как это ни странно, но в теле триггера неизвестно, на какое событие определён триггер.
    Ответ написан
    1 комментарий
  • Как обойти cors?

    @firecorer
    Совсем недавно занимался решением такой проблемы. Всего лишь нужно отдать необходимые HTTP заголовки клиенту.
    Пример на php:
    header('Access-Control-Allow-Origin: *');
    header('Access-Control-Allow-Methods: GET, POST, PUT, DELETE');
    header('Access-Control-Allow-Credentials: true');
    header('Access-Control-Allow-Headers: Authorization, Origin, X-Requested-With, Accept, X-PINGOTHER, Content-Type');
    Ответ написан
    2 комментария
  • Допустимо ли создавать массивы в php без части элементов?

    Immortal_pony
    @Immortal_pony Куратор тега PHP
    В php ключи массива могут быть любыми.
    Можете сразу создавать с нужными ключами
    $myArray = [
        1 => $array2
    ];
    Ответ написан
  • На всех хостингах по умолчанию работает mail?

    DevMan
    @DevMan
    функция mail работает у многих. но проблема в том, что ей мало куда можно отправить почту.

    курите тему PHP + SMTP. например, mailer или phpmailer
    Ответ написан
    Комментировать
  • Как удалить вредоносный код с большого количества файлов?

    Immortal_pony
    @Immortal_pony
    rm -rf /var/www/mysite.com/*
    cd /var/www/mysite.com
    git clone {myrepourl} .
    cp .env.example .env
    nano .env
    composer install
    Ответ написан
    6 комментариев
  • Возможно ли как-то оптимизировать json_decode?

    FanatPHP
    @FanatPHP
    Чебуратор тега РНР
    Нет, "оптимизировать json_decode" нельзя.

    Но вот избавиться от идиотского алгоритма, который чтобы достать одну запись декодит их все по очереди - можно и нужно.
    И никакой детский лепет про "ой заранее распарсить ну никак нельзя, сайт крутится на мамином утюге" здесь не помеха.

    Распарсить, положить в базу, при изменении данных менять их в базе, искать по-человечески, через SQL.
    А редис тут вообще никаким боком не упёрся.
    Ответ написан
    8 комментариев
  • Как повесить событие input только на type="text"?

    Alex_mos
    @Alex_mos
    Google всему голова
    Получаете инпуты по input[type="text"]
    Ответ написан
    Комментировать
  • Как писать условие if если очень много значений для проверки, а нужно чтобы они за экран не залезали, не превращались в очень длинную строку?

    ipatiev
    @ipatiev Куратор тега PHP
    Потомок старинного рода Ипатьевых-Колотитьевых
    Это очень хороший вопрос!

    Для длинных условий можно и нужно использовать такую замечательную практику, как именованные условия!
    В большинстве случаев, когда условия не зависят друг от друга, можно просто присвоить результат вычисления условия переменной с обязательно говорящим именем, и дальше уже использовать эти переменные:

    $dateIsValid = $obj->getDate() >= getCurrentDate();
    $balanceOk = $obj->getBalance() > 0;
    // Любые другие условия
    if ($dateIsValid && $balanceOK) ...


    Это повышает читабельность не только сокращая само тело условного оператора, но в первую очередь превращая его в связный текст!

    Если же условия зависят друг от друга, то можно оформлять их в виде функций (методов). И тогда они не будут выполнены, если до них не дойдет очередь.
    Ответ написан
  • Как сделать многостраничный сайт без PHP/python/React?

    @alekcena
    Нелинейный наставник
    Эм.
    Ну да ) Каждая страничка HTML - Это 1 страничка.
    Многостраничный сайт - это (N>1)
    В чём вопрос?
    Ответ написан
    5 комментариев