Показать сообщение отдельно
  #1 (permalink)  
Старый 23.06.2022, 05:07
Аспирант
Отправить личное сообщение для Jimy Посмотреть профиль Найти все сообщения от Jimy
 
Регистрация: 21.03.2019
Сообщений: 64

Вопрос по форме редактирования товара
Добрый день! Пытаюсь сделать форму для редактирования товара. Три таблицы - товары, категории, единицы измерения.
Товары (Good):
id;
title - наименование:
id_unit - ключ ед.изм;
id_category - ключ категории;

Категории (Category):
id;
title - наименование категории;
image - путь к картинке;

Ед.изм. (Unit):
id;
title - наименование;
Вот делаю запросы:
//Получение записи для редактирования

router.get("/edit/:id", (req, res) => {
  const sqlCat=("SELECT * FROM Category ORDER BY title")
  const sqlUnit=("SELECT * FROM Unit ORDER BY title")
  const id = req.params.id;
  const sqlGood = "SELECT * FROM Good WHERE id = ?";
  db.all(sqlUnit, [], (err, rows) => {
    if (err) {
      return console.error(err.message);
    }
    Izm=rows;
     });
db.all(sqlCat, [], (err, rows) => {
    if (err) {
      return console.error(err.message);
    }
    Cat=rows;
     }); 
db.get(sqlGood, id, (err, row) => {
        res.render("spr_good/updateGood", { good: row, cat : Cat, izm:Izm  });
    });
  });


...и вывожу страницу для редактирования записи:
<%- include("../baseHeader") -%>
<div class="col-md-10  shadow ">
    <div class="row">
    <div class="col-12 text-center menu-text"><h4 class="mb-3">Номенклатура</h4></div>
    <div class="col-1"></div>
    <div class="col-10">
      
        <form action="/good/edit/<%=good.id %>" method="post" >
    
            <legend class="legend">Редактирование</legend>
    <input autofocus class="form-control mb-2" name="Good" value="<%= good.title %>" required/>
    <p>
      <legend class="legend">Единица измерения</legend>
      <select id="izm" name="Izm" class="form-control">
          <% for (const item of Izm) { %>
              <option value='<%= item.id %>'> <%= item.title %></option>
          <% } %>    
      </select>     
         
     
    
       <legend class="legend">Категория</legend>
          <select id="Cat" name="Cat" class="form-control">
              <% for (const item of Cat) { %>
                  <option value='<%= item.id %>'> <%= item.title %></option>
              <% } %>    
          </select>
    
      </p>
      
      
  
    <div class="text-right">
    <button type="submit" class="btn btn-warning  btn-sm">Изменить</button>
    <a class="btn btn-secondary btn-sm " href="/good">Отмена</a>
    </div>

    </form>
    </div>
    <div class="col-1"></div>
  </div>
  </div>

<%- include("../_footer") -%>

Все выводится, в первое поле встает нужное наименование, но как вывести единицу измерения и категорию в раскрывающиеся списки. Чтобы в списке сразу отображалась единица и категория выбранного товара, а в данный момент там первые строчки из соответствующих таблиц... И еще, как можно оптимизировать запрос - сейчас там у меня три запроса идут... Прощу не пинать - новичок
База данных - SQLITE
Ответить с цитированием