Задать вопрос
Пользователь пока ничего не рассказал о себе

Наибольший вклад в теги

Все теги (5)

Лучшие ответы пользователя

Все ответы (7)
  • Как сменить формат большому количеству файлов?

    @stavfz
    Открываем командную строку например написав в поиске меню пуск cmd
    переходим в нужную нам директорию с помощью команды
    cd C:\НАША_ПАПКА
    Нажимаем Enter
    если вы уверенны что находитесь там где нужно вводим следующую колманду
    rename *.bin *.exe
    ну и как бы всё
    Ответ написан
    1 комментарий
  • Как это превратить в один запрос?

    @stavfz
    Скажите а "select * from Products where product_id=$p_id and region=$key" Может вернуть больше одной записи за один проход?
    Не пойму просто логическую суть условия if ($smth->num_rows!=0)
    если задача найти именно дублирующиеся записи то по идеи должно быть if ($smth->num_rows>1) т.к. 1 строка это не дубликат. Получается что в Select как таковом отпадает всякая нужна просто update и всё (есть что обновить обновит нету нет) и если в самой таблице настроить уникальность по двум полям то можно следом и insert делать, он все равно не задвоит данные.

    по вашему примеру получается что update можно делать и если больше одной записи в базе соответсвует выборке ваше условие !=0 предполагает что нужно обновить все записи которые соответсвуют выборке сколько бы их в базе не было
    Есть ещё такая штука как replace, работает также как инсерт если в базе найдется запись которая совпадет по значению первичных ключей (если product_id и region у вас являются таковыми) со вставляемой строкой то произойдет Update
    Опять возвращаемся к тому что сложно посоветовать что то конкретное не видя структуру таблицы её ключей и индексов
    Вполне вероятно что в вашем случае просто вместо конструкций из if можно написать:
    $sql = "REPLACE INTO Products (product_id, region, prices_purchase, prices_selling, prices_discount)
            VALUES ('$p_id', '$key', '$p_purchase', '$p_selling', '$p_discount')";


    p.s.
    то что пишу ниже это офтоп но не совсем, вы спрашивали "Можете посоветовать что можно изменить в коде"
    Могу.
    Строить запросы так как это делаете Вы неправильно с точки зрения безопасности, правильно было бы сделать так:
    для INSERT
    $sql = "INSERT INTO Products
    SET
    product_id= :product_id, 
    region= :region, 
    prices_purchase= :prices_purchase, 
    prices_selling= :prices_selling, 
    prices_discount= :prices_discount
    ";
    // подготовка запроса
    $stmt = $this->bd_connect->prepare($sql);
    
    // привязываем значения
    $stmt->bindParam(':product_id',$p_id);
    $stmt->bindParam(':region',$key);
    $stmt->bindParam(':prices_purchase',$p_purchase);
    $stmt->bindParam(':prices_selling',$p_selling);
    $stmt->bindParam(':prices_discount',$p_discount);
    
    //Выполняем запрос
    $stmt->execute()


    Для SELECT
    $sql = "SELECT * FROM Products 
    WHERE product_id= :p_id AND region= :key";
    
    // подготовка запроса
    $stmt = $this->bd_connect->prepare($sql);
    
    // привязываем значения
    $stmt->bindParam(':p_id',$p_id);
    $stmt->bindParam(':key',$key);
    
    // выполняем запрос
    $stmt->execute();
     
     // получаем количество строк
    $num = $stmt->rowCount();
    
    // одним из распространенных вариантов получаем значения (смотри php PDO)
    $row = $stmt->fetch(PDO::FETCH_ASSOC);


    Перед привязкой значений можно а часто даже нужно дополнительно обработать ( слеши там всякие и т.п. :) ), то, что собираешься биндить
    Ответ написан
    5 комментариев
  • Как отработать форму при нажатии на Enter?

    @stavfz
    Отправил тебе pull request исправил три строчки
    в app.js
    217 и 224
    217 const sendMessage = document.querySelector(".chat__input"); //так будем отслеживать события всей формы а не только кнопки
    224 sendMessage.addEventListener("submit", (function(e) { // Обрабатываем события формы submit оно наступает в частности при нажатии на enter если курсор стоит в одном из  input-ов формы


    и в фалйе index.html
    Меняем тип кнопки на submit чтобы при нажатии на неё генерировалось событие отправки которое обработается в app как и раньше обрабатывался клик по этой кнопке
    39 <button type="submit" class="send-message"><img class="send-icon" src="img/send.svg" alt="icon send message"></button>

    app.min.js тоже перегенирировал с учетом внесённых изменений.
    Ответ написан
    2 комментария