Задать вопрос
  • Как подстраивать размер канваса под размер страницы?

    @Collapse444
    document.body.style.overflow = "hidden";
    const canvas = document.querySelector("canvas");
    let canResize = true;
    window.addEventListener("resize", function() {
        if (canResize) {
            canvas.width = window.innerWidth;
            canvas.height = window.innerHeight;
            render();
            canResize = false;
            setTimeout(() => canResize = true, 500);
        }
    });
    Ответ написан
    Комментировать
  • Как сделать логику post запроса покупки товара, если 1 товара не хватает - отменить покупку?

    @Collapse444
    function queryPOST() {
       const count = {};
       arrkor.forEach(element => {
       count[element] = (count[element] || 0) + 1;
       });
    
        console.log(count);
        // выдает допустим { '2':1 '5':4 } ключ id товара, второе значение кол-во.
        let keys = Object.keys(count);
        let isError = false;
    
        // проверили весь ли товар имеется на складе для покупки. 1 цикл
        keys.forEach((key, index) => { 
        connect.query("SELECT * FROM tovar WHERE idt=?", [key], (err, row, fields) => {
        let ostatok = row[0].count-count[key];
        console.log(index+' остаток: '+ostatok);
        if(ostatok<0){
            response.send("Недостаточное кол-во товара. <a href='/'>Назад</a>");
            isError = true;
        } 
    
        });
        });
    
        if (isError) return;
    
        // отправляем весь купленный товар в бд и завершаем удачную покупку. 2 цикл
        for (let key in count) {
        connect.query("SELECT * FROM tovar WHERE idt=?", [key], (err, row, fields) => {
    
        let count2 = count[key];
        let ostatok = row[0].count-count[key];
        let nam = row[0].namet;
        let cen = row[0].cenat;
        let tovarimg = row[0].fotot;
        let arrkor2 = tovarimg.split(',');
    
        // Транзакция
        connect.query("BEGIN Transaction");
    
        connect.query("UPDATE tovar SET count=? WHERE idt=?", [ostatok, key]);
    
        connect.query("INSERT INTO money (idm,namem,avatarm,adressm,telm,tidm,timgm,tnamem,tcenam,tcountm,ostatok,datanow,timem) VALUES (?,?,?,?,?,?,?,?,?,?,?,NOW(),?)", [polzid, nameuser, nameavatar, adress, tel, key, arrkor2[0], nam, cen, count2, ostatok, timem]);
        connect.query("COMMIT");
    
        response.send("Вы успешно совершили покупку. С вами свяжутся в ближайшее время. <a href='/'>Назад</a>");
    
        });
    
        }
    }
    
    queryPOST();
    Ответ написан
    Комментировать